많은 독립 파일을 분석하는 분석기를 작성하고 있습니다. 모든 파일은 동일한 구조를 가지고 있습니다 : Initiation()
을 가지고 있으며 몇 가지 절차가 이어집니다. 예를 들어 :구문 분석시 예외 처리
Sub Initiation()
...
End Sub
Sub procedure1()
...
End Sub
Sub procedure2()
...
End Sub
...
Initiation()
는 각 절차의 분석은 독립적 인, 모든 것을 시작합니다. 그들을 분석하기 전에, 나는 그들을 파싱해야 할 필요가 있습니다.
main.ml
에서 나는 let procedures = Parser.main Lexer.token buf
을 사용하여 구문 분석을 호출합니다. 절차를 구문 분석하는 동안 구문 분석은 오류가 발생하는 경우
그러나, 현재의 단계에서, 그것은 Parser.Error
을 반환 등 Initiation()
, procedure1()
, 및 정지 : 모든 것이 잘된다면, procedures
는 추상 구문의 절차 나무를 포함 전체 파일을 구문 분석하는 중. 결과적으로 문제가 발생한 절차는 파싱 할 수 없습니다.
내가 뭘하고 싶은데, 어쩌면 let procedures = Parser.main Lexer.token buf
이 오류가 발생하여 절차의 일부분을 파싱 할 수 없다하더라도 (그 경우 그 값은 추상 대신에 UnparseableProcedure
일 수있다. 구문 트리).
목표는
가누구나 할 방법을 알고 있나요 ... 정말 각 파일에 대한 절차 많은 구문 분석하고 가능한 한 그들에게 많은 분석된다? LR 분석기에서 오류 복구