LINUX.ORG.RU

calc.py v0.1


0

0

Вот, наваял неспешно за 2 часа. Калькулятор для коммандной строки, выражения задаются с помощью s-expressions.  Умеет пока что только 4 основных арифметических действия.

Пример использования:
$ ./calc.py '(+ 4 (- 15 (* 3 2) (/ 3 3)) 2 (+ 1 0))'
15.0

Сама программа: 
http://ifolder.ru/332829

Хочу быть обруган за неумение писать (с аргументацией и указанием "как правильно") и отправлен фсад :)
★★★

на С надо было писать.

xnix ★★
()

нужно нормальное сообщение об ошибке а не эту белеберду.

python calc.py '(/ 3 0)'
Traceback (most recent call last):
  File "calc.py", line 130, in ?
    sys.exit(main())
  File "calc.py", line 122, in main
    result = sexpr(sys.argv[1])
  File "calc.py", line 114, in sexpr
    return div(args)
  File "calc.py", line 61, in div
    result /= float(args[i])
ZeroDivisionError: float division

xnix ★★
()
Ответ на: комментарий от xnix

нужно, чтобы генерировал машинный код и его исполнял, с выводом ассемблерного кода для разный архитектур.

anonymous
()
Ответ на: комментарий от xnix

Это просто я забыл про /0, поправлю.

shuthdar ★★★
() автор топика

Бог ты мой... Почто так мучаться? Если уж пишешь парсер, то прочти уж хоть чуть-чуть литературы по тематике... Хотя бы про регекспы (mastering regular expressions). В идеале -- драгонбук.

Бог в помощь.

rab_boziy
()
Ответ на: комментарий от rab_boziy

>Если уж пишешь парсер, то прочти уж хоть чуть-чуть литературы по тематике...

Этим я займусь, когда полностью напишу его по-своему. Чтоб познать все грани Ада и ощущения себе ничтожеством.

Кстати, до использования регекспов я и сам додумался, завтра буду курить.

PS Два слова из трёх букв на "б" в трёх строчках технического поста - это сильно, весьма.

shuthdar ★★★
() автор топика
Ответ на: комментарий от shuthdar

> Этим я займусь, когда полностью напишу его по-своему. Чтоб познать все грани Ада и ощущения себе ничтожеством.

Улыбнуло.

> Кстати, до использования регекспов я и сам додумался, завтра буду курить.

http://www.piter.com/library/978531800056/

Там только зарегаться нужно.

rab_boziy
()
Ответ на: комментарий от rab_boziy

Это если он под рутом его специально выставил, ну тогда и про sudo не стоит забывать. Хотя я ведь сказал у _нормального_ пользователя.

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

что только люди не придумают, чтоб нормально не работать. Ладно, Бог с ним.

rab_boziy
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.