Home | History | Annotate | Download | only in re2c
      1 #ifndef _scanner_h
      2 #define	_scanner_h
      3 
      4 #include <stdio.h>
      5 #include "tools/re2c/token.h"
      6 
      7 typedef struct Scanner {
      8     FILE		*in;
      9     unsigned char	*bot, *tok, *ptr, *cur, *pos, *lim, *top, *eof;
     10     unsigned int	tchar, tline, cline;
     11 } Scanner;
     12 
     13 void Scanner_init(Scanner*, FILE *);
     14 static Scanner *Scanner_new(FILE *);
     15 
     16 int Scanner_echo(Scanner*, FILE *);
     17 int Scanner_scan(Scanner*);
     18 void Scanner_fatal(Scanner*, const char*);
     19 static SubStr Scanner_token(Scanner*);
     20 static unsigned int Scanner_line(Scanner*);
     21 
     22 static SubStr
     23 Scanner_token(Scanner *s)
     24 {
     25     SubStr r;
     26     SubStr_init_u(&r, s->tok, s->cur - s->tok);
     27     return r;
     28 }
     29 
     30 static unsigned int
     31 Scanner_line(Scanner *s)
     32 {
     33     return s->cline;
     34 }
     35 
     36 static Scanner *
     37 Scanner_new(FILE *i)
     38 {
     39     Scanner *r = malloc(sizeof(Scanner));
     40     Scanner_init(r, i);
     41     return r;
     42 }
     43 
     44 #endif
     45