%{
/*{{定型コード:y.tab.y(宣言部,%{〜%}内)======================================*/
#ifdef  PIECE
#include "app.h"
#else //PIECE
#include "winapp.h"
#endif//PIECE
/* パーサースタックの初期値を定義します。
 * sizeof(YYSTYPE)*YYINITDEPTH) がスタック上に確保されます。
 * デフォルトでは200と定義されており、P/ECEには大きすぎます。
 * P/ECEに適切な、小さなサイズ(16)に、再定義しました。
 * パーサースタックが不足した場合は、自動的に拡張されるので、問題ありません。
 */
#define YYINITDEPTH 16
/* エラー報告関数を定義します。 */
void yyerror(const char* fmt, ...) {
  fprintf(stderr, "### error at line %d : ", yylineno);
  { va_list ap; va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); }
  fputc('\n', stderr); }
/*}}定型コード:y.tab.y(宣言部,%{〜%}内)======================================*/
%}

/*--- sample ---*/
%union {
	int   v_num;
	char* v_str;
}
%token <v_num> T_NUM
%token <v_str> T_STR
%type  <v_num> num
%type  <v_str> str

%%

/*--- sample ---*/
all
	: /* empty */
	| all num { printf("num: %d\n", $2); }
	| all str { printf("str: %s\n", $2); }
	;
num
	: T_NUM /* { $$ = $1; } */
	;
str
	: T_STR /* { $$ = $1; } */
	;

%%
