我正在寫一個分析許多獨立文件的分析器。所有的文件具有相同的結構:它有一個Initiation()
,然後是幾個過程。例如:解析中的異常處理
Sub Initiation()
...
End Sub
Sub procedure1()
...
End Sub
Sub procedure2()
...
End Sub
...
的Initiation()
引發的一切,然後每道工序的分析是獨立的。在分析它們之前,我需要理由來解析它們。我使用let procedures = Parser.main Lexer.token buf
來調用解析。如果一切順利,procedures
包含的程序的抽象語法樹:Initiation()
,procedure1()
等
然而,在目前階段,如果解析在分析過程引發錯誤,它返回一個Parser.Error
,並停止從解析整個文件。結果,麻煩程序之後的程序不能被解析。
我想要做的是在某個地方有一個錯誤處理,這樣let procedures = Parser.main Lexer.token buf
總是成功,即使在一部分過程中不能解析(在這種情況下,它的值可以是UnparseableProcedure
,而不是一個摘要語法樹)。
目的是真正解析多達每個文件的程序,然後分析它們儘可能多的...
有誰知道怎麼辦呢?