我对语法定向翻译和使用 Bison 编写的解析器感到困惑。(主要的困惑是用 Bison 编写的解析器是否已经包含语法定向翻译器。)我将括号中的上述句子改写为(Bison 如何实现语法定向翻译,是否通过附加例如 $$ = $1 + $3)
这个链接说
动作中的C代码可以通过$n结构引用规则匹配的组件的语义值,$n代表第n个组件的值。正在构造的分组的语义值是 $$。(当 Bison 将动作复制到解析器文件中时,Bison 会将这两种结构都转换为数组元素引用。)
而且在本书的第 5 章(语法导向分析)中说
语法 + 语义规则 = 语法定向翻译
PRODUCTION SEMANTIC RULE
→1 + {. = 1. ┤| . |′+′}
查看Flex 和 Bison一书中简单解析器的以下翻译规则片段时
%%
E: F default $$ = $1
| E ADD F { $$ = $1 + $3; }
| E SUB F { $$ = $1 - $3; }
;
%%
是不是.code
等于让$$
我很迷茫。语法导向分析与语义分析相同吗?我越读越困惑。有人请帮我解决这个问题。