komentare parseru
This commit is contained in:
parent
242bcb851d
commit
6bd390736c
10
parser.c
10
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;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user