Hello Yacc & Lex World

最近ちまちまとyacc/lex(実際はbison/flex)を触っているのですが、やたらと苦労しています。真面目に学校に行ってなかったのが悔やまれますが、愚痴っていても仕方が無いのでメモ書きです。

ここでは以下の様なTinyCモドキのコードをyaccとlexで扱ってみます。

main()
{
    var i;
    var s;
    s = 0;
    i = 0; 
    while(i < 10){
	  s = s + i;
	  i = i + 1;
    }
    println("s = %d",s);
}

TinyCについてはコチラのページを参考にさせて頂きました。何故モドキかと言うと、僕にはTinyCですら複雑だったので、TinyCを更に小さくしたモドキをパースする事にしました。ヘタレですいません。

Continue reading "Hello Yacc & Lex World"

flex3のtraceを使う on OSX

さすがにprintfデバッグができないと、開発する気になりませんのでとりあえず調べたんですけど、なかなか巧く情報にたどりつけませんでした。

結局ハマり倒しましたが、ようやくflexでtrace関数が使えるようになりました。以下備忘録。OSXだからといって特に変わったことはありませんでした。

Continue reading “flex3のtraceを使う on OSX”