代码之家  ›  专栏  ›  技术社区  ›  Denis

antlr4:令牌识别错误“”点和其他标点符号

  •  0
  • Denis  · 技术社区  · 8 年前

    我将解析器规则定义为:

    text: '"'.*?'"' ;
    

    但是,如果文本包含标点符号“.”,则此操作失败。

    ",;:!?./§/*-+)({}[]abc"   
    line 1:1 token recognition error at: ','
    line 1:2 token recognition error at: ';'
    line 1:4 token recognition error at: '!'
    line 1:5 token recognition error at: '?'
    line 1:6 token recognition error at: '.'
    line 1:7 token recognition error at: '/'
    line 1:8 token recognition error at: '§'
    line 1:9 token recognition error at: '/'
    line 1:10 token recognition error at: '*'
    line 1:11 token recognition error at: '-'
    line 1:12 token recognition error at: '+'
    line 1:13 token recognition error at: ')'
    line 1:14 token recognition error at: '('
    

    奇怪的是,卷发被认出来了。 接受任何帮助 任何东西 作为字符串的一部分?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Raven Bill Karwin    8 年前

    你需要 text 定义为这样的lexer规则:

    TEXT: '"'.*?'"' ;
    

    如果在解析器规则中使用通配符运算符,则ANTLR将匹配任何规则,而不是任何字符。