나는 ANTLRWorks에 EBNF 문법에 문제가있어 :EBNF 문법 (ANTLR은)
line 37:
upper_lower_case
: LOWER_CASE
| UPPER_CASE
;
line 42:
CLASSNAME
: UPPER_CASE (DIGITS | upper_lower_case)*
;
line 51:
UPPER_CASE
: 'A'..'Z'
;
line 55:
LOWER_CASE
: 'a'..'z'
;
line 60:
DIGITS : '0'..'9'
;
내가 CLASSNAME 항상 대문자로 시작하고 숫자, 대소 문자 구성이 할 수있는 것보다 할 .
오류 로그 :
는[13:11:59] warning(200): classgenerator.g:43:42:
Decision can match input such as "'0'..'9'" using multiple alternatives: 1, 2
As a result, alternative(s) 2 were disabled for that input
[13:11:59] warning(200): classgenerator.g:43:42:
Decision can match input such as "<EOT>" using multiple alternatives: 2, 3
As a result, alternative(s) 3 were disabled for that input
[13:11:59] error(201): classgenerator.g:43:42: The following alternatives can never be
matched: 3
[13:11:59] error(208): classgenerator.g:60:1: The following token definitions can never
be matched because prior tokens match the same input: UPPER_CASE,DIGITS
은 누구도 날이 문제를 해결하는 데 도움이 있을까요? 미리 감사드립니다.
감사합니다, Hladeo
편집 :이 토큰에하지를 의미 않을 경우
그래서 나는 조각 키워드를 사용해야합니까? 조각 키워드를 사용하는 이런 식으로 잘못 될 것입니까?
tokens {
PUBLIC = '+';
PRIVATE = '-';
PROTECTED = '=';
}
fragment ACCESSOR
: PUBLIC
| PRIVATE
| PROTECTED
;
및 다른 질문.
OBJECTNAME
: UPPER_LOWER_CASE (UPPER_LOWER_CASE | DIGIT)*
;
OBJECTNAME해야는 (상단 또는 중요하지 않습니다 맡았다 이하) 적어도 하나 개의 문자로 구성되어 있으며 선택적으로 다른 문자 또는 숫자의 - 코드의 일부 뭐가 잘못? - 내가 예를 variable
에 대한 입력하려고 할 때 나는 오류를 받고 있어요 Variable
대문자로 시작하면 괜찮아,하지만 :
line 1:15 mismatched input 'Variable' expecting OBJECTNAME
감사합니다. 내 새로운 질문에 대답 해 주시겠습니까? 첫 번째 게시물을 수정했습니다. – Hladeo
CLASSNAME과 OBJECTNAME을 구분할 수 있습니까? 간단한 자바 클래스 생성기를 쓰고 있는데,'create ClassName + name : String, -age : int;'변수, age, String 및 int는 OBJECTNAME입니다. – Hladeo
@Hladeo 편집 내 대답 2를 참조하십시오 :) –