Re: парсер
- From
- Andrey Belyakov ()
- To
- All
- Date
- 2000-03-01T12:16:32Z
- Area
- RU.ALGORITHMS
From: "Andrey Belyakov" <andrejb@care.lv>
Hi, Boris Rudakov !
> OA> Я думал можно как-то универсально, для любого
> OA> количества уровней.
> Это и есть универсально. Наличие уровня определяется
> наличием функции (правила) для его трансляции.
Если есть Правила, то зачем _писать_ код?
> Причем: обрати внимание, что всякие "табличные методы"
> трансляции абсолютно ничем не отличаются: если таблица
> сделана руками (извращение:) то добавление нового уровня
> должно ее серьезно перестроить, а если таблица создается
> транслятором трансляторов, то ты все-равно должен написать
> там новое синтаксическое правило (а то и не одно).
Абсолютно надуманная идея. Та, что надо вручную строить
сложные таблицы для разбора _выражений_. Есть нормальное
решение - одна строка регулярной таблицы описывает одну
операцию. Все, что надо сделать для построения прасера
выражений - написать строки вида:
// оп. приор. проц. комм. и т.д.
"*" 10 left2right Yes
"/" 10 left2right No
"+" 9 left2right Yes
"-" 9 left2right Yes
"=" 2 right2left No
.....
Со всем остальным справится программа.
Андрей.
--- ifmail v.2.15dev4
* Origin: Demos online service (2:5020/400)