在第2.1.2节关于rpcalc的语法规则的野牛手册中,写道:
在每个操作中,伪变量$$代表规则将要构造的分组的语义值.为$$分配值是大多数操作的主要工作
这是否意味着$$用于保存规则的结果?喜欢:
exp exp '+' { $$ = $1 + $2; }
Run Code Online (Sandbox Code Playgroud)
什么是$$开始分配后的典型用法?
这是否意味着
$$用于保存规则的结果?喜欢:
是的。
$$开始分配后的典型用法是什么?
通常,您将不再需要该值。Bison 在内部使用它来传播值。在您的示例中,$1和$2是两个exp产生式的各自语义值,也就是说,它们的值是exp通过设置其 $$变量在语义规则中的某处设置的。
是的,$$用于保存规则的结果.在被分配之后,它通常变成$x一些更高级别(或更低优先级)的规则.
考虑(例如)输入之类的2 * 3 + 4.假设你遵循正常的优先规则,你会有一个类似的动作:{ $$ = $1 * $3; }.在这种情况下,这将用于该2 * 3部分,显然足够,分配6给$$.然后你就可以{ $$ = $1 + $3; }处理这个添加了.对于此操作,$1将为6您提供$$在乘法规则中指定的值.
| 归档时间: |
|
| 查看次数: |
4858 次 |
| 最近记录: |