У меня есть эта простая грамматика
grammar Monto;
import util;
documento: .*? monto .+;
monto: SYMBOL INT+;
SYMBOL: '$';
И когда я запускаю это, я получаю эту ошибку:
line 1:0 mismatched input '<EOF>'
Я добавил EOF к своему основному правилу, но он не работает, япробовал с этим
documento: .*? monto .+ EOF;
или с этим
documento: .*? monto .+? EOF;
Любопытно, когда я запускаю его из cmd (инструмент ANTLR4), он работает
EDITED
Я использую ANLTR 4.7.1 и вот как я создаю лексеры и парсеры
public GrammarModule(String text) {
CharStream input = CharStreams.fromString(text);
demandantesLexer = new DemandantesLexer(input);
demandantesParser = new DemandantesParser(new CommonTokenStream(demandantesLexer));
demandadosLexer = new DemandadosLexer(input);
demandadosParser = new DemandadosParser(new CommonTokenStream(demandadosLexer));
direccionLexer = new DireccionLexer(input);
direccionParser = new DireccionParser(new CommonTokenStream(direccionLexer));
fechaLexer = new FechaLexer(input);
fechaParser = new FechaParser(new CommonTokenStream(fechaLexer));
montoLexer = new MontoLexer(input);
montoParser = new MontoParser(new CommonTokenStream(montoLexer));
numCuentaLexer = new NumCuentaLexer(input);
numCuentaParser = new NumCuentaParser(new CommonTokenStream(numCuentaLexer));
oficioLexer = new OficioLexer(input);
oficioParser = new OficioParser(new CommonTokenStream(oficioLexer));
referenciaLexer = new ReferenciaLexer(input);
referenciaParser = new ReferenciaParser(new CommonTokenStream(referenciaLexer));
}
Вызов парсеров
fechaParser.documento().fecha().getText();
montoParser.documento().monto().getText();
и так далее ....