Scalasパーサーのコンビネータと再帰的な解析については、少なくとも私の見解では難しい質問があります。親要素というレベル番号に基づく再帰的な構文解析
Record(data) -> (Record(subData),Record(subData2))
Record(subData) -> (Char(tmp),Char(tmp1))
Record(subData2) -> (Char(tmp2),Char(tmp3))
意味:私は次のようにASTを構築したい。このシナリオでは
dcl 1 data,
3 subData,
5 tmp char(15),
5 tmp1 char(15),
3 subData2,
5 tmp2 char(10),
5 tmp3 char(5);
:私は現在、このようなPL/1の構造を解析することができるはず小さなパーサを構築します子どもたちとつながなければならない。私の世界では、これは何らかの形で再帰的なパーサになるはずですが、私の問題は、どのようにしてサブレベルでのダウンを止めるかを制御する方法です。たとえば、 "3つのサブデータ"レコード構造を解析する場合、それ自身ではないレベル番号、この場合は "3 subData2"を打つと停止する必要があります。
誰かがこの問題を助けたり、良い方向に向いてくれますか? 現在の解決策は、未接続構造を解析した後にこの問題を解決することです。
ありがとうございます。
よろしくステファン
どのようにレコード構造がであるもののレベルを知っていますか?あなたの例では、それは識別またはレコードのタイプ(tmpとsubData)のどちらかです。いずれにせよ、パーザーは私にはまっすぐに見えるので、うまくいきませんでしたが、あなたが試みたことについてより具体的にできる方が好きです。 –