toge's diary

コンピュータ関連の趣味をつらつらと。

MK script languageっていうのを見つけた

http://mk-script.sourceforge.jp/

なんでだか分かんないけどたまたま見つけました。
そしてコンパイルしようとして見事にハマり中。

lexer->stream.current =
  lexer->stream.getc(lexer->stream.stream );

こんな簡単なコードが通らないので何事と思ってプリプロセス結果を見たら、こんな風になってた。

lexer->stream.current =
  lexer->stream._IO_getc (lexer->stream.stream);

おそるべしglibc。きっちりstdio.hにこんな定義がありました。

/* The C standard explicitly says this is a macro, so we always do the
   optimization for it.  */
#define getc(_fp) _IO_getc (_fp)

うーん、まあ分かるんだが、getcは自前のメソッド名の中に入れると痛い目を見るわけね。覚えておこう。
肝心のMK script languageはこれのせいでまだ遊べていない。

こうやればいいらしい

274c274
<                   lexer->stream.getc(
---
>                   (lexer->stream.getc)(
311c311
<           lexer->stream.getc(
---
>           (lexer->stream.getc)(
316c316
<           lexer->stream.getc(
---
>           (lexer->stream.getc)(