• 締切済み

windowsとlinuxでのlexの実行結果の差

プログラミング初心者です。 lexでプログラムを作成しています。 centOSでlexのプログラムを作製し、コンパイルして実行したら、全て理想通りに動作しました。 Makefileと実行結果を以下に示します。 **Makefile** CC = cc y.tab.c lex.yy.c YACC = yacc -d LEX = lex all : parser y.tab.c y.tab.h : parser.y $(YACC) parser.y lex.yy.c : scanner.l $(LEX) scanner.l parser : y.tab.c lex.yy.c $(CC) -lfl -o parser clean : rm y.tab.c rm y.tab.h rm lex.yy.c rm parser **実行結果** program is inputted. ***initial call*** PL0A var is inputted. n ***insert call*** =name= =address= =kind= n 10 global sum ***insert call*** =name= =address= =kind= n 10 global sum 10 global ***lookup call*** ==look== =name= =kind= n n global ***lookup call*** ==look== =name= =kind= sum sum global ***lookup call*** ==look== =name= =kind= n n global ***lookup call*** ==look== =name= =kind= sum sum global ***lookup call*** ==look== =name= =kind= n n global ***lookup call*** ==look== =name= =kind= sum sum global ***lookup call*** ==look== =name= =kind= n n global ***lookup call*** ==look== =name= =kind= n n global このプログラムを、windows7のcygwin(フルインストール)下で、コンパイルして実行しました。 Makefileの中身は変更していません。 **実行結果** $ ./parser pl0a.p program is inputted. ***initial call*** PL0A var is inputted. n ***insert call*** n 10 global sum ***insert call*** sum 10 global ***lookup call*** ==look== sum global Error n sum global ***lookup call*** ==look== sum global Error sum sum global ***lookup call*** ==look== sum global Error n sum global ***lookup call*** ==look== sum global Error sum sum global ***lookup call*** ==look== sum global Error n sum global ***lookup call*** ==look== sum global Error sum sum global ***lookup call*** ==look== sum global Error n sum global ***lookup call*** ==look== sum global Error n sum global 全然違う結果になってしまいました。lexをflexに、ccをgccに修正などしても変化はありませんでした。 同じように出力するにはどうすれば良いのでしょうか?

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

WindowsとLinuxで挙動が違う、と言われてまず思いつくのが改行コードの違いです。 fileコマンドやnkf --guess等で確認するとどうなってますか? CygwinはWindows上で動作していますが、基本はLinuxと同じLFを使います。 Windows専用FTPツールでtextモードでGetしたり、Windows用のテキストエディタで作成したりすると、CRLFになってしまいます。

janneofworld
質問者

お礼

確認しましたが特に問題は無いようです。 根本的な解決とはなりませんが、xwindowを用いてlinux端末に接続して遠隔操作をすることでwindowsから実行することにしました。 ありがとうございました。