2
我正在尝试为某些算术表达式创建适当的语法。我的表达式的有效标记如下:算术表达式语法
'+', '-', '/', '*'
和'**'
幂。表达式还可以包含符号和函数。这些函数可以有多个参数,其中一些可能是可选的。从我从表达式解析中记得的很少,我必须想出一个不是左递归的语法,并且还保留了操作符关联性。
因此,这里是我想出了,搜索(虽然不知道关联)的一点点后:
E = T Eopt
Eopt = '+' T Eopt | '-' T Eopt | ε
T = F Topt
Topt = '*' F Topt | '/' F Topt | ε
F = Number | '(' E ')'
可以在很多教科书中找到。上述语法需要做什么修改,以便它可以修改权力标记('**')以及符号和函数?
请不要指向我flex/yacc等谢谢。
P应该适应符号和函数吗? – John 2011-06-07 16:21:51
@John:是的。添加... | ID | ID'('')'| ID'('args')'给P;添加新规则ARGS =表达式| ARGS','表达; – 2011-06-07 17:14:07