내 CUP 파서가 EOF 토큰을 구문 분석하는 데 문제가 있습니다. 이 같은 존재하는 무언가가 나의 Jflex 코드에서 %cup
플래그를 사용하는 것은 의미 문서에 읽기 :CUP에서 EOF 토큰 구문 분석
%eofval{
return new java_cup.runtime.Symbol(<CUPSYM>.EOF);
%eofval}
%eofclose
이 모두가 좋은이 잘, 그러나 나는 (내 문법 CUP를 다음의 첫 번째 규칙을하려고 할 때 파일) :
program ::= program declaration EOF
| /* Empty */
;
EOF가 CUP에 의해 선언되지 않는다는 오류 메시지가 나타납니다. 터미널 EOF를 정의하지 않고,
Fatal : JavaCUP Internal Error Detected: Duplicate terminal (EOF) created
enter code here
그러나, 및 :
terminal EOF;
아니오, 다음 CUP 저를 알려주기 때문에 :
Error : java_cup.runtime.Symbol "EOF" has not been declared
Allrighty는, 그래서 내 CUP 파일에 다음을 추가 컵이 생성되는 sym.java
클래스에서보세요 :
public static final int EOF = 0;
그래서이 문제를 해결하는 방법에 대해 매우 분실했습니다. 두 가지 모두에 대한 설명서는이 문제에 대해 실제로 모호합니다.
편집 : EOF 토큰을 구문 분석하려는 주된 이유는 최종적으로 내 기호 테이블을 디버깅 목적으로 인쇄하기 때문입니다.
내 EOF가 구문 분석 된 후 실행되는 코드 블록을 삽입하는 방법에 대한 아이디어가 있습니까? 디버깅 목적으로 심볼 테이블 등을 인쇄하고 싶습니다. –