Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bnf 4美元从哪里来?_Bnf - Fatal编程技术网

Bnf 4美元从哪里来?

Bnf 4美元从哪里来?,bnf,Bnf,这是在: > > 4代码>代码>当只有右边的代码> 3 > /CUL>元素时,一个嵌入的动作(代码 {PLAXSER>>MeX= XSTATE;} /Cube >在规则的中间发生)作为元素来计数。所以有4个元素$1是终端GRAMPROG,$2是嵌入式操作,$3是非终端记住,$4是非终端stmtseq。($ 2的值是在嵌入动作中分配给$$的任何值。当前它将是垃圾。)< /P> < P>一个嵌入的动作(代码 {PLAXSER>>EXCEN= XSTATE;} /Cult>在规则的中间发生)作为一

这是在:


<> > <代码> > 4代码>代码>当只有右边的代码> 3 > /CUL>元素时,一个嵌入的动作(代码<代码> {PLAXSER>>MeX= XSTATE;} /Cube >在规则的中间发生)作为元素来计数。所以有4个元素$1是终端GRAMPROG,$2是嵌入式操作,$3是非终端记住,$4是非终端stmtseq。($ 2的值是在嵌入动作中分配给$$的任何值。当前它将是垃圾。)< /P> < P>一个嵌入的动作(代码<代码> {PLAXSER>>EXCEN= XSTATE;} /Cult>在规则的中间发生)作为一个元素来计数。所以有4个元素$1是终端GRAMPROG,$2是嵌入式操作,$3是非终端记住,$4是非终端stmtseq。(值$2是嵌入操作中分配给$$的任何值。目前它是垃圾。)

在幕后,yacc只支持生产结束时的操作。因此,当在一个产品的中间插入一个动作<代码> {Pr.PysS> Vex= xStand;}时,YACC(或者你使用的任何后代)拉出该动作并将其粘贴在一个空规则的结尾:
grammar: GRAMPROG $$1 remember stmtmseq
    {
        newPROG(block_end($3, $4));
        $$ = 0;
    }

$$1:
   {
       PL_parser->expect = XSTATE;
   }
(如果您的yacc变体支持转储详细语法,并且您这样做了,那么您将看到许多$$1、$$2等操作规则。)


在这种情况下,交错操作实际上不会将任何内容分配给
$
,但是如果分配了,
语法
规则可以访问值作为
$2

,yacc实际上只支持生产结束时的操作。因此,当在一个产品的中间插入一个动作<代码> {Pr.PysS> Vex= xStand;}时,YACC(或者你使用的任何后代)拉出该动作并将其粘贴在一个空规则的结尾:
grammar: GRAMPROG $$1 remember stmtmseq
    {
        newPROG(block_end($3, $4));
        $$ = 0;
    }

$$1:
   {
       PL_parser->expect = XSTATE;
   }
(如果您的yacc变体支持转储详细语法,并且您这样做了,那么您将看到许多$$1、$$2等操作规则。)

在这种情况下,交错操作实际上并没有将任何内容分配给
$
,但如果分配了,则
语法
规则可以将该值作为
$2
进行访问