gpt4 book ai didi

fedora - fatal error :y. tab.h:fedora 上没有这样的文件或目录

转载 作者:行者123 更新时间:2023-12-03 18:33:40 25 4
gpt4 key购买 nike

我在 VMware Workstation 上运行我的 Fedora .我有一个 lex 和 yacc 程序。程序编译工作正常,但是当我通过 gcc y.tab.c lex.yy.c -ll 运行程序时它给 fatal error: y.tab.h: No such file or directory .

相同的程序与 一起工作正常红帽但不在 在 VMware 上运行的 fedora .

请给出一些建议。

该程序是后修复程序的中缀。

lex 程序:---->

  %{
#include<string.h>
#include"y.tab.h"
FILE *fp,*yyin;
%}

%%
"*"|"/"|"+"|"-"|"("|")" {return yytext[0];}
[0-9]+ {yylval.name=(char*)malloc(yyleng+1);
strcpy(yylval.name,yytext);
return num;}
\n {return(0);}
[a-zA-Z][a-zA-Z]* {yylval.name=(char*)malloc(yyleng+1);
strcpy(yylval.name,yytext);
return ID;}
. {}
%%

int yywrap()
{
return 1;
}

yacc 程序:------->
%{
#include<stdio.h>
#include<string.h>

%}
%union
{
char *name;
}
%token<name>num ID
%type<name>E
%left'+''-'
%left'*''/'
%nonassoc UMINUS
%%
S:E{printf("\n%s",$1);}
;
E:E'*'E {strcpy($$,strcat(strcat($1,$3),"*"));}
|E'/'E {strcpy($$,strcat(strcat($1,$3),"/"));}
|E'+'E {strcpy($$,strcat(strcat($1,$3),"+"));}
|E'-'E {strcpy($$,strcat(strcat($1,$3),"-"));}
|ID
|num
|'-'E%prec UMINUS {strcpy($$,strcat($2,"UMINUS"));}
|'('E')'{strcpy($$,$2);}
;
%%

main()
{
yyparse();
}
int yyerror(char *s) {fprintf(stderr,"%s\n",s);}

最佳答案

这可能是您用于调用 Yacc、Lex 和 GCC 的确切命令的问题,而不是您在此处包含的输入文件的问题。

YACC(这可能真的是一个程序叫野牛即使您使用命令 YACC )生成两个文件:一个解析器( y.tab.c的)和另一个文件( y.tab.h )与扫描仪需要的定义。这里的问题是 GCC 找不到那个文件, y.tab.h

检查这些事情:

该文件实际上是生成的。您可能必须将标志 -d 提供给 Bison/Yacc。

该文件名为 y.tab.h 。该名称可能因程序版本而异,如果您使用命令 bison 或命令 yacc 启动 Bison。

该文件位于 GCC 可以找到它的目录中。

关于fedora - fatal error :y. tab.h:fedora 上没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19524457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com