我想使用运算符优先级实现解析。我实现了+, - ,*和/。如何使用任何语法实现休息?这是一个大学项目,不允许yacc或野牛。
答案 0 :(得分:2)
您需要的是递归下降解析器(因为这是唯一可以轻松手动编写的解析器)。有关详细信息,请参阅维基百科,这很简单。
因此,要获得运算符优先权,您可以执行以下操作:
term = number
unary = ('-' | '+')* term
multiplication = unary ('*' | '/' unary)*
addition = multiplication ('+' | '-' multiplication)*
expression = addition
'表达'是你的起始规则。
答案 1 :(得分:1)
由于您不允许使用解析器生成器。我建议阅读Recursive descent parser 。 Dragon Book
中包含了非常好的介绍答案 2 :(得分:-1)