initial.lの作業
%{
#include "initial.tab.h"
%}
%%
”initial” {return INITIAL;}
[()] {return yytext[0];}
.
%%
int yywrap(void)
{
return(1);
}
initial.yの作業
%{
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#define YYDEBUG 1
char *filename;
FILE *fp;
%}
%token INITIAL
%%
initial:'(' INITIAL ')'
;
%%
main(argc,argv)
int argc;
char **argv;
{
extern FILE* yyin;
if (argc >1 && !strcmp(argv[1],"-d"))
{
yydebug =1;
argc--;
argv++;
}
if(argc >1 )
{
if((yyin = fopen(argv[1],"r"))==NULL)
{perror(argv[1]);
exit(1);
}
filename=argv[1];
}
else
filename="(stdin)" ;
if(!yyparse())
printf("Done!\n");
else
printf("Fail!\n");
}
データファイル:(初期)
2つの手順は私の手順の一部です。「initial」という言葉はinitial.lで定義されているキーワードですが、flex自体のキーワードでもあるようです。「初期」部分の構文構造を表現する方法は、正しくテストされています。出力:構文エラー失敗!私の完全な手順の出力:zhou:318.19-318.25:構文エラー、予期しない$ end、CHANGEまたはSTEADYまたはINITIALを期待
そのような問題を解決する方法は?