Antlrworks2를 사용하고 있습니다. 거기에 '어휘 모드'가 정의 된 렉서 문법이 있습니다. 나는 렉서 문법을 가져 오는 문법을 결합했다. 결합 된 문법에서 코드를 생성 한 후 두 개의 .java 파일을 생성합니다. 예 : 결합 된 문법 파일 이름이 'xyz.g4'인 경우 java 파일 이름은 'xyzLexer.java', 'xyzParser.java'입니다. 하지만 Antlrworks2에서 'TestRig에서 실행'을 클릭하면 콘솔의 아래 오류가 발생합니다. 전 (위의 예에서는 xyzLexer.java) CDFCombinedGrammarLexer.java에서 관찰가져온 문법의 렉서 모드는 결합 된 문법에서 식별되지 않습니다. 'testRig에서 실행'을 클릭하면 컴파일 오류가 발생합니다. Antlrworks2
Compiling grammar files...
warning: Supported source version 'RELEASE_6' from annotation processor 'org.netbeans.modules.openide.modules.PatchedPublicProcessor' less than -source '1.7'
warning: Supported source version 'RELEASE_6' from annotation processor 'org.netbeans.modules.openide.util.ServiceProviderProcessor' less than -source '1.7'
warning: Supported source version 'RELEASE_6' from annotation processor 'org.netbeans.modules.openide.util.NamedServiceProcessor' less than -source '1.7'
warning: Supported source version 'RELEASE_6' from annotation processor 'org.netbeans.modules.openide.util.NbBundleProcessor' less than -source '1.7'
C:\Users\cc91kor\AppData\Local\Temp\TestRigTask-1361256016169\CDFCombinedGrammarLexer.java:144: error: cannot find symbol
case 1: _mode = INSIDE_BRACKETS; break;
^
symbol: variable INSIDE_BRACKETS
location: class CDFCombinedGrammarLexer
C:\Users\cc91kor\AppData\Local\Temp\TestRigTask-1361256016169\CDFCombinedGrammarLexer.java:149: error: cannot find symbol
case 0: _mode = INSIDE_BRACKETS; break;
^
symbol: variable INSIDE_BRACKETS
location: class CDFCombinedGrammarLexer
2 errors
4 warnings
Arguments: [CDFCombinedGrammar, vt, -tokens, -tree, -gui, C:\Users\cc91kor\Desktop\vt.txt]
Can't load CDFCombinedGrammar as lexer or parser
는 '어휘 모드'의 코드가 존재하지 않는다. 실제 lexer 파일에서 생성 된 java 파일에서 mode에 대한 코드를 찾을 수 있습니다.
아래 코드는 실제 렉서에서 볼 수있는 코드입니다.
public static final int INSIDE_BRACKETS = 1;
public static String[] modeNames = {
"DEFAULT_MODE", "INSIDE_BRACKETS"
};
어떤 도움이 되나요? 나는 기다리고있다!
미리 감사드립니다.