c - YACC 未从后继节点获取值

标签 c compiler-construction bison yacc

我正在做一个学校项目,但遇到了一些麻烦。

我有这个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] 这里缺少什么?请帮忙。 感谢您的宝贵时间。

最佳答案

规则的语义值是在运行该规则的操作后驻留在 $$ 中的值。如果规则没有任何操作(如 VECTOR_MIN2 的情况),则默认操作为 $$ = $1;(除非没有 $1 或类型不匹配,在这种情况下没有默认操作)。

如果您希望 VECTOR_MIN2 产生不同的值,您需要添加一个操作并为 $$ 分配不同的值。

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

相关文章:

c - gcc "–Werror: No such file"指的是目标还是 Werror 用法?

c - 优化字符串指针数组

c++ - 如何使用 flex 和 bison 解析非常大的缓冲区

c - 随机 malloc 崩溃?

c - 关于c中函数指针的2个问题

yacc 文件中无法识别的 c 语句

c++ - 编译器怎么会认为这个变量不是常量?

c++ - typedef 上与 CRTP 相关的编译器错误

bison - 改革语法以消除移位减少 if-then-else 中的冲突

c - Bison 多个具有属性的非终结符