多くの独立したファイルを分析するアナライザーを書いています。すべてのファイルの構造は同じです。ファイルには があり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
、抽象構文ツリーの代わりに , にすることができます)。
目的は、実際には各ファイルのできるだけ多くの手順を解析し、それらをできるだけ多く分析することです...
誰もそれを行う方法を知っていますか?