繁体   English   中英

算术表达式语法

[英]Arithmetic expression grammar

我正在尝试为一些算术表达式创建一个合适的语法。 我的表达式的有效标记如下:

'+', '-', '/', '*''**'表示幂。 表达式还可以包含符号和函数。 这些函数可以采用多个 arguments,其中一些可能是可选的。 从我对表达式解析的记忆中,我必须想出一个不是左递归并且还保留运算符关联性的语法。

所以这是我想出的,经过一番搜索(虽然不确定关联性):

E = T Eopt
Eopt = '+' T Eopt | '-' T Eopt | ε 
T = F Topt
Topt = '*' F Topt | '/' F Topt | ε
F = Number | '(' E ')' 

这可以在许多教科书中找到。 上述语法需要进行哪些更改,以便它可以容纳权力标记('**')以及符号和函数?

请不要将我指向 flex/yacc 等。谢谢。

您快到了。 变化从 F 开始:

E = T Eopt
Eopt = '+' T Eopt | '-' T Eopt | ε 
T = F Topt
Topt = '*' F Topt | '/' F Topt | ε
F = P Fopt
Fopt = '**' P Fopt | ε
P = Number | '(' E ')'

这假设您的标记器区分***

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM