这是一个关于扩展一个非常基本的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 *"
前四个案例已经奏效,那么后三个呢?