0
"%Header is not valid directive"という問題が発生しています。BisonとFlexヘッダーの指示エラー
これは.Yです:
%header{
#include "yystype.h"
#include<stdio.h>
#include"analex.h"
extern int yylex(void);
extern char *yytext;
extern int linea;
extern FILE *yyin;
void yyerror(const char *);
%}
%token ESCRIBIR
%token <valor> NUMERO
%type <valor> expr term fact
%define PURE
%define STYPE YY_parse_STYPE
%%
entrada : instrucciones
;
instrucciones : instruccion | instrucciones instruccion
;
instruccion : escritura
;
escritura : ESCRIBIR '(' expr ')' ';'
{printf("La expresion vale: %i\n",$3);}
;
expr : expr '+' term
{$$ = $1+$3;}
| expr '-' term
{$$ = $1-$3;}
| term {$$ = $1;}
;
term : term '*' fact
{$$=$1*$3;}
| term '/' fact
{$$ = $1/$3;}
| fact
{$$=$1;}
;
fact : '(' expr ')'
{$$=$2;}
| NUMERO
{$$=$1;}
;
%%
void yyerror(char *s)
{
printf("ERROR: (%s)\n",yytext);
}
.L
%header{
#include "yystype.h"
%}
%{
#include <stdlib.h>
#include "anasint.h"
%}
letra [A-Za-z]
digito [0-9]
numero {digito}+
blanco [ \t\n]
%define LEX_PARAM YY_parse_STYPE *yylval
%%
{blanco}* {;}
{numero} {yylval->valor=atoi(yytext); return(NUMERO);}
escribir {return(ESCRIBIR);}
. {return(yytext[0]);}
%%
そしてyystype.h
#ifndef _YYSTYPE_H
#define _YYSTYPE_H
typedef union{
int valor;} YY_parse_STYPE;
#endif
してください誰かがエラーがここで何を知っている場合は、お気軽に私に教えて。バイソンのバージョンは2.4.1であり、私はあなたがメッセージを取得している理由だと思う2.5
これはバイソンのものです。++、私は信じています。そしておそらく他のいくつかのフォーク – rici
これは本から来ています。 .yファイル私は教師が私に与えた本からそれを得た、私はちょうどコードをコピー/ペーストする、私は本がそれのように実行されると述べたので何も変更していない。私はこれをチェックします、どうもありがとうございます。 –