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)