|
Тема |
Re: Регулярен израз за калкулатор ? [re: Alex] |
|
Автор |
josarjan () |
|
Публикувано | 21.01.02 17:45 |
|
|
Не съм убеден, че с регулярен израз ще се оправиш - трябва ти по-сложна граматика. Виж, с КСГ (контекстно свободна) ще стане. Даже ще е от хубавите - гледаш един символ напред и знаеш кое правило да избереш (не си спомням точно как се казваха - LL(1) май). Нещо от този сорт:
E -> S | S '*' E
S -> О | О '+' S
О -> '(' E ')' | Number
или ако го преведем:
Е (израз) е или S (сума) или S '*' E (сума по израз)
S (сума) е или О (операнд ) или операнд + сума
операнд е или израз в скоби или число
Виж за Number (число) ще трябва с регулярен израз.
Не знам доколко е точно това горе (пиша го набързо), но е нещо такова.
Как може да се реализира - ако имаш lex и yacc е лесно.
Ако трябва да пишеш програма и не знаеш как става с таблица (така работи yacc-a) можеш да използваш т.нар. метод на рекурсивното спускане (или май така се казваше).
|
| |
|
|
|