bison と C++ の森で彷徨う
bison で C++ を使うには
% bison -o hoge.cpp hoge.y
のように拡張子を cpp で出力すればよい。同時に .hpp なファイルも生成される。
あとはこのような感じで
typedef Object YYSTYPE; #define YYSTYPE_IS_DECLARED 1 extern "C" int yylex(void); extern "C" int yyerror(const char *); extern "C" char* yytext;
で yylval の型を Object にしてやればよいかと思いきや。
あああ。これでは flex 側から値を int, char* として渡せないな。
.y なファイルで yytext を直接参照するのが正しいのかな?微妙?
ここをうまく乗り越えれば R6RS の数値表現の複雑さ周りでかなり楽をできるのだけどなあ。情報求む。
資料
- http://kmaebashi.com/programmer/devlang/yacclex.html
- http://kmaebashi.com/programmer/c_yota/calc_html/calc_y.html
- http://72.14.235.104/search?q=cache:JXTlroYDGMoJ:tech.sinby.com/wiki_ja/index.php%3Fyacc%2520%25A4%25C8%2520C%252B%252B%2520%25A4%25F2%25BB%25C8%25A4%25A6+bison+c%2B%2B&hl=ja&ct=clnk&cd=3&gl=jp