flex-lexer - 在 lex 中,如何区分 '-'(减法)运算符和整数 '-3' ?

标签 flex-lexer lex lexical-analysis

我正在为特定语言编写 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/

    相关文章:

    regex - 最好的现代文本解析? AKA 何时使用 Lex 和 Yacc?

    c - 为什么 yytext 会跳过 YACC 中的第一个输入?

    c - 如何将数组存储在地址C中

    python - 我怎样才能用正则表达式标记这个?

    bison - Flex 2.5.35 yy_scan_buffer 未初始化行号和列号

    c - lex 和 yacc — 组合两个词法分析器和一个 yacc

    C Flex 代码调试

    Haskell 解析工具 - yacc:lex::happy:?

    linux - 安装 flex 时找不到 flex 命令

    c - 在 lex 和 yacc 代码中 printf 在 yacc 文件中不起作用