Parsing 使用自底向上解析为给定输入生成的输出

Parsing 使用自底向上解析为给定输入生成的输出,parsing,compiler-construction,bottom-up,Parsing,Compiler Construction,Bottom Up,我试着解决这个问题,答案是选项c。但在少数教科书中给出的答案是选项b。我不知道正确的答案是什么?请帮帮我 GAAAAT是正确答案;它是由解析器产生的输出,解析器遵循翻译规则中的操作顺序(其中一些发生在中间规则中) Yacc/bison就是这样一个解析器,它使验证变得非常容易: %{ #包括 #包括 无效错误(常量字符*消息){ fprintf(stderr,“%s\n”,msg); } int yylex(无效){ int-ch; 而((ch=getchar())!=EOF){ if(isaln

我试着解决这个问题,答案是选项c。但在少数教科书中给出的答案是选项b。我不知道正确的答案是什么?请帮帮我

GAAAAT
是正确答案;它是由解析器产生的输出,解析器遵循翻译规则中的操作顺序(其中一些发生在中间规则中)

Yacc/bison就是这样一个解析器,它使验证变得非常容易:

%{
#包括
#包括
无效错误(常量字符*消息){
fprintf(stderr,“%s\n”,msg);
}
int yylex(无效){
int-ch;
而((ch=getchar())!=EOF){
if(isalnum(ch))返回ch;
}
返回0;
}
%}
%%
S:'p'{putchar('G');}p
P:q'{putchar('A');}q
P:'r'{putchar('T');}
P:%empty{putchar('E');}
Q:'s'{putchar('A');}P
Q:%empty{putchar('O');}
%%
内部主(空){
yyparse();
putchar('\n');
}
$bison-o gate.c gate.y
$gcc-std=c99-Wall-o门c

$./gate
GAAAAT
是正确答案;它是由解析器产生的输出,解析器遵循翻译规则中的操作顺序(其中一些发生在中间规则中)

Yacc/bison就是这样一个解析器,它使验证变得非常容易:

%{
#包括
#包括
无效错误(常量字符*消息){
fprintf(stderr,“%s\n”,msg);
}
int yylex(无效){
int-ch;
而((ch=getchar())!=EOF){
if(isalnum(ch))返回ch;
}
返回0;
}
%}
%%
S:'p'{putchar('G');}p
P:q'{putchar('A');}q
P:'r'{putchar('T');}
P:%empty{putchar('E');}
Q:'s'{putchar('A');}P
Q:%empty{putchar('O');}
%%
内部主(空){
yyparse();
putchar('\n');
}
$bison-o gate.c gate.y
$gcc-std=c99-Wall-o门c

$./Gate您有多本教科书有相同的示例?两本教科书中对此问题给出的答案不同。您有多本教科书有相同的示例?两本教科书中对此问题给出的答案不同。