【问题标题】:ANTLR V4 lexer lookahead regexANTLR V4 词法分析器前瞻正则表达式
【发布时间】:2015-05-03 14:31:10
【问题描述】:

我正在尝试为类似 XML 的语言编写语法,我们使用

OPEN  : '<<' ;
CLOSE : '>>' ;
TEXT  : ~[^<]+ ;

上面 TEXT 的定义显然是错误的,因为它会在第一次出现

所以这样的事情也行不通:

TEXT  : .*? '<<' ;

有没有办法在 ANTLR4 中实现这一点?

--TR

【问题讨论】:

    标签: regex parsing antlr antlr4 lexer


    【解决方案1】:

    这里不需要前瞻,以下应该可以解决问题:

    TEXT  : ( ~'<' | '<' ~'<' )+ ;
    

    即:匹配一系列非&lt; 字符,或单个&lt; 后跟其他字符。

    顺便说一下,ANTLR 的语法对于否定字符类是不同的。例如,您应该写 ~[a-z] 而不是 [^a-z]

    您可能还想看看XML example grammar,它使用词法分析器模式来区分标签内的标记,这也可能对您的语法有用。

    【讨论】:

      猜你喜欢
      • 2014-02-16
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      相关资源
      最近更新 更多