Моя структура папок следующая:
Код: Выделить всё
src/main/antlr/eu//parser/Lexer.g4
src/main/antlr/eu//parser/Parser.g4
Код: Выделить всё
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
eu.
parser
0.0.1-SNAPSHOT
jar
parser
http://maven.apache.org
UTF-8
org.apache.maven.plugins
maven-compiler-plugin
3.7.0
1.9
1.9
org.antlr
antlr4-maven-plugin
4.7
true
true
antlr4
junit
junit
4.12
test
org.antlr
antlr4-runtime
4.7
Код: Выделить всё
lexer grammar Lexer;
@lexer::header {
package eu..parser;
}
NUMBER: FLOAT | DIGIT;
LETTER: ('a'..'z') | ('A'..'Z');
FLOAT: DIGIT '.' DIGIT+;
DIGIT: [0-9]+ | MINUS [0-9]+;
Код: Выделить всё
parser grammar Parser;
options {
language = Java;
tokenVocab = Lexer;
}
@header {
package eu..parser;
}
addition: NUMBER ('+' NUMBER)+;
Код: Выделить всё
// Generated from eu\\parser\Lexer.g4 by ANTLR 4.7
package eu..parser;
package eu..parser;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.TokenStream;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.misc.*;
Я уже пробовал не использовать оператор @header в моем Parser/Lexer, и он удаляет одну из строк пакета. Но я не думаю, что так следует поступать
Подробнее здесь: https://stackoverflow.com/questions/469 ... ammar-file
Мобильная версия