Компилято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)