にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

bison/flexで電卓を作る(あり合わせ編)

以下はまだ全然形になっていないメモ。
先日のエントリでは電卓アプリを作ろうとflexを弄ってみたが、そのままリエントラントなものを最初から指向してbisonも弄ってたらぐちゃぐちゃになってどうしようもなくなったので、既にネット上に転がっている電卓用の構文解析ルールを持ってきて、それをリエントラント化する方向でやり直し。
ベースは課題2 bison の応用: 簡易電卓より拝借。

  1. まずは、autotoolsでコンパイルできるようにする
  2. bison/flexをリエントラントになるように書き直し

(あとで書く)

現状の問題点

  • yyparseのコールの仕方がわからない。具体的にはyyscan_t型の変数をどこで宣言し、どの引数に含めればいいのか。また、yyscan_t型の変数を宣言するには定義を知らなくてはいけないが、scanner.hを外部に作成するにはどうすればいいのか
  • yywrapにflex --header-file=scanner.hを食わせてもヘッダファイルを出力してくれない
  • scanner.cからはparser.hを参照する必要があるが(トークンの定義を知る必要があるため)、それぞれ相互に参照するためMakefile.amに書くコンパイル順をどうすればよいのかよくわからない。

順序だてて一つずつ解決しないと。