Fix parser loops in parse_any and parse_consecutive
This commit is contained in:
		| @@ -50,7 +50,8 @@ parse_result_t parse_list(tokenlist_entry_t *current, node_id_t id, | |||||||
| } | } | ||||||
|  |  | ||||||
| parse_result_t parse_any(tokenlist_entry_t *current, parser_t parsers[]) { | parse_result_t parse_any(tokenlist_entry_t *current, parser_t parsers[]) { | ||||||
|     for (parser_t parser = *parsers; parser; parser = *parsers++) { |     parser_t parser; | ||||||
|  |     while ((parser = *parsers++)) { | ||||||
|         parse_result_t result = parser(current); |         parse_result_t result = parser(current); | ||||||
|         if (result.err == nullptr) |         if (result.err == nullptr) | ||||||
|             return result; |             return result; | ||||||
| @@ -106,7 +107,8 @@ parse_result_t parse_consecutive(tokenlist_entry_t *current, node_id_t id, | |||||||
|  |  | ||||||
|     all->id = id; |     all->id = id; | ||||||
|  |  | ||||||
|     for (parser_t parser = *parsers; parser && current; parser = *parsers++) { |     parser_t parser; | ||||||
|  |     while ((parser = *parsers++) && current) { | ||||||
|         result = parser(current); |         result = parser(current); | ||||||
|         if (result.err) { |         if (result.err) { | ||||||
|             ast_node_free(all); |             ast_node_free(all); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user