#pragma once typedef enum Sym { S_undef, S_number, S_ident, S_token, S_newline, S_label, S_comment, S_eof } Sym; typedef struct Symbol { Sym sym; union { char s[MAX_IDENT_LEN]; int n; } data; int tag; } Symbol; typedef struct Scanner { int peek; int row; int col; char *src; char *pos; int debug; } Scanner; void scanner_init( Scanner *s, char *src ); void scanner_reset( Scanner *s ); void scanner_done( Scanner *s ); Symbol scanner_scan( Scanner *s ); void scanner_debug( Scanner *s, int enable ); void scanner_skip_line( Scanner *s );