2013-04-26 7 views
0

문법이없는 부분은 짧은 JavaCC에 코드 섹션의 끝) 수 : 문법없는 부분은 반환다음 JavaCC에

void fun(int i, int j) 
{ 
Hello world the value of i is ${i} 
    and j=${j}. 
} 

나는 m를 수정해야 어떻게

java.util.List<String_or_VariableReference> 

이 섹션을 처리하려면 javacc 파서가 필요합니까?

감사합니다.

답변

1

질문을 올바르게 이해하면 본질적으로 임의의 입력을 잠시 허용하고 언어로 다시 전환하고 싶습니다. 순전히 토큰을 기반으로 스위치를 만드는시기를 결정할 수 있다면 두 개의 어휘 적 상태를 사용하여 쉽게 수행 할 수 있습니다. 프로그래밍 언어의 기본 상태를 사용하십시오. 때 기본 상태로 다시 전환 보인다 "{"기본 상태에서 볼 수, a는 FREE 상태에서 다른 상태

TOKEN: { <LBRACE : "{" > : FREE } 

로 전환 "}"; 다른 문자가 보이면 파서로 전달하십시오. 당신이 모든 다른 문자로 뭔가를 할 자주 묻는 질문 5.2 질문을보고 싶다면

<FREE> TOKEN { <RBRACE : "}" > : DEFAULT } 
<FREE> TOKEN { <OTHER : ~["}"] > : FREE } 

파서에서는

void freeSection() : {} { <LBRACE> (<OTHER>)* <RBRACE> } 

을 가질 수 있습니다. http://www.engr.mun.ca/~theo/JavaCC-FAQ

"$ {i}"와 같은 변수 참조를 FREE 상태로 캡처하려면 그럴 수도 있습니다. 추가

<FREE> TOKEN { <VARREF : "${" (["a"-"Z"]|["A"-"Z"])* "}" > }