Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
block: "{" { //push scope;} multi_stmt "}" { //pop scope $$=new ASTNode_Block($2,..........) }
我正在尝试在野牛中实现块结构。但是,我在这里访问 $2 时遇到了麻烦(来自 multi_stmt 的返回值)
ps:它的目的是不使用“|” 将它们分开,因此我可以让它们按顺序执行。
中间规则操作也有数字(但默认情况下没有返回类型)。所以 的值multi_stmt是$3,不是$2。
multi_stmt
$3
$2
$1是左大括号(我认为应该是'{',而不是"{"-在野牛中,它们是不同的--),$2是中间规则动作,$3是multi_stmt并且$4是右大括号。
$1
'{'
"{"
$4
尝试删除 second {in line "{" {。如果我理解正确你打算定义一个语法规则{ multi_stmt },那么第二个{是一个错误。
{
"{" {
{ multi_stmt }