用語が間違っている場合はご容赦ください。おそらく、私が欲しいものを説明する「正しい」言葉を手に入れるだけで、自分で答えを見つけるのに十分です.
私は ODL (オブジェクト記述言語) のパーサーに取り組んでいます。これは、NASA PDS (Planetary Data Systems; NASA がデータを公開する方法) だけが使用している難解な言語です。幸いなことに、PDS は最終的に XML に移行していますが、締め切り直前に落ちたミッションのために、まだソフトウェアを作成する必要があります。
ODL は、次のような方法でオブジェクトを定義します。
OBJECT = TABLE
ROWS = 128
ROW_BYTES = 512
END_OBJECT = TABLE
私はパーサーを で書こうとしてpyparsing
いますが、上記の構造にたどり着くまではうまくいっていました。
OBJECT 行の右側の値が END_OBJECT の RHV と同じであることを保証できるルールを作成する必要があります。pyparsing
しかし、それをルールに入れることはできないようです。両方が構文的に有効な値であることは確認できますが、余分な手順を実行して値が同一であることを確認することはできません。
- これが文脈依存の文法であるという私の直感は正しいですか? これは、この問題を説明するために使用すべきフレーズですか?
- これが理論的な意味でどのような種類の文法であっても、
pyparsing
この種の構造を処理できますか? - それを処理できない場合
pyparsing
、それを処理できる別の Python ツールはありますか? ( /ply
の Python 実装) はどうですか?lex
yacc