我正在为特定语言编写 lex,其中操作以前缀表示法进行:(+ a b) --> (a + b)
安 整数 定义如下: 整数可以有负号 (-) 但没有正号。符号和数字之间可以有或没有空格。如果值为 0,则只允许单个数字 0。否则,它与常见的整数定义相同(没有前导 0)。
lex 中的表达式顺序如下(第一个匹配规则):
[\-]?[ ]*((0)|([1-9][0-9]*))
"-"
有了这些定义,我想解析字符串
- 5 3
IE。 (5-3)电流输出
Integer : - 5,
Integer : 3
期望的输出:
Operator : '-'
Integer : 5
Integer : 3
最佳答案
你没有。您返回 -
和 INTEGER 分别给解析器,让解析器处理一元减号。
关于flex-lexer - 在 lex 中,如何区分 '-'(减法)运算符和整数 '-3' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35386695/