История изменений
Исправление invy, (текущая версия) :
Напиши грамматику своего языка. (Да, твои выражения - это язык).
Приведи грамматику к форме LL(1) ну или LR(1).
Дальше скармливаешь результат парсер-генератору (в случае LL(1) можно написать ручками рекурсивный спуск, но зачем?), который по твоей грамматкие будет на выходе выдавать именночто prase tree, после чего ты делаешь преобразования с этим prase tree (удаляешь скобочки ненужные, делаешь вычисления прямо на месте, и в итоге получаешь AST.
a+(b|c)+d+(b|c) — дубликаты зависит от ситуации
Заодно построив грамматику, ты можешь случайно для себя узнать, что у тебя уже не context-free язык, а context-sensitive и парсер ты не напишешь просто так.
Исправление invy, :
Напиши грамматику своего языка. (Да, твои выражения - это язык).
Приведи грамматику к форме LL(1) ну или LR(1).
Дальше скармливаешь результат парсер-генератору (в случае LL(1) можно написать ручками рекурсивный спуск, но зачем?), который по твоей грамматкие будет на выходе выдавать именночто prase tree, после чего ты делаешь преобразования с этим prase tree (удаляешь скобочки ненужные, делаешь вычисления прямо на месте, и в итоге получаешь AST.
Заодно построив грамматику, ты мозешь случайно для себя узнать, что у тебя уже не context-free язык, а context-sensitive и парсер ты не напишешь просто так.
Исправление invy, :
Напиши грамматику своего языка. (Да, твои выражения - это язык).
Приведи грамматику к форме LL(1) ну или LR(1).
Дальше скармливаешь результат парсер-генератору (в случае LL(1) можно написать ручками рекурсивный спуск, но зачем?), который по твоей грамматкие будет на выходе выдавать именночто prase tree, после чего ты делаешь преобразования с этим prase tree (удаляешь скобочки ненужные, делаешь вычисления прямо на месте, и в итоге получаешь AST.
Исходная версия invy, :
Напиши грамматику своего языка. (Да, твои выражения - это язык).
Приведи грамматику к форме LL(1) ну или LR(1).
Дальше скармливаешь результат парсер-генератору, который по твоей грамматкие будет на выходе выдавать именночто prase tree, после чего ты делаешь преобразования с этим prase tree (удаляешь скобочки ненужные, делаешь вычисления прямо на месте, и в итоге получаешь AST.