2013-07-25 2 views
0

JAVACC를 사용하여 bnf 문법에 의해 정의 된 일부 문자열을 초기 비 터미널 G로 구문 분석합니다. TokenMgrError에 의해 발생한 오류를 잡아 내고 싶습니다. 발견을 위해,JAVACC에서 MSGTokenError 무시하기

  1. 입력의 일부 접두사 G를 만족하는 경우가 아니라 기호를 모두 입력으로부터 읽어 정상적으로이 경우를 고려 AST를 반환 : 특히 , 나는 다음과 같은 두 가지 경우를 처리 할 G() 호출로 접두어를 붙입니다.
  2. 입력에 G를 만족하는 접두사가 없으면 G()에서 null을 반환합니다.

현재이 경우 각각 TokenMgrError가 표시됩니다. 생성 된 파일을 수정하기 시작했습니다. 즉, 오류를 예외로 변경하고 적절한 try/catch/throws 문을 추가하기 시작했지만 지루한 것으로 나타났습니다. 또한 JAVACC에서 생성 된 수정 된 파일의 자동 생성이 작동하지 않습니다. 이 작업을 수행하는 더 똑똑한 방법이 있습니까?

+2

코드 샘플을 추가 할 수 있습니까? TokenMgrErrors 대신 Exceptions에 대해서는 http://www.engr.mun.ca/~theo/JavaCC-FAQ/javacc-faq-moz.htm#tth_sEc3.19를 참조하십시오. – bcause

답변

1

당신은 항상 최종 규정으로

<*> TOKEN : { <UNEXPECTED: ~[] > } 

을 포함하여 모든 TokenMgrErrors을 제거 할 수 있습니다. 이것은 당신이 일반적으로보다 쉽게 ​​다룰 수있는 문법 레벨로 모든 이슈를 푸시합니다.