2013-02-14 1 views
3

렉서 문법을 다른 렉서 문법으로 가져 오려고합니다. 가져온 문법은 differen 모드를 사용합니다 (XMLLexer 예제 모드 INSIDE 및 PROC_INSTR).다른 모드를 사용하는 ANTLR4 렉서 문법 가져 오기

lexer grammar HTMLLexer; 
import XMLLexer; 

컴파일 할 때 모드 이름에 해당하는 변수가 정의되어 있지 않은 오류가 발생합니다. 내가 상단에있는 모드를 redifining하여이 오류를 극복 할 수

C:\Users\<user>\AppData\Local\Temp\TestRigTask-1360839400637\HTMLLexer.java:143: 
    error: cannot find symbol 
    case 6: more(); pushMode(PROC_INSTR); break; 
         ^
    symbol: variable PROC_INSTR 
    location: class HTMLLexer 
1 error 

: 나는 을합니다 (antlr4 책에서)을 XMLLexer의 상단에 HTMLLexer을 정의하고 다음과 같은 오류가 발생하고 구체적인 예를 들어

추가 토큰이있는 최상위 레벨 렉서를 사용하지만 다른 모드의 가져온 토큰은 기본 모드로 인식되지 않습니다.

파서는 기본 렉서 정의에서 가져온 부분을 인라인하면 작동하지만 가져 오기 기능을 사용하여 깨끗하게 분리하고 싶습니다. (xml/html 예제가 아닌 다른 경우)

import를 사용하여 작동 시키거나 antlr4의 제한 사항이 있습니까?

답변