我正在学习龙书,迫不及待地写了一个表达式解析器。解析算术表达式
为了处理负数输入,我的词法分析器在满足符号' - '时读取数字以返回数字标记。
“-4 + 2” 会得到(-4号)(+,运营商)(2号)
但后来我发现,它不能做的事情一样容易“4 2“,因为
(4,数字)(-2,数字) 这是一个错误的语法。
我的解决方案之一是在评估表达式之前进行一些预处理,例如,如果第一个标记是减号,则附加零。 我想知道你们如何处理这种情况?
谢谢。
我正在学习龙书,迫不及待地写了一个表达式解析器。解析算术表达式
为了处理负数输入,我的词法分析器在满足符号' - '时读取数字以返回数字标记。
“-4 + 2” 会得到(-4号)(+,运营商)(2号)
但后来我发现,它不能做的事情一样容易“4 2“,因为
(4,数字)(-2,数字) 这是一个错误的语法。
我的解决方案之一是在评估表达式之前进行一些预处理,例如,如果第一个标记是减号,则附加零。 我想知道你们如何处理这种情况?
谢谢。
我词法读取时满足符号位“ - ”返回一个负数
不要。一元运算符应该由解析器处理,而不是词法分析器。
我的解决方案之一是在评估表达式之前进行一些预处理,例如,如果第一个标记是减号,则附加零。
编号修复问题。
当你在洞里时,停止挖掘。
伟大的意见!谢谢! – babel92 2013-05-07 20:38:33
把它作为'( - ,operator),(4,number),(+ operator),(2,number)'并判断'-'是一元减数还是后面的二进制减法? – 2013-05-05 16:14:42