문제

초기 토큰이 부분적으로 고정되고 부분적으로 일반적인 규칙을 작성할 수 있습니까?

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

어느 쪽이든: 가능하면 아니다 오류 메시지에는 엄격한 Lexer 문법을 사용하십시오. 그들은 느리게 그리고 사용자가 완전히 불가능합니다. 당신은 구문 분석해야합니다 ID 편안한 형태로 나중에 정확하게 올바른 형태인지 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top