diff options
Diffstat (limited to 'minic/parse.c')
-rw-r--r-- | minic/parse.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/minic/parse.c b/minic/parse.c index 0658908..8de56a6 100644 --- a/minic/parse.c +++ b/minic/parse.c @@ -20,6 +20,27 @@ void parser_debug( Parser *p, int enable ) } } +static void print_symbol( scanner_Symbol s ) +{ + switch( s.sym ) { + case S_eof: + print( "PARSER(EOF)" ); + break; + case S_INT: + print( "PARSER(INT)" ); + break; + case S_DIV: + print( "PARSER(DIV)" ); + break; + case S_IDENT: + // TODO: print identifier + print( "PARSER(IDENT)" ); + break; + default: + print( "PARSER(<unknown symbol>)" ); + } +} + void parser_parse( Parser *p ) { scanner_Symbol s; @@ -27,5 +48,9 @@ void parser_parse( Parser *p ) s = scanner_scan( p->s ); while( s.sym != S_eof ) { + if( p->debug ) { + print_symbol( s ); + } + s = scanner_scan( p->s ); } } |