コンパイラのクラスの構文テキスト修正を実行しようとしています。アイデアは次のとおりです。「ルビーは素晴らしい」のように、「有効なフレーズはSUBJECT VERB ADJECTIVE」のように、言語(私の場合はポルトガル語)に固有のルールがいくつかあります。
さて、最初に「ルビーは素晴らしい」という入力をトークン化する必要があります。だから私はたくさんの動詞を1行ずつ含むテキストファイル「動詞」を持っています。次に、「形容詞」、「代名詞」などのテキストが1つあります。
Ragelを使用してパーサーを作成しようとしていますが、次のような方法がわかりません。
%%{
machine test;
subject = <open-the-subjects-file-and-accept-each-one-of-them>;
verb = <open-the-verbs-file-and-accept-each-one-of-them>;
adjective = <open-the-adjective-file-and-accept-each-one-of-them>;
main = subject verb adjective @ { print "Valid phrase!" } ;
}%%
ANTLR、Lex / Yacc、Ragelなどを調べましたが、この問題を解決していると思われるものは見つかりませんでした。これを行う唯一の方法は、Ragelの入力ファイルを前処理して、プログラムがファイルを読み取り、その内容を適切な場所に書き込むようにすることでした。しかし、私もこの解決策が好きではありません。
誰かが私がこれを行う方法を知っていますか?Ragelがなくても問題ありませんが、この問題を解決したいだけです。RubyまたはPythonを使用したいのですが、それも実際には必要ありません。
ありがとう。