我遇到此问题"%标头不是有效指令"。
这是.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和flex 2.5