2015年12月4日金曜日

[c++,bison] bisonのC++対応

bisonでC++のコードを出力するための記述


%skeleton "lalr1.cc"

bisonとflexのc++対応ソースはうまくリンクできない。
結局flexで作成したオブジェクトをstatic変数に持たせてyylex()もstatic関数化した。


エラー


error要素により、次に指定されたトークンまでスキップすることができる。
以下の例では'}'がくるまでの要素をスキップする
                  | '{' error '}' { yy::parser::error("error: compound_statment"); $$ = nullptr; }

行番号


yylinenoを取得するためにはflex側で以下の指定を行う

%option yylineno

0 件のコメント:

コメントを投稿