2014-08-29 2 views
0

반복의 텍스트를 얻을 방법, 문법 조각이 같다 :ANTLR3 - 나는 ANTLR3 C 버전을 사용하고 토큰

a_cmd : sub_cmd+ 'abc' (sub_cmd)? 
     ; 

지금 나는 모든 첫번째 sub_cmd의 전체 텍스트를 얻을 필요가, 반복 하나. 나는이 일을 시도 :

a_cmd : (sc1=(sub_cmd+)) 'abc' (sub_cmd)? 
     {add_text($sc1.$text)} 
     ; 

하지만 GCC에서 컴파일 에러를 얻을 :

request for member 'ctx' in 'sc1', which is of non-class type 'ANTLR3_COMMON_TOKEN_struct*' 

그래서이 작업을 수행하는 올바른 방법은 무엇입니까?

답변

0

는 SC1 유형의 ANTLR3_COMMON_TOKEN_struct입니다 말한다 *

당신은 (내가 add_text로 변경해야 {add_text ($ sc1-> toString())}

을 자세한 내용은 참조 http://www.antlr3.org/api/C/struct_a_n_t_l_r3___c_o_m_m_o_n___t_o_k_e_n__struct.html

+0

을 사용할 수 있습니다 $ sc1-> toString ($ sc1)을 사용하여 컴파일하지만 코드가 생성 된 줄에서 충돌합니다. 그 이유는 "sc1"이 null이라는 것입니다. –