Verilog、SystemVerilog、SystemCなど、ハードウェア記述言語についてのブログです。
sscanf(yytext, "%d", &yylval);とすべきところで、yylvalの前の&が抜けていたことが原因だった。
%token CHAR %% input : '(' expr ')' '\n' { printf("correct expression\n"); } ; expr : { printf("[empty] -> expr\n"); } | expr term { printf("expr -> expr term\n"); }; term : CHAR { printf("term -> CHAR(%c)\n", $1); } | '(' expr ')' { printf("term -> ( expr )\n"); } ; %% yylex() { int c; while (' ' == (c = getchar()) ); if ( isalpha(c) ) { yylval = c; return CHAR; } else { return c; } }
%token CHAR %% input : '(' expr ')' '\n' { printf("correct expression\n"); } ; expr : expr term { printf("expr + term -> expr\n"); } | term { printf("term -> expr\n"); }; term : CHAR { printf("CHAR (%c) -> term\n", $1); } | '(' ')' { printf("(empty list) -> term\n"); } | '(' expr ')' { printf("( expr ) -> term\n"); } ; %% yylex() { int c; while (' ' == (c = getchar()) ); if ( isalpha(c) ) { yylval = c; return CHAR; } else { return c; } }
カレンダー
カテゴリー
フリーエリア
最新CM
最新記事
最新TB
プロフィール
ブログ内検索
カウンター
アクセス解析