Hatena::ブログ(Diary)

cooldaemonの備忘録 RSSフィード

2008-09-30

yecc/leex で簡易的な電卓を作ってみた

reia の Source を追ってる途中、気が向いたので yeccleex を使い yacc/lex で言うところの "Hello World." 的な儀式である電卓を作りに挑戦してみました。

gist: 13773 - GitHub

reia の Source に付属する escript で書かれた yecc と leex へのラッパーコマンドが何気に便利なので、それを利用すると良いかも。

(ここで配布されている最新の leex と reia と共に配布されている leex はバージョンが異なるようですが、ラッパーコマンドは動作します)

$ leex calc_scan.xrl
$ erlc calc_scan.erl
$ yecc calc_parse.yrl
$ erlc calc_parse.erl
$ erlc calc_eval.erl
$ erl
1> {ok, Scan, _Line} = calc_scan:string("(1 + 2) * 3 - 4").
2> {ok, Exp} = calc_parse:parse(Scan).
3> calc_eval:eval(Exp).