Parsing 正则表达式标记antlrV3

Parsing 正则表达式标记antlrV3,parsing,antlr,expression,token,lexer,Parsing,Antlr,Expression,Token,Lexer,我可以在初始标记部分固定且部分通用的情况下编写规则吗 rule: ID '=' NUMBER ; ID: (A.. Z | a.. Z) + NUMBER: (0 .. 9) + 但仅当令牌ID的形式为var*(var是固定的) 谢谢你是说这个吗 // Use this instead of ID in all parser rules that take either token identifier : VAR_ID | ID ; VAR_ID

我可以在初始标记部分固定且部分通用的情况下编写规则吗

rule: ID '=' NUMBER
      ;

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

NUMBER: (0 .. 9) +
但仅当令牌ID的形式为var*(var是固定的)

谢谢你是说这个吗

// 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')+
    ;

无论哪种方式:如果可能,不要对错误消息使用严格的词法语法。它们速度较慢,用户完全无法识别。您应该以轻松的形式解析
ID
,然后稍后检查它的格式是否正确。

什么是“但仅当令牌ID的格式为var*(在固定var的正则表达式中)时”的意思?我需要这样的代码解析器:varA=3 vare=5 varDF=3。。。如果var是固定的,否则我会被通知一个例外,我明白了。那么280Z28已经回答了你的问题,谢谢。但是令牌ID存在于其他规则中,我需要它保持通用性。@Boo:如果你遵循我的强烈建议,它将保持通用性。如果你说你在解析器中这样做,这正是我需要的。请告诉我你能举个例子吗?我不是ANTLR的专家。。。非常感谢你。