%{ #include #include "scanType.h" extern int yylex(); extern int yydebug; #define YYERROR_VERBOSE void yyerror(const char *msg) { printf("ERROR(PARSER): %s\n", msg); } %} // this is the type of yylval %union { TokenData *tokenData; } %token QUIT ID NUMBER %token '\n' '=' '+' '*' '-' '(' ')' %% tokenlist : tokenlist token | token ; token : QUIT { printf("QUIT line: %d\n", $1->linenum); } | ID { printf("ID line: %d value: %s\n", $1->linenum, $1->tokenstr); } | NUMBER { printf("NUM line: %d value: %g\n", $1->linenum, $1->numValue); } | '+' { printf("+ line: %d\n", $1->linenum); } | '*' { printf("* line: %d\n", $1->linenum); } | '=' { printf("= line: %d\n", $1->linenum); } | '-' { printf("- line: %d\n", $1->linenum); } | '(' { printf("( line: %d\n", $1->linenum); } | ')' { printf(") line: %d\n", $1->linenum); } | '\n' { printf("NL line: %d\n", $1->linenum); } ; %% int main() { // yydebug = 1; yyparse(); return 0; }