かなり苦戦

phpLexの作者はどういう環境でFlexyを開発してるんだ??


CVSからphpLex.exeを取ってきたけどそのままじゃ動かず。
Windowsで実行したら
This program cannot be run in DOS mode.
とか出るし。


これは再コンパイルだなーと思ってLinuxにDLするもmakeが通らず。
makefileよく見たら、何やらWindows用っぽい。
mcsでやろうにもオプションがよくわからんしパスの書き換えもめんどい。

なのでWindowsに展開してCygwinでmake。しかし通らず。。


makefileの通りにbinフォルダを作って、
TEST = examples
と変更して、
CSC = /c/WINDOWS/Microsoft.NET/Framework/v1.1.4322/csc
とフルパスを記述してcsc を全て ${CSC} に置換。
(リンクを張ってない普通の人は /cygdrive/c/WINDOWS/〜〜とする)


最後の方でもエラーがでるので
${CSC} /o /t:exe /out:$(BIN)\lex.exe $(SRCLIST)
と書き直す。


やっとこさmakeが通った。
(make ..\\bin\\lex.exe とか変な指定の仕方したけども)



で、やっと本題に戻ってくるわけです。
Tokenizer.lexをカレントに置いて
bin/lex.exe Tokenizer.lex


!!
生成されましたよTokenizer.phpが。
長かった。。



しかし何が起こってるかは全くわからず、文法も分からない。
作者が自分のためだけに作った(?)のか日本語のドキュメントはもとよりWeb全体で
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=phpLex.exe&num=100
こんな感じ。。



さてはて。
見様見真似で何とかなるんだろーか。



# 追記

ソースに書いてるように
mono phpLex.exe
とかやったんだけどダメで、WindowsC#コンパイルしたらWindowsでは
phpLex.exe Tokenizer.lex
で起動できるのはいいとして、
なんでLinuxでも
phpLex.exe Tokenizer.lex
で起動できるんだ。
mono は要らんのかぃ。。


まったく仕組みが理解不能なんだけども・・
なんでWindowsコンパイルしたファイルがLinuxでもそのまま起動できるんだろ??
凄く不思議・・。