#ifndef INTERNALS_PARSER_H #define INTERNALS_PARSER_H #include "compiler/fzl_parser.h" #include "compiler/fzl_token.h" extern char plast_err[256]; extern fzl_token_t *last_known_tok; extern fzl_token_t null_tok; extern fzl_token_t this_tok; fzl_token_t *peek(fzl_parser_t *parser); fzl_token_t *consume(fzl_parser_t *parser); bool is(fzl_parser_t *parser, fzl_toktype_t type); fzl_nodetype_t math_op_to_type(fzl_toktype_t type); fzl_nodetype_t unary_op_to_type(fzl_toktype_t type); fzl_node_t *pa_primary(fzl_parser_t *parser); fzl_node_t *pa_postfix(fzl_parser_t *parser); fzl_node_t *pa_unary(fzl_parser_t *parser); fzl_node_t *pa_power(fzl_parser_t *parser); fzl_node_t *pa_factor(fzl_parser_t *parser); fzl_node_t *pa_term(fzl_parser_t *parser); fzl_node_t *pa_cond(fzl_parser_t *parser); fzl_node_t *pa_and(fzl_parser_t *parser); fzl_node_t *pa_or(fzl_parser_t *parser); fzl_node_t *pa_new(fzl_parser_t *parser); fzl_node_t *pa_assignment(fzl_parser_t *parser); fzl_node_t *pa_expression(fzl_parser_t *parser); fzl_node_t *pa_struct(fzl_parser_t *parser); fzl_node_t *pa_ref(fzl_parser_t *parser); fzl_node_t *pa_typedef(fzl_parser_t *parser); fzl_node_t *pa_externfn(fzl_parser_t *parser); fzl_node_t *pa_class(fzl_parser_t *parser); fzl_node_t *pa_function(fzl_parser_t *parser); fzl_node_t *pa_return(fzl_parser_t *parser); fzl_node_t *pa_if(fzl_parser_t *parser); fzl_node_t *pa_block(fzl_parser_t *parser); fzl_node_t *pa_for(fzl_parser_t *parser); fzl_node_t *pa_while(fzl_parser_t *parser); fzl_node_t *pa_loop(fzl_parser_t *parser); fzl_node_t *pa_break(fzl_parser_t *parser); fzl_node_t *pa_extern(fzl_parser_t *parser); fzl_node_t *pa_statement(fzl_parser_t *parser); fzl_node_t *pa_program(fzl_parser_t *parser); #endif // INTERNALS_PARSER_H