2013-07-01 3 views
0

와 내가 netbeans7 및 ANTLR4
와 편집기를 작성 나는 정적 파일에 대해 잘 작동 my.g4 파일렉서에서 실제 위치를 얻으십시오. 예를

Label  : {(getCharPositionInLine()==0)}? ID; 

에 라인을 가지고 있지만, getCharPositionInLine을 편집하는 동안() 다른 곳에서 종종 0을 반환합니다.
어떻게 렉서에서 실제 위치를 얻습니까?

필자는 텍스트 편집기를 편집하는 동안 모든 텍스트가 아닌 모든 텍스트가 렉서 (lexer)로 보내지는 것을 보았습니다. 나는 그것을 어떻게 바꿀 지 모른다. 당신의 입력 스트림이 파일의 시작 부분에서 시작하는 흐름을 나타내지 않는 경우,

나는 다음 스트림이 어디 라인/칼럼으로 렉서를 초기화해야이 문제를
https://github.com/daimor/SimpleANTLR

답변

1

로 예를 생성 실제로 시작. 이렇게하지 않으면

lexer.getInterpreter().setLine(actualLine); 
lexer.getInterpreter().setCharPositionInLine(actualCharPositionInLine); 

, 렉서는 항상 입력 스트림이 파일의 시작 부분에서 시작한다고 가정합니다.

+0

글쎄, 모르겠지만 actualLine 및 actualCharPositionInLine을 얻는 방법 – DAiMor

+0

표준 입력 스트림 (예 :'ANTLRFileStream') 중 하나를 사용하지 않으므로 응용 프로그램마다 다릅니다. 해당 정보는 ANTLR에 제공되어야하며 NetBeans에서 어떤 방식 으로든 가져와야합니다. –

관련 문제