flex/bison

リエントラントな字句/構文解析機を作る修正

C++で作るのときにサンプル見てて、あー、そうだ、YY_DECL使うんか、と。 #ifndef YY_DECL #define YY_DECL int yylex(YYSTYPE* yylval, void* yyscanner) #endif /* YY_DECL */ これでええがなorz。 yyset_extra を使わんでもええがな。大嘘こいてましたo…

flex/bisonを使うときのバッドノウハウ

autotools 自体がそいういのの固まりだっちゅうのはおいておいて。ylwrapが、flex の出力ファイル名が lex.yy.c だと思い込んでるので、lexer.ll としたときに途中でエラーになりやがる AM_LFLAGS = -olex.yy.c で、出力ファイル名を標準に戻す。C++のパーサ…

c++な構文解析機超訳

超訳なので、間違いがあるかもしれませんの。 10.1 C++パーサー 10.1.1 C++ Bisonインターフェイス LALRパーサーを c++ で作るときは スケルトンディレクティブ '%skeleton "lalr1.c"’ を使ってくれ。コマンドラインオプション --skeleton=lalr1.c でもおk。…

c++な字句/構文解析機を作成するメモ

とりあえず、この間から調べているflex/bisonでc++なメモ flex http://flex.sourceforge.net/manual/Cxx.html#Cxx %option c++ bison http://www.gnu.org/software/bison/manual/html_mono/bison.html#C_002b_002b-Parsers %skeleton "lalr1.cc" ひとまず。

リエントラントな字句/構文解析機を作る

今更だけれど、あんまりきちんとまとまったものがなかったので。クラスを使った場合は、今までとは結構書き方が変わるのとautotoolsとの相性が非常によくない(ylwrapを書き換えればうまくいくと思う)ので、字句解析側、構文解析側ともに、従来の書き方で。ま…

autotools で、flex/bisonを使うときの設定メモ

調べものしたり、発掘作業をしたのでメモ。configure.ac に以下を追加 AM_PROG_LEX AC_PROG_YACC c++で、コンパイルしたい場合は拡張子を ll/yy にしておく。Makefile.am に以下を追加 AM_YFLAGS = -d AM_LFLAGS = -8 名前を変えたい場合はファイル名を lexe…

複数バッファを使った字句/構文解析機をつくるメモ

nDiaryではなくなって、ローカルでhtmlを生成したい欲求がでてきた。 探してみたけれど良いのがなかったので、ほんなら作るかー、と復習がてらflex/bisonで作成。基本はFlex - Flexの他の特徴で書かれている通り。肝の部分は YY_BUFFER_STATE yy_previous_bu…