プロが教える店舗&オフィスのセキュリティ対策術

プログラミング初心者です。
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に修正などしても変化はありませんでした。
同じように出力するにはどうすれば良いのでしょうか?

A 回答 (1件)

WindowsとLinuxで挙動が違う、と言われてまず思いつくのが改行コードの違いです。


fileコマンドやnkf --guess等で確認するとどうなってますか?

CygwinはWindows上で動作していますが、基本はLinuxと同じLFを使います。
Windows専用FTPツールでtextモードでGetしたり、Windows用のテキストエディタで作成したりすると、CRLFになってしまいます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/12/05 21:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!