1
나는이 같은 ANTLR 문법이 공백을 처리합니다. 이 방법으로 작동하지 않습니다. 문자열을 helloqwerty;
으로 변경하면 모든 것이 정상입니다. 또한 문법을 다음과 같이 변경할 수 있습니다.만들기 ANTLRWorks 자동
grammar HelloGrammar2;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
STATEMENT : 'hello' WS ID WS ';' ;
WS : (' '|'\t'|'\r'|'\n')* ;
그리고이 경우 hello qwerty ;
이 정상적으로 작동합니다. ANTLR이 공백을 자동으로 건너 뛸 수있게 할 수 있습니까? 내가 ANTLRWorks에서 테스트하고 있습니다 : 그것은 의미가있는 경우
업데이트
을 - (즉 내가 hello qwerty ;
와 HelloGrammar1 작업을 만들고 싶어).
grammar HelloGrammar;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
STATEMENT : 'hello' ID ';' ;
WS : (' '|'\t'|'\r'|'\n') { $channel = HIDDEN; } ;
가 여전히 작동하지 않습니다 : 2
업데이트는 또한이 방법을 시도했다.
내가 선택 "문"규칙 "통역"탭을 사용하고 3
업데이트.
허용되는 입력은 무엇이 필요합니까? – luketorjussen
렉서 규칙은 영 (0) 문자 (빈 문자열)와 (잠재적으로) 일치 할 수있는 토큰을 만들어서는 안됩니다. 렉서는 무한한 양의 렉서를 생성합니다. '(' '|'\ t '|'\ '|'\ n ')'또는'(' '' '\ t'| '\ r'| '\ n') +'. –