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 に答える