MEM_VECTOR_MAKE(ast_value*, globals);
MEM_VECTOR_MAKE(ast_function*, functions);
+
+ ast_function *function;
} parser_t;
MEM_VEC_FUNCTIONS(parser_t, ast_value*, globals)
return NULL;
}
+ if (parser->tok == ')')
+ break;
+
param = parser_parse_type(parser, &dummy);
(void)dummy;
return var;
}
+bool parser_parse_body(parser_t *parser)
+{
+ return false;
+}
+
bool parser_do(parser_t *parser)
{
if (parser->tok == TOKEN_TYPENAME)
}
fval->expression.next = (ast_expression*)var;
- MEM_VECTOR_MOVE(var, params, func, params);
+ MEM_VECTOR_MOVE(var, params, fval, params);
if (!parser_t_functions_add(parser, func)) {
ast_value_delete(var);
func->builtin = -parser_token(parser)->constval.i;
} else if (parser->tok == '{') {
/* function body */
+ bool ret;
+ ast_function *old = parser->function;
+ parser->function = func;
+ ret = parser_parse_body(parser);
+ parser->function = old;
+ return ret;
} else {
parseerror(parser, "TODO, const assignment");
}
return false;
}
+ (void)parser_next(parser);
+
return true;
}
else if (parser->tok == TOKEN_KEYWORD)
if (!parser)
return false;
+ memset(&parser, 0, sizeof(parser));
+
MEM_VECTOR_INIT(parser, globals);
parser->lex = lex_open(filename);