gmqcc/parser.c
2012-07-16 14:14:37 +02:00

44 lines
868 B
C

#include "gmqcc.h"
#include "lexer.h"
typedef struct {
lex_file *lex;
int tok;
} parser_t;
bool parser_do(parser_t *parser)
{
return true;
}
bool parser_compile(const char *filename)
{
parser_t *parser;
parser = (parser_t*)mem_a(sizeof(parser_t));
if (!parser)
return false;
parser->lex = lex_open(filename);
if (!parser->lex) {
printf("failed to open file \"%s\"\n", filename);
return false;
}
for (parser->tok = lex_do(parser->lex);
parser->tok != TOKEN_EOF && parser->tok < TOKEN_ERROR;
parser->tok = lex_do(parser->lex))
{
if (!parser_do(parser)) {
printf("parse error\n");
lex_close(parser->lex);
mem_d(parser);
return false;
}
}
lex_close(parser->lex);
mem_d(parser);
return true;
}