52 lines
1.7 KiB
C
52 lines
1.7 KiB
C
#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
|