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
プロフィール
ブログ内検索
カウンター
アクセス解析