1enum token {
2 BUILD,
3 DEFAULT,
4 INCLUDE,
5 POOL,
6 RULE,
7 SUBNINJA,
8 VARIABLE,
9};
10
11struct scanner {
12 FILE *f;
13 const char *path;
14 int chr, line, col;
15};
16
17extern struct evalstring **paths;
18extern size_t npaths;
19
20void scaninit(struct scanner *, const char *);
21void scanclose(struct scanner *);
22
23void scanerror(struct scanner *, const char *, ...);
24int scankeyword(struct scanner *, char **);
25char *scanname(struct scanner *);
26struct evalstring *scanstring(struct scanner *, _Bool);
27void scanpaths(struct scanner *);
28void scanchar(struct scanner *, int);
29int scanpipe(struct scanner *, int);
30_Bool scanindent(struct scanner *);
31void scannewline(struct scanner *);