我正在做一个学校项目,我遇到了一些麻烦。
我有这个雅克

FILE        : '{' GEOMETRY '}'
            ;

GEOMETRY    : key_type ':' value_point ',' key_coordinates ':' PONTO
            ;


PONTO       : VETOR_MIN2 { printf("%s", $<str>1); }
            ;

VETOR_MIN2  : '['  numero ',' numero ']'
            ;

当我在非终端PONTO上打印时,我只得到:[
但我应该得到这样的东西:[20,10]
这里少了什么?请帮忙。
谢谢你的时间。

最佳答案

规则的语义值是运行该规则的操作后驻留在$$中的值。如果规则没有任何操作(与VECTOR_MIN2的情况一样),则默认操作为$$ = $1;(除非没有$1或类型不匹配,在这种情况下没有默认操作)。
如果希望VECTOR_MIN2产生不同的值,则需要添加一个操作并为$$分配不同的值。

关于c - YACC无法从后继节点获取值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56295899/

10-11 21:18