私はlexとyaccのための次のコードを持っています。私は印刷された声明に余分な価値を与えています。コードで何が間違っていますか?lexとyaccは三角法を解析します
レックスコード:
%{
#include <stdio.h>
#include "y.tab.h"
%}
%%
[ \t] ;
[+-] { yylval=yytext; return Sym;}
(s|c|t)..x { yylval=yytext; return Str;}
[a-zA-Z]+ { printf("Invalid");}
%%
int yywrap()
{
return 1;
}
のyaccコード:
%{
#include<stdio.h>
%}
%start exps
%token Sym Str
%%
exps: exps exp
| exp
;
exp : Str Sym Str {printf("%s",$1); printf("%s",$2); printf("%s",$3);}
;
%%
int main (void)
{
while(1){
return yyparse();
}
}
yyerror(char *err) {
fprintf(stderr, "%s\n",err);
}
入力: のSiNx + cosx
出力:出力で のSiNx + cosx + cosxcosx
外観コードの!
私は$ 1印刷しようとしています。その入力全体を印刷するsinx + cosx – PramodHegde