2015-08-31 53 views
2

我想解析句子"i am looking for a java developer"。我需要的輸出是language=java.antlr從文件中讀取語法標記

我創建瞭如下的語法文件。

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

+0

爲什麼你要在語法中做到這一點?爲什麼不解析'language'(在這個例子中是一個單一的標記作爲字符串)並讓程序使用輸入文件來檢查,如果語言是否被支持?再加上一個動作,你可以在你的語法中確保這個檢查。 – BeyelerStudios

回答