我使用的是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 :(得分:0)
表示sc1适用于ANTLR3_COMMON_TOKEN_struct *
类型你可以使用 {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