Parsing M4“;没有这样的文件或目录;。野牛

Parsing M4“;没有这样的文件或目录;。野牛,parsing,bison,yacc,Parsing,Bison,Yacc,这是我在skener.y文件中的代码 %{ #include <stdio.h> %} %token T_Int %% exp: T_Int { $$ = $1; } | exp exp '+' { $$ = $1 + $2; } | exp exp '-' { $$ = $1 - $2; } | exp exp '*' { $$ = $1 * $2; } | exp exp '/'

这是我在skener.y文件中的代码

 %{
#include <stdio.h>
%}
%token T_Int
%%

exp:      T_Int           { $$ = $1;         }
| exp exp '+'     { $$ = $1 + $2;    }
| exp exp '-'     { $$ = $1 - $2;    }
| exp exp '*'     { $$ = $1 * $2;    }
| exp exp '/'     { $$ = $1 / $2;    }

;
%%
%{
#包括
%}
%令牌T_Int
%%
exp:T_Int{$$=$1;}
|exp exp'+'{$$=$1+$2;}
|exp exp'-'{$$=$1-$2;}
|exp exp'*'{$$=$1*$2;}
|exp exp'/'{$$=$1/$2;}
;
%%

当我用comand“bison-dskener.y”编译它时,我得到错误“m4:没有这样的文件或目录”。当然,在提示符中键入命令时,我位于工作文件夹中。我不知道它是关于什么的?

这意味着你没有正确安装bison——你有一个可执行文件,但它缺少支持文件


返回并重新安装bison。

在Windows 7 PC上通过Setup.exe安装时,我遇到了相同的错误。解决方法是将
..\GnuWin32\bin
目录添加到我的路径中。(有趣的是,这是许多工具中第一个在不在我的路径中时出现问题的工具)

bison.exe文件中似乎有一些错误。 我用这个zip文件中的文件替换了它。


来源:

在我的例子中,我按照jfritz42的答案解决了它,但不得不将…\MinGW\bin路径也添加到我的系统环境变量中

...\MinGW\bin 下面是我案例的截图,希望能有所帮助:)


路径中任何文件夹的名称中都不应有空格。在我的例子中,我将它保存在C:/Program Files/GnuWin32/bin中,这导致了错误。然后我从程序文件中移动了文件夹,并将其放置为C:/GnuWin32/bin,它开始工作正常。

这是我遇到的部分问题。塔伦的解决方案是另一部分。我刚刚修改了批处理文件中调用BISON的路径。谢谢你的提示。