野牛说选项无效——

野牛说选项无效——

我在 Mac OS Maverick 中使用 flex 和 bison。我可以在 bash 中发送 bison 和 flex 命令,没有任何问题。但是当我尝试使用 shell 脚本发出命令时。我收到这个错误。

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/bison: invalid option -- 
Try `/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/bison --help' for more information.
flex: can't open minus.l
clang: error: no such file or directory: 'minus.tab.c'
clang: error: no such file or directory: 'lex.yy.c'
: No such file or directoryut

脚本如下:

bison minus.y -d
flex minus.l
gcc minus.tab.c lex.yy.c -lfl -ly

答案1

您的脚本有 DOS 行结尾。bash将回车符解释为常规字符。flex实际上是在尝试打开minus.l\r,而不是minus.l,并注意最后一个奇怪的错误消息:

: No such file or directoryut

应该有一个路径名,后跟: No such file or directory,但由于路径名以 结尾\r,因此光标移回行首,并且错误消息将覆盖路径 ( ut) 中除最后两个字符之外的所有字符。

使用 删除回车符dos2unix

答案2

您的脚本缺少标题

#!/bin/bash
bison minus.y -d
flex minus.l
gcc minus.tab.c lex.yy.c -lfl -ly

如果这不能解决问题,您可能需要查看行(结尾)(使用od -c或)以确保文件中xxd没有隐藏字符(例如 CR/ ^M/ )。\r

相关内容