komentare parseru

This commit is contained in:
tovjemam 2024-12-25 12:07:47 +01:00
parent 242bcb851d
commit 6bd390736c

View File

@ -43,6 +43,7 @@ static void error_bad_alloc(struct parser *parser) {
error_printf(&parser->eb, "Out of memory\n");
}
/* Vyhodí chybu při neočekávaném tokenu */
static void error_expected_tokens(struct parser *parser, size_t num_tokens, ...) {
size_t i;
va_list ap;
@ -51,7 +52,7 @@ static void error_expected_tokens(struct parser *parser, size_t num_tokens, ...)
if (got == TOK_ERROR) {
error_set(&parser->eb, lex_get_error(&parser->lexer));
error_printf(&parser->eb, "Lexer error - %s", lex_get_error_text(&parser->lexer));
error_printf(&parser->eb, "%s", lex_get_error_text(&parser->lexer));
return;
}
@ -77,6 +78,7 @@ static void error_expected_tokens(struct parser *parser, size_t num_tokens, ...)
static struct expr_node* parse_expression(struct parser *parser);
static int parse_n_expressions(struct parser *parser, struct expr_node **out_nodes, size_t n);
/* Zpracuje výraz obalený závorkami */
static struct expr_node* parse_bracketed(struct parser *parser) {
struct expr_node* node;
@ -97,6 +99,7 @@ static struct expr_node* parse_bracketed(struct parser *parser) {
return node;
}
/* Zpracuje část výrazu, která už má nejvyšší precedenci (číselnou konstantu, proměnnou, funkci, nebo výraz obalený závorkami) */
static struct expr_node *parse_factor(struct parser *parser) {
struct expr_node *node;
@ -163,6 +166,7 @@ static struct expr_node *parse_factor(struct parser *parser) {
static struct expr_node *parse_unary(struct parser *parser);
/* Zpracuje umocnění */
static struct expr_node *parse_power(struct parser *parser) {
struct expr_node* node, * new_node, * inner;
@ -188,6 +192,7 @@ static struct expr_node *parse_power(struct parser *parser) {
return node;
}
/* Zpracuje unární mínus, resp. plus */
static struct expr_node* parse_unary(struct parser *parser) {
if (accept_token(parser, TOK_MINUS)) {
struct expr_node *node, *inner;
@ -208,6 +213,7 @@ static struct expr_node* parse_unary(struct parser *parser) {
return parse_power(parser);
}
/* Zpracuje součin nebo dělení */
static struct expr_node *parse_term(struct parser *parser) {
struct expr_node *node, *new_node, *inner;
@ -242,6 +248,7 @@ static struct expr_node *parse_term(struct parser *parser) {
return node;
}
/* Zpracuje sčítání nebo odečítání */
static struct expr_node *parse_expression(struct parser *parser) {
struct expr_node *node, *new_node, *inner;
@ -276,6 +283,7 @@ static struct expr_node *parse_expression(struct parser *parser) {
return node;
}
/* Zpracuje n výrazů */
static int parse_n_expressions(struct parser *parser, struct expr_node **out_nodes, size_t n) {
size_t i;