gpt4 book ai didi

c - 在 Bison 中拆分语法规则

转载 作者:行者123 更新时间:2023-11-30 14:30:11 24 4
gpt4 key购买 nike

我有一个 Bison 规则

block: LBRACE  { some code } decls stmts RBRACE {more code } 
;

问题出在“更多代码”部分,我有

$$ = $3 ;

基本上,我希望 block 的返回值是stmts。当我这样做时,Bison 说“$3 block 没有类型。”如果我删除包含一些代码的代码块并将其粘贴到后一个 block 中, Bison 不会提示。我将 stmts 及其所有衍生物声明为类型。那么这是Bison不允许的吗?我可以更改语法来适应这一点,但仅使用上面的内容会很乏味并且容易得多。

最佳答案

使用$4引用stmts。既然你有 mid-rule action ,所有进行中的符号编号都会偏移,因为操作本身可以有一个值。

对应的元件编号为:
$1 LBRACE
$2 { 一些代码 }
$3 decls
$4 stmts
$5 RBRACE
$6 { 更多代码 }

关于c - 在 Bison 中拆分语法规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3592747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com