【发布时间】:2018-04-12 14:28:04
【问题描述】:
这是一个关于扩展一个非常基本的Shunting Yard表达式解析器的问题。
我有一种语言,其表达式由数字文字、字母数字变量名、运算符“+”、“*”和“-”组成,并带有一些元数、关联性和优先级,以及括号。但是该语言中还有其他语句,并且该语言没有行终止符。
当运算符的数量已知时,停止解析或发出错误信号的正确方法是什么?
例子:
10 ==> 10
10+20*30 ==> 10 20 30 * +
(10+20)*30 ==> 10 20 + 30 *
a+b ==> a b +
10 a ==> 10 ; but leave "a" unparsed
10+a 30 ==> 10 a + ; but leave "30" unparsed
10+20* ==> error "missing argument for *"
前四个案例已经奏效,那么后三个呢?
【问题讨论】:
标签: parsing operators expression shunting-yard