私は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\r
minus.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