2014-11-16 1 views
0

I는 BEGIN 렉서 규칙와 ANTLR 4 렉서 문법 및 ID 렉서 규칙 가지고ANTLR 4 TestRig를 사용하여 입력을 토큰화할 때 사용되는 렉서 규칙을 표시하는 방법은 무엇입니까?

grun Begin tokens -tokens 
begin 
^Z 
:

lexer grammar Begin;     

BEGIN : 'begin' ; 
ID : [a-z]+ ; 

WS : [ \t\r\n]+ -> skip ; 

렉서를 생성하고, 컴파일 한 후를, I는 입력 'begin'와 ANTLR TestRig 도구를 운영 (< 1>은 표시로) 토큰 유형이 1

[@0,0:4='begin',<1>,1:0] 
[@1,7:6='<EOF>',<-1>,2:0] 

주의 사항 :

나는이 출력을 얻었다.

grun Begin tokens -tokens 
beginning 
^Z 

내가이 출력 있어요 : 나도 같은 토큰 유형을 이유는 무엇입니까

[@0,0:8='beginning',<1>,1:0] 
[@1,11:10='<EOF>',<-1>,2:0] 

나는 다시 입력 'beginning'이 시간을 달렸다? 렉서가 두 입력 모두에 대해 동일한 렉서 규칙을 사용한다는 의미입니까? 이 입력을 토큰 화를위한 ID : [a-z]+ ;

: begin

및이 규칙이 입력을 토큰 화를위한 BEGIN : 'begin' ;

:

은 어떻게 TestRig는 렉서이 규칙을 사용하는 나에게 보여주기 위해 어떻게해야합니까 beginning

답변

1

다음 테스트 설정을 사용했습니다.

grammar Begin; 

test: (BEGIN | ID)+; 

BEGIN : 'begin' ; 
ID : [a-z]+ ; 

WS : [ \t\r\n]+ -> skip ; 

with ANTLRWorks 2.1. 그것은 예상대로 작동합니다

Arguments: [Begin, test, -tokens, -tree, -gui, C:\ANTLR\Begin.txt] 
[@0,0:4='begin',<1>,1:0] 
[@1,5:4='<EOF>',<-1>,1:5] 
(test begin) 

'시작'과 :

Arguments: [Begin, test, -tokens, -tree, -gui, C:\ANTLR\Begin.txt] 
[@0,0:8='beginning',<2>,1:0] 
[@1,9:8='<EOF>',<-1>,1:9] 
(test beginning) 
'시작'과

관련 문제