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.