다음과 같은 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 번호 : 출력에서 SiNx로 + cosx + cosxcosx
보면 :
%{
#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);
}
입력 : + cosx
출력 SiNx로 코드의!
나는 $ 1를 인쇄하려고합니다. 그것의 인쇄 전체 입력 sinx + cosx – PramodHegde