bisonではまる。
bisonになったら急激にレベルが上がったぞ〜!!そんなわけで浅く広く最小限でいく。浅広。
bisonで計算機!と行きたい所だが、イマイチ構文処理がわかってない。とりあえず、bisonとflexの連携部分を試すことにした。
まずは、bison
number.y
%{ #include <stdio.h> #include <string.h> void yyerror(const char *str) { fprintf(stderr,"error: %s\n",str); } int yywrap(void) { return 1; } int main(void) { yyparse(); return 0; } %} %token NUMBER %% expr : number | expr number ; number : NUMBER { printf("[NUMBER]"); }; %%
bison側にmainを書く。makeのように依存を書いていく。expr部分は相当自信が無い。
number.l
%{ #include <stdio.h> #include "number.tab.h" %} %% [0-9]+ return NUMBER; %%
flex側に、「bison -d」で自動生成されたヘッダを入れる。