bison diz opção inválida -

1

Estou usando flex e bison no Mac OS Maverick. Eu posso enviar o comando bison e flex no bash sem nenhum problema. Mas quando tentei emitir o comando usando um script de shell. Eu tenho esse erro.

/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

O script é o seguinte:

bison minus.y -d
flex minus.l
gcc minus.tab.c lex.yy.c -lfl -ly
    
por wannik 02.11.2014 / 10:03

2 respostas

2

Seu script tem finais de linha do DOS. bash está interpretando o retorno de carro como um caractere regular. No momento, flex está tentando abrir minus.l\r , não minus.l e percebe a última mensagem de erro:

: No such file or directoryut

Deve haver um nome de caminho, seguido por : No such file or directory , mas como o nome do caminho termina em \r , o cursor é movido de volta para o início da linha ea mensagem de erro substitui todos os últimos dois caracteres. o caminho ( ut ).

Remova os retornos de carro usando dos2unix .

    
por 02.11.2014 / 14:43
1

Seu script está sem um cabeçalho

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

Se isso não resolver o problema, talvez você queira examinar a linha (finais) (usando od -c ou xxd ) para garantir que não haja caracteres ocultos (como CR / ^M / \r ) no arquivo.

    
por 02.11.2014 / 10:14

Tags