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경로( )의 마지막 두 문자를 제외한 모든 문자를 덮어씁니다.

삭제 캐리지 리턴 문자를 사용하십시오 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

관련 정보