antlr читает токены грамматики из файла

Я хочу разобрать предложение "i am looking for a java developer", Выход мне нужен language=java.

Я создал файл грамматики следующим образом.

grammar Job;

eval returns [String value]
    :    output=jobExp { $value = $output.text;}
    ;
jobExp returns [String value]
    :    ind=indro whitespace var1=language ' developer'  {$value = $var1.text;}
    ;

indro
    :
    'i am looking for a' |   'i am searching for a'
    ;

language :
    'java' | 'python' | 'cpp'
    ;

whitespace :
    (' '|'\t')+
    ;

Здесь, в правиле language Я жестко программирую набор языков внутри самого файла грамматики. Можно ли читать языки из файла и обрабатывать грамматику соответственно? Входной файл должен быть таким

languages.txt

 java
 python
 cpp

я использую antlr 4.5.1-1,

1 ответ

Не совсем уверен, что это полностью удовлетворит ваш вопрос, но посмотрите на составные грамматики:

https://theantlrguy.atlassian.net/wiki/display/ANTLR3/Composite+Grammars

Если вам действительно нужно, чтобы он был в файле, рассмотрите возможность создания шага обработки / сборки из languages.txt для languages.grammar и используйте languages.grammar в качестве Composite.

Другие вопросы по тегам