У меня есть простой язык, как:синтаксического анализа и оценки простой язык с помощью JavaCC
funa X (X+3*funb(1)) ;
funb Y (2*Y) ;
main (2+func(func(1))) ;
func A (funa(A)) ;
я использовал CFG для разбора выше, как:
program => (statement)+
statement => (<main_keyword> | <idl> <idu>) <lparan> expression <rparan> <semicolon>
expression => T(<plus> T)*
T => P(<multipliation>P)*
P => <idu> | <idl> <lparan> expression <rparan> | <number>
И фишку признание:
<main_keyword> -> "main"
<idl> -> (["a"-"z"])+
<idu> -> (["A"-"Z"])+
<lparan> -> "("
<rparan> -> ")"
<semicolon> -> ";"
<number> -> (["0"-"9"])+
<plus> -> "+"
<multiplication> -> "*"
I я могу разобрать выше, используя javaCC, но у меня нет идеи, как оценивать выше такие программы с помощью парсера. Вышеуказанная программа должна оцениваться до 15. Как реализовать это в javaCC, возможно ли это с помощью увеличения производительности парсера? Функции могут появляться в любом месте, перед вызовом или после вызова.
Благодаря