Компилятоp (тpанслятоp)

From
Boris Rudakov (2:5054/9.4)
To
Andrey Belyakov
Date
2000-02-29T11:59:47Z
Area
RU.ALGORITHMS
Hello Andrey!

28 Feb 00 13:42, Andrey Belyakov wrote to All:

 AB> From: "Andrey Belyakov" <andrejb@care.lv>

 AB> Hi, Boris Rudakov !

 >>  >> LL(1) - реализуется рекурсивным спуском. Куда уж проще.
 >>  AB> И правятся годами. Для внесения корректных изменений
 >>  AB> в пример с калькулятором от BR - 4-6 операций - нужно
 >>  AB> повозится  часа 2-3.
 >> Да ладно тебе ! Минут 5-10 при условии что ты с текстом разобрался.
 AB> Очень легко добавятся операции типа скобок
Ты исходничек-то повнимательнее почитай - есть там скобки :)

 AB> и инкремента.
А вот это отвергается - это МАТФОРМУЛЫ, какой еще инкремент, ЧЕГО ? Там переменных-то нет...

 AB> Особенно если удасться найти место куда их втискивать. :)
Если встанет (очередной раз:) задача делать что-то смахивающее на язык, то я или возьму LX (если грамматика LL1) или Як/Бизон (если LR1) :)

 >> Впрочем, в ситуациях когда мне нужен транслятор более
 >> сложного языка чем язык матформул, я всегда беру в руки
 >> LX (транслятор трансляторов такой) и описываю грамматику
 >> на нем. Писать ручками и в правду сумасшетсвие. Никому не
 >> нужные непроизводительные затраты...
 AB> При хорошем сотруктурировании данных это можно сделать
 AB> путем добавления строки в таблицу данных. По крайней мере
 AB> у меня была такая разработка. Ну а табличку и генерировать
 AB> можно...
Нет, не согласен. Зачем возиться с табличками (в большинстве случаев - очень сложными табличками), когда есть специальные языки, за такие формализмы отвечающие ? Мне куда проще написать:

Loop:      LoopFor | LoopWhile;
LoopFor:   "for" Ident ":=" Expr "to" | "downto" Expr "do" Statement;
LoopWhile: "while" Expr "do" Statement;

и на этом успокоиться.

 AB> Андрей.

Борис Рудаков,               Новый танец:  деграданс
BBR

--- Be happy: BBR is looking at you !
 * Origin: АлкАголь малыми дозами безвреден в любых количествах (2:5054/9.4)