【发布时间】:2016-08-19 05:19:30
【问题描述】:
我对语法定向翻译和使用 Bison 编写的解析器感到困惑。 (主要的困惑是用 Bison 编写的解析器是否已经包含语法定向翻译器。)我将括号中的上述句子改写为(Bison 如何实现语法定向翻译,是否通过附加例如 $$ = $1 + $3)
link 这么说
动作中的C代码可以通过构造$n来引用规则匹配的组件的语义值,$n代表第n个组件的值。正在构造的分组的语义值是 $$。 (Bison 在将操作复制到解析器文件时,会将这两种结构转换为数组元素引用。)
而且在book 的第 5 章(语法定向分析)中说
语法 + 语义规则 = 语法定向翻译
PRODUCTION SEMANTIC RULE
???? →????1 + ???? {????.???????????????? = ????1.???????????????? ┤| ????.???????????????? |′+′}
从Flex and Bison一书中查看简单解析器的以下翻译规则sn-p
%%
E: F default $$ = $1
| E ADD F { $$ = $1 + $3; }
| E SUB F { $$ = $1 - $3; }
;
%%
.code 是否等同于 $$ 我很困惑。语法导向分析与语义分析相同吗?我越读越困惑。有人请帮我解决这个问题。
【问题讨论】:
标签: parsing bison semantic-analysis