2
나는 모든 노력을 나는 다음과 같은 오류가 점점 계속 :Yacc에 오류가 요청하지 않은 구조 또는 조합
(라인) 20시 31분 : 오류 : 멤버에 대한 요청 '발'뭔가를 하지 구조 또는 조합
(라인) 22시 38분 오류 : 어떤 부재 요청 '브로'이 아닌 구조 또는 조합
(라인) 27 : 108 : 오류 : 회원 요청 '브로' 구조 나 노동 조합이 아닌 어떤 것에서
%{
#include "y.tab.h"
%}
%option noyywrap
%option yylineno
%%
0|[1-9][0-9]* {yylval.val=atoi(yytext); return NUM;}
\*|\+ {yylval.val=yytext[0]=='+'?0:1; return OP;}
\(|\) return yytext[0];
[ \t\n] ;
. yyerror("caracter invalido");
%%
그리고 Yacc에 :
%{
#include<stdio.h>
#include<stdlib.h>
extern int yylineno;
%}
%union {struct nodo{int val; struct nodo *next} *p; int val;}
%start lexp
%token<val> OP NUM
%type<p> larg arg
%type<val> exp
%%
lexp : lexp exp
|
;
exp : '(' OP larg ')' {struct nodo *p=$3->next;int val=$3->val;
while(p){
val=$2.val?(val+p->val):(val*p->val);
p=p->next;}
printf("R:%d\n", val); $$.val=val;}
;
larg : arg larg {$$=$1; $1->next=$2;}
| arg arg {$$=$1; $1->next=$2;}
;
arg : NUM {$$= (struct nodo *) malloc(sizeof(struct nodo)); $$->next=0; $$->val=$1.val;}
| exp {$$= (struct nodo *) malloc(sizeof(struct nodo)); $$->next=0; $$->val=$1.val;}
;
%%
int yyerror(char *s){fprintf(stderr, "linha %d: %s\n", yylineno,s); return 0;}
int main(){
yyparse();
return 0;
}
설명 해 주셔서 감사합니다. D – rJqnr