]> git.xonotic.org Git - xonotic/gmqcc.git/blob - parser.c
Starting some parsing
[xonotic/gmqcc.git] / parser.c
1 #include "gmqcc.h"
2 #include "lexer.h"
3
4 typedef struct {
5     lex_file *lex;
6     int      tok;
7 } parser_t;
8
9 bool parser_do(parser_t *parser)
10 {
11     return true;
12 }
13
14 bool parser_compile(const char *filename)
15 {
16     parser_t *parser;
17
18     parser = (parser_t*)mem_a(sizeof(parser_t));
19     if (!parser)
20         return false;
21
22     parser->lex = lex_open(filename);
23
24     if (!parser->lex) {
25         printf("failed to open file \"%s\"\n", filename);
26         return false;
27     }
28
29     for (parser->tok = lex_do(parser->lex);
30          parser->tok != TOKEN_EOF && parser->tok < TOKEN_ERROR;
31          parser->tok = lex_do(parser->lex))
32     {
33         if (!parser_do(parser)) {
34             printf("parse error\n");
35             lex_close(parser->lex);
36             mem_d(parser);
37             return false;
38         }
39     }
40
41     lex_close(parser->lex);
42     mem_d(parser);
43     return true;
44 }