1

我可以写一个规则,其中初始令牌部分固定,部分通用?

rule: ID '=' NUMBER
      ;

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

NUMBER: (0 .. 9) +

但仅当令牌 ID 采用 var* 形式时(var 是固定的)

谢谢

4

1 回答 1

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

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

于 2010-02-08T20:00:50.980 回答