2012-02-09 5 views
5

膨大な数のトークンをAntlrに送る最良の方法は何ですか? 10万英単語のリストがあるとすれば、どのように文法に追加できますか? verbs.gのような巨大な文法ファイルが含まれている可能性がありますが、.tokenファイルなどを変更することによって、より洗練された方法があるかもしれません。ファイルからのAntlrトークン

grammar verbs; 

VERBS: 
'eat' | 
'drink' | 
'sit' | 
... 
... 
| 'sleep' 
; 

また、トークンは、レクサーまたはパーサートークン(つまり、動詞または動詞)である必要がありますか?おそらく動詞:。

+0

更新:ファイルenglish_verbs.gがtの間にantlrによって消費されない彼は実際に特殊な文字がないことを実感しています: at org.antlr.tool.GrammarSanity.traceStatesLookingForLeftRecursion(GrammarSanity.java:149)...(繰り返し10^99回) –

+0

あなたがしていることは、恐らく認識装置の限界をテストするでしょう。 – dasblinkenlight

+1

いいえ、多くのルールでレクサーを作成する方法はありません。回避策については、次を参照してください:http://stackoverflow.com/questions/9008134/dynamically-create-lexer-rule –

答えて

2

私はむしろ意味論的述語を使用します。

あなたはトークン

word : [a-z]+ 

、あなたが(代わりに、一般的な単語の)動詞を使用するすべてのサイトで定義する必要があり、このために

は、解析された単語がリストにあるかどうかを確認するセマンティック述語を置きます動詞の各追加の動詞がそれぞれ追加の動詞は、生成されたコード

  • 共役が上位
  • 簡単です拡大文法
  • を変更します、このようなタスク

    • のためのパーサ/レクサを使用しないことをお勧めします使用し

      /小文字は扱いやすくなりました

  • 関連する問題