我正在编写一个词法扫描器,我想知道如何区分操作(例如-
)和有符号数(例如-14
)。例如,以下两行都有效:
+12
12 +12
目前,我的词法扫描器会像这样解析它们:
+12
12
+12
但是,稍后在程序中检查第二条语句的有效性时,它被标记为无效:一个数字标记不能跟在另一个没有相邻运算符的情况下。我希望它们被扫描为:
+12
12
+
12
我可以通过简单地检查前面的字符是否是运算符来实现这一点,如果是,则生成一个带符号的数字标记,否则一个运算符后跟一个数字,但是这样做会违反上下文无关语法的规则,并且会大大增加复杂性我的扫描仪。
如何以明确的方式扫描签名数字,以正确确定什么是数字令牌的一部分,哪些不是数字令牌的一部分?