Treetopを使用して ERB ファイルを解析しようとしています。次のような行を処理できる必要があります。
<% ruby_code_here %>
<%= other_ruby_code %>
Treetop は Ruby で書かれていて、あなたは Ruby で Treetop の文法を書いていますが、Treetop には、別のルールを書き出さなくても「ここで Ruby コードを探して、その内訳を教えてください」と言う既存の方法が既にありますか? Ruby 言語のすべての部分? .treetop
文法ファイルで、次のような方法を探しています。
rule erb_tag
"<%" ruby_code "%>" {
def content
...
end
}
end
どこruby_code
で Treetop が提供するいくつかのルールによって処理されます。
編集: 他の誰かがRuby-lex を使用して ERB を解析しましたが、彼が行ったことを再現しようとするとエラーが発生しました。rlex プログラムは、パーサー クラスを生成したときに完全なクラスを生成しませんでした。
編集:そうですね、気のめいるようですが、情報をありがとう。:) 私の修士プロジェクトでは、ERB を入力として使用する必要があるテスト ケース ジェネレーターを作成しています。さいわい、私の目的のためには、if
ステートメントやその他の条件文、ループなど、ERB コード内のいくつかのことを認識する必要があるだけです。それと一致する Treetop 文法を考え出すことができると思いますが、Ruby では完全ではないことに注意してください。