正则表达式标记antlrV3

时间:2010-02-08 19:25:56

标签: parsing antlr expression token lexer

我可以编写一条规则,其中初始令牌部分修复且部分通用吗?

rule: ID '=' NUMBER
      ;

ID: (A.. Z | a.. Z) +

NUMBER: (0 .. 9) +

但是,只有令牌ID的形式为var *(var是固定的)

由于

1 个答案:

答案 0 :(得分:2)

你是说这个吗?

// Use this instead of ID in all parser rules that take either token
identifier
    :   VAR_ID | ID
    ;

VAR_ID
    :   'var' ('A'..'Z' | 'a'..'z')*
    ;

ID
    :   ('A'..'Z' | 'a'..'z')+
    ;

无论哪种方式:如果可能,请 NOT 对您的错误消息使用严格的词法分析器语法。它们较慢对用户来说完全难以理解。您应该以轻松的形式解析ID,然后稍后检查它是否处于正确的形式。