yacc 入力ファイルを作成しています。これが私のコードです
%{
#include "stdio.h"
#include "string.h"
#include "exph.asc"
%}
%union {
int value;
struct symtab *symlink;
}
%token NAME
%token EXPR
%%
x
: x dot
| x p
| x index
| x b
;
b
: '[' EXPR ']' b1 | Ɛ
;
b1
: '[' EXPR ']'
Ɛ
;
dot
: '.' NAME { $$= $2->value; $2->initialized = YES; }
;
index
: '[' EXPR ':' EXPR ']'
;
p
: '(' p
| NAME p1 { $$= $1->value; }
;
p1
: ',' p
| ')'
| Ɛ
;
x
: NAME { $$= $1->value; $1->initialized = YES; }
;
%%
struct symtab *symlook(char *str) {
char *p;
struct symtab *sp;
for(sp = symtab; sp< &symtab[MAX_SYM]; sp++){
if(sp->name && !strcmp(sp->name,str)) /* return pointer */
return sp;
if(!sp->name) { /* create new variable */
sp->name = strdup(str);
sp->initialized = NO;
return sp;
}
}
}
main()
{
return(yyparse());
}
yyerror(s)
char *s;
{
fprintf(stderr, "%s\n",s);
}
yywrap()
{
return(1);
}
yacc を使用してこのコードをコンパイルすると、このエラーが発生します
yacc: e - 「expy.asc」の 1 行目、予期しないファイルの終わり
私が間違いを犯している場所で誰かが私を助けることができますか?