我正在做一个学校项目,遇到了一些麻烦。
我有这个yacc语法
FILE : '{' GEOMETRY '}'
;
GEOMETRY : key_type ':' value_point ',' key_coordinates ':' PONTO
;
PONTO : VETOR_MIN2 { printf("%s", $<str>1); }
;
VETOR_MIN2 : '[' numero ',' numero ']'
;
当我在非终端PONTO中创建该printf时,只会得到以下内容: [
但是我应该得到这样的东西: [20,10] 这里缺少什么?请帮忙。 感谢您的宝贵时间。
答案 0 :(得分:0)
规则的语义值是运行规则的动作后驻留在$$
中的值。如果规则没有任何操作(例如VECTOR_MIN2
),则默认操作为$$ = $1;
(除非没有$1
或类型不匹配,其中如果没有默认操作)。
如果您希望VECTOR_MIN2
产生不同的值,则需要添加一个动作并将不同的值分配给$$
。