Bisonはオプションが無効であると言います -

Bisonはオプションが無効であると言います -

私はMac OS Maverickでflexとbisonを使用しています。 bashから問題なくbisonコマンドとflexコマンドを送信できます。ただし、シェルスクリプトを使用してコマンドを実行しようとすると、このエラーが発生します。

/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\rminus.l

: No such file or directoryut

後ろにパス名が必要: No such file or directoryですが、パス名がで終わるため、カーソルは行の\r先頭に戻り、エラーメッセージはutパス()の最後の2文字を除くすべての文字を上書きします。

削除キャリッジ戻り文字を使用してくださいdos2unix

答え2

スクリプトにヘッダーがありません。

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

それでも問題が解決しない場合は、行(終了)を見て(またはを使用して)ファイルに隠された文字(CR / /など)がないことをod -c確認できます。xxd^M\r

関連情報