- Exposes all errors in the header file so any user of the api can test for the specific error conditions - Mark all static error pointers as const - Move generic errors into error.h - Name all errors err_modulename_* for errors that belong to a specific module and err_* for generic errors.
27 lines
781 B
C
27 lines
781 B
C
#ifndef INCLUDE_PARSER_UTIL_H_
|
|
#define INCLUDE_PARSER_UTIL_H_
|
|
|
|
#include "../ast.h"
|
|
#include "../error.h"
|
|
#include "../tokenlist.h"
|
|
|
|
typedef struct parse_result {
|
|
error_t *err;
|
|
tokenlist_entry_t *next;
|
|
ast_node_t *node;
|
|
} parse_result_t;
|
|
|
|
typedef bool (*token_validator_t)(lexer_token_t *);
|
|
|
|
parse_result_t parse_error(error_t *err);
|
|
parse_result_t parse_no_match();
|
|
parse_result_t parse_success(ast_node_t *ast, tokenlist_entry_t *next);
|
|
parse_result_t parse_token(tokenlist_entry_t *current,
|
|
lexer_token_id_t token_id, node_id_t ast_id,
|
|
token_validator_t is_valid);
|
|
parse_result_t parse_result_wrap(node_id_t id, parse_result_t result);
|
|
|
|
extern error_t *const err_parse_no_match;
|
|
|
|
#endif // INCLUDE_PARSER_UTIL_H_
|