2017-03-29 3 views

답변

0

네, 가능합니다. 이상의 규칙이 서브 순서를 일치시킬 수 있습니다 경우 - (입력의 형태로 현재 위치를 시작) 중 규칙은 입력의 긴 서브 순서를 일치시킬 수 있습니다 - :

이것은 ANTLR 렉서 사용 배제하는 결정하는 방법이다 (문법 파일에 정의 된대로) 첫 번째 규칙이 승리합니다.

따라서, 알파 전용 입력의 경우 두 규칙이 모두 일치하지만, String이 문법에 더 가까이 있기 때문에, 그것은 사용될 것입니다. 비 알파 입력의 경우, EVERYTHING 규칙은 더 긴 서브 시퀀스와 일치 할 수 있으므로 사용됩니다.

그러나 작성된대로 EVERYTHING 규칙은 공백과 줄 바꿈과 일치하므로이 특정 경우 String 규칙은 전체 입력이 단지 알파 문자이고 다른 문자는없는 경우에만 사용됩니다. 두 경우 모두에서 전체 입력이 단일 토큰으로 일치됩니다. 실제 문법에서는 EVERTYHING 규칙이 약간 다를 수 있습니다.

+0

그래, 나는 두 렉서 규칙을 지키려고했지만 문자열 규칙을 사용하거나 실패 할 수 없다는 문제를 만듭니다. 렉서 규칙과 다른 룰에 영향을 미치지 않도록 할 수있는 방법을 제안하십시오. –

+0

게시물을 편집하고 실패한 예제 문법을 추가 할 수 있습니까? –

관련 문제