Ich habe den folgenden Code für Lex und Yacc. Ich bekomme ein paar zusätzliche Werte in der gedruckten Aussage kann jemand sagen. Was ist mit dem Code falsch?lex und yacc zu trigometrischen Ausdruck zu analysieren
Lex-Code:
%{
#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-Code:
%{
#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);
}
Input: sinx + cosx
output: sinx + cos x + cosxcosx
Blick auf die Ausgabe des Codes !!!
wenn ich 1 $ drucken versuche. es druckt die gesamte Eingabe sinx + cosx – PramodHegde