diff --git a/parser.c b/parser.c index b5a6b93..b663f32 100644 --- a/parser.c +++ b/parser.c @@ -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;