2

GE Logician MEL トレース ファイルを解析して読みやすくする最善の方法を見つけようとしています。

次のようなセグメントがあります

>{!gDYNAMIC_3205_1215032915_810 = (clYN)}
実行>GDYNAMIC_3205_1215032915_810 = "はい、いいえ"
結果>「はい、いいえ」
実行>終了
結果>「はい、いいえ」

>{!gDYNAMIC_3205_1215032893_294 = (clYN)}
実行>GDYNAMIC_3205_1215032893_294 = "はい、いいえ"
結果>「はい、いいえ」
実行>終了
結果>「はい、いいえ」

>{IF (STR(F3205_1220646638_285, F3205_1220646638_301) == "") THEN "" ELSE (\par\tab fnHeadingFormat("うつ病") + CFMT(F3205_1220646638_285, "", " ", "B", "\par ") + CFMT(F3205_1220646638_301, "", "何かをすることにほとんど興味や喜びがないことに悩まされたことはありますか? ", "B", "\par ") ) ENDIF}
execute>call STR("No", "No")
結果>「いいえ」
execute>"NoNo" == ""
結果>FALSE
実行>FALSEの場合
結果>FALSE
execute>call FNHEADINGFORMAT("うつ病")
execute>call CFMT("うつ病", "B,2")
results>"\fs24\b うつ病\b0\fs20 "
execute>"\r\n" + "\fs24\b うつ病\b0\fs20 "
results>"\r\n\fs24\b うつ病\b0\fs20 "
execute>"\r\n\fs24\b うつ病\b0\fs20 " + "\r\n"
results>"\r\n\fs24\b うつ病\b0\fs20 \r\n"
results> return "\r\n\fs24\b Depression\b0\fs20 \r\n"
execute>call CFMT("いいえ", "", "気分が落ち込んだり、気分が落ち込んだり、絶望したりすることがよくありますか? ", "B", "\par ")
results>"\b 気分が落ち込んだり、気分が落ち込んだり、絶望したりすることがよくありますか? \b0 いいえ\par "
execute>"\r\n\fs24\b うつ病\b0\fs20 \r\n" + "\b 気分が落ち込んだり、気分が落ち込んだり、絶望したりすることがよくありますか? \b0 いいえ\par "
results>"\r\n\fs24\b うつ病\b0\fs20 \r\n\b 気分が落ち込んだり、気分が落ち込んだり、絶望したりすることがよくありますか? \b0 いいえ\par "
execute>call CFMT("いいえ", "", "何かをすることにあまり興味がなかったり、楽しくなかったりすることがよくありますか? ", "B", "\par ")
results>"\b 物事を行うことにほとんど興味や喜びがないことに悩まされたことはありますか? \b0 いいえ\par "
execute>"\r\n\fs24\b うつ病\b0\fs20 \r\n\b 気分が落ち込んだり、気分が落ち込んだり、絶望したりすることがよくありますか? \b0 いいえ\par " + "\b物事を行うことにほとんど興味や喜びを感じませんか? \b0 いいえ\par "
results>"\r\n\fs24\b うつ病\b0\fs20 \r\n\b 気分が落ち込んだり、気分が落ち込んだり、絶望感に悩まされることがよくありましたか? \b0 いいえ\par \b あまり興味がないことに悩まされることがよくありましたか?または物事を行うことの喜び? \b0 いいえ\par "

私はそれを手続き的に行うことにうんざりすることができましたが、私が扱ったすべての正規表現の後、同様の方法でファイルを解析するためのルールを定義できるものは何もないとは信じがたいです. 私が間違っている?

4

7 に答える 7

4

ANTLR を使用して文法を作成します。C を使用している場合、lex/yacc はネイティブです。ANTLR は、Java、Python、および .NET でネイティブ パーサーを作成します。出力は repl のように見えます。入力言語の仕様についてベンダーに問い合わせてみてください。

于 2008-09-16T17:44:09.323 に答える
2

Antlrならうまくいくでしょう。

于 2008-09-16T17:41:27.333 に答える
2

解析に Perl を使用している場合。YACC に相当する Perl は、Parse::Yappモジュールです。Perl コードで使用するために yacc 文法を翻訳したとき、その翻訳はほとんど機械的なものでした。遅いですが強力な再帰的降下パーサージェネレーターもあります: Parse::RecDescent

于 2008-09-18T10:32:53.900 に答える
1

私だったら、文脈自由文法を導き出し、それをパーサー ジェネレーター (おそらく Scala のコンビネーター ライブラリー) にプラグインします。ただし、この文法は手動で解析するのはかなり簡単に見えますが、オートマトン理論を念頭に置いておいてください。問題にはなりません。

于 2008-09-16T17:43:14.600 に答える
1

LEX、FLEX、CUP、ANTLR、YACC (または使用しているプログラミング言語に相当するもの。主流のプログラミング言語には、これらのフレーバーがいくつかあります) などのツールを使用して、特定のファイルがある場合にファイルを解析できると思います。構造[より正確には、文法で表現できれば]。ただし、これらは細かい点では機能しない場合があります。

于 2008-09-16T17:44:14.283 に答える
1

ANTLR または lex/yacc を試すことができます。

于 2008-09-16T17:41:36.927 に答える
1

Haskell と呼ばれるプログラミング言語には優れた解析ライブラリがあり、ぜひお試しください。詳細については、www.haskell.org およびhttp://legacy.cs.uu.nl/daan/parsec.html

于 2008-09-16T17:49:32.320 に答える