0

多くの独立したファイルを分析するアナライザーを書いています。すべてのファイルの構造は同じです。ファイルには がありInitiation()、その後にいくつかの手順が続きます。例えば:

Sub Initiation()
...
End Sub

Sub procedure1()
...
End Sub

Sub procedure2()
...
End Sub

...

がすべてを開始し、各手順のInitiation()分析は独立しています。それらを分析する前に、それらを分析する理由が必要です。

main.ml私は解析を呼び出すために使用しlet procedures = Parser.main Lexer.token bufます。すべてがうまくいけばprocedures、プロシージャの抽象構文ツリーが含まれます: Initiation()procedure1()など。

ただし、現在の段階では、プロシージャの解析中に解析でエラーが発生した場合、 が返さParser.Errorれ、ファイル全体の解析が停止します。その結果、問題のある手順の後の手順を解析できません。

私がやりたいのは、エラー処理をどこかに置くことです。これlet procedures = Parser.main Lexer.token bufにより、プロシージャの一部の内部を解析できなくても、常に成功します (その場合、その値はUnparseableProcedure、抽象構文ツリーの代わりに , にすることができます)。

目的は、実際には各ファイルのできるだけ多くの手順を解析し、それらをできるだけ多く分析することです...

誰もそれを行う方法を知っていますか?

4

1 に答える 1