2013-06-08 3 views
0

Javacc을 사용하여 구문 분석하는 동안 입력 스트림을 수정할 수있는 방법이 있습니까? 구문 분석하는 동안 토큰을 문자열로 바꾸고 해당 문자열을 구문 분석하려는 유스 케이스가 있습니다. 예를 들어Javacc에서 입력 스트림을 수정하는 방법은 무엇입니까?

,

define var $x="2*2"; 
evaluate $x; 

그래서,이 경우 $의 X와 같은 $로 시작하는 토큰이 발생할 때, 내가 인라인 교체를하고 정상적으로 JavaCC에를 사용하여 분석한다 분석 중.

evaluate "2*2"; 

는 JavaCC에이 가능 :

그래서, 위의 예에서, 내가 인라인를 교체 한 후 다음 문을 구문 분석해야 의미? 입력 스트림을 수정할 수있어 특별한 토큰을 볼 때 입력 스트림에 인라인 대체를 추가 할 수 있습니까?

감사합니다.

답변

1

이렇게하는 일반적인 방법은 구문 분석을 시작하기 전에 사전 처리 단계를 수행하는 것입니다. 이것은 C 컴파일러가 일반적으로 작동하는 방법입니다. 파싱하는 동안이 작업을 수행해야하는 경우 사용자 정의 입력 스트림을 사용해야합니다.이를 수행하는 방법에 대한 설명서를 참조하십시오. 그리고 당신은 lookahead에 대해 매우 신중해야합니다.