gpt4 book ai didi

yacc - $$ = $1 + $3 在 yacc 中是什么意思?

转载 作者:行者123 更新时间:2023-12-04 00:03:54 30 4
gpt4 key购买 nike

莱克斯部分:

%%
[0-9]+ { yyval = atoi (yytext); return num; }
%%

雅克部分:
%token num 
%%
exp:num '+' num ; {$$ = $1 + $3;}
%%
  • 在这部分代码中做什么$$ , $1$2代表?
  • 如何打印 $$现在?
  • 如果我发送 5+9作为此程序的输入 59由 lex 程序识别,但是 + 呢? ?是符号+发送到 lex 或不?
  • 最佳答案

    exp:num ‘+’ num ; {$$ = $1 + $3;} 

    那些 $$ , $1 , $3 是规则中使用的符号和标记的语义值,按它们出现的顺序排列。语义值是您在 yylval 中在扫描器获得新 token 时获得的值。

    $1 具有第一个 num 的语义值。

    $3 具有第二个 num 的语义值

    $2 未使用,因为它是标记“+”。词法分析器确实将此标记发送给解析器。它还具有语义值“0”。

    $$ 标识“exp”的语义值(该规则下的整个分组)。

    你有没有尝试过:
    exp:num ‘+’ num ; {$$ = $1 + $3;printf("%d", $$);}

    另请检查: why does $1 in yacc/bison has a value of 0

    关于yacc - $$ = $1 + $3 在 yacc 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52821586/

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