lang: ast: fix source formatting

This commit is contained in:
2025-04-17 21:43:51 +01:00
parent 8388dfeb79
commit a4504c0507
2 changed files with 42 additions and 41 deletions

View File

@@ -32,7 +32,8 @@ extern struct parser_state *parser_push_state(
struct ivy_parser *parser, enum ivy_ast_node_type node_type, uintptr_t arg); struct ivy_parser *parser, enum ivy_ast_node_type node_type, uintptr_t arg);
extern void parser_pop_state(struct ivy_parser *parser, enum pop_state_flags flags); extern void parser_pop_state(struct ivy_parser *parser, enum pop_state_flags flags);
extern struct parser_state *parser_get_state_generic(struct ivy_parser *parser); extern struct parser_state *parser_get_state_generic(struct ivy_parser *parser);
extern struct parser_state *parser_get_parent_state_generic(struct ivy_parser *parser, enum ivy_ast_node_type type); extern struct parser_state *parser_get_parent_state_generic(
struct ivy_parser *parser, enum ivy_ast_node_type type);
extern void parser_replace_current_node( extern void parser_replace_current_node(
struct ivy_parser *parser, struct ivy_ast_node *new_node); struct ivy_parser *parser, struct ivy_ast_node *new_node);

View File

@@ -6,71 +6,71 @@
struct parser_state; struct parser_state;
#define PARSE_RESULT(status, flags) \ #define PARSE_RESULT(status, flags) \
((struct token_parse_result) { .r_status = (status), .r_flags = (flags) }) ((struct token_parse_result) {.r_status = (status), .r_flags = (flags)})
#define __TOK_PARSER_INDEX(x) ((x) - __IVY_TOK_INDEX_BASE) #define __TOK_PARSER_INDEX(x) ((x) - __IVY_TOK_INDEX_BASE)
#define __SYM_PARSER_INDEX(x) ((x) - __IVY_SYM_INDEX_BASE) #define __SYM_PARSER_INDEX(x) ((x) - __IVY_SYM_INDEX_BASE)
#define __KW_PARSER_INDEX(x) ((x) - __IVY_KW_INDEX_BASE) #define __KW_PARSER_INDEX(x) ((x) - __IVY_KW_INDEX_BASE)
#define __TOK_PARSER_FALLBACK_INDEX IVY_TOK_NONE #define __TOK_PARSER_FALLBACK_INDEX IVY_TOK_NONE
#define __SYM_PARSER_FALLBACK_INDEX IVY_SYM_NONE #define __SYM_PARSER_FALLBACK_INDEX IVY_SYM_NONE
#define __KW_PARSER_FALLBACK_INDEX IVY_KW_NONE #define __KW_PARSER_FALLBACK_INDEX IVY_KW_NONE
#define TOK_PARSER(id, func) [__TOK_PARSER_INDEX(IVY_TOK_##id)] = func #define TOK_PARSER(id, func) [__TOK_PARSER_INDEX(IVY_TOK_##id)] = func
#define SYM_PARSER(id, func) [__SYM_PARSER_INDEX(IVY_SYM_##id)] = func #define SYM_PARSER(id, func) [__SYM_PARSER_INDEX(IVY_SYM_##id)] = func
#define KW_PARSER(id, func) [__KW_PARSER_INDEX(IVY_KW_##id)] = func #define KW_PARSER(id, func) [__KW_PARSER_INDEX(IVY_KW_##id)] = func
#define TOK_PARSER_FALLBACK(func) [__TOK_PARSER_FALLBACK_INDEX] = func #define TOK_PARSER_FALLBACK(func) [__TOK_PARSER_FALLBACK_INDEX] = func
#define SYM_PARSER_FALLBACK(func) [__SYM_PARSER_FALLBACK_INDEX] = func #define SYM_PARSER_FALLBACK(func) [__SYM_PARSER_FALLBACK_INDEX] = func
#define KW_PARSER_FALLBACK(func) [__KW_PARSER_FALLBACK_INDEX] = func #define KW_PARSER_FALLBACK(func) [__KW_PARSER_FALLBACK_INDEX] = func
enum token_parse_flags { enum token_parse_flags {
PARSE_REPEAT_TOKEN = 0x01u, PARSE_REPEAT_TOKEN = 0x01u,
}; };
enum token_expr_type { enum token_expr_type {
TOK_EXPR_NONE = 0, TOK_EXPR_NONE = 0,
TOK_EXPR_BEGIN, TOK_EXPR_BEGIN,
TOK_EXPR_ANY, TOK_EXPR_ANY,
}; };
struct token_parse_result { struct token_parse_result {
enum ivy_status r_status; enum ivy_status r_status;
enum token_parse_flags r_flags; enum token_parse_flags r_flags;
}; };
typedef struct token_parse_result (*token_parse_function)( typedef struct token_parse_result (*token_parse_function)(
struct ivy_parser*, struct ivy_token*); struct ivy_parser *, struct ivy_token *);
struct ast_node_type { struct ast_node_type {
enum ivy_status (*n_add_child)( enum ivy_status (*n_add_child)(
struct parser_state*, struct ivy_ast_node *); struct parser_state *, struct ivy_ast_node *);
void (*n_to_string)(struct ivy_ast_node *, struct b_string *); void (*n_to_string)(struct ivy_ast_node *, struct b_string *);
void (*n_init_state)(struct ivy_parser *, struct parser_state *, uintptr_t); void (*n_init_state)(struct ivy_parser *, struct parser_state *, uintptr_t);
void (*n_collect_children)( void (*n_collect_children)(
struct ivy_ast_node*, struct ivy_ast_node_iterator *); struct ivy_ast_node *, struct ivy_ast_node_iterator *);
size_t n_state_size; size_t n_state_size;
size_t n_node_size; size_t n_node_size;
token_parse_function n_token_parsers[__TOK_PARSER_INDEX(__IVY_TOK_INDEX_LIMIT)]; token_parse_function n_token_parsers[__TOK_PARSER_INDEX(__IVY_TOK_INDEX_LIMIT)];
token_parse_function n_keyword_parsers[__KW_PARSER_INDEX(__IVY_KW_INDEX_LIMIT)]; token_parse_function n_keyword_parsers[__KW_PARSER_INDEX(__IVY_KW_INDEX_LIMIT)];
token_parse_function n_symbol_parsers[__SYM_PARSER_INDEX(__IVY_SYM_INDEX_LIMIT)]; token_parse_function n_symbol_parsers[__SYM_PARSER_INDEX(__IVY_SYM_INDEX_LIMIT)];
struct { struct {
token_parse_function expr_begin; token_parse_function expr_begin;
token_parse_function expr_other; token_parse_function expr_other;
token_parse_function expr_all; token_parse_function expr_all;
} n_expr_parser; } n_expr_parser;
}; };
extern const struct ast_node_type* get_ast_node_type(enum ivy_ast_node_type type); extern const struct ast_node_type *get_ast_node_type(enum ivy_ast_node_type type);
extern token_parse_function get_token_parser( extern token_parse_function get_token_parser(
struct ivy_ast_node* context, struct ivy_token* tok); struct ivy_ast_node *context, struct ivy_token *tok);
extern enum token_expr_type get_token_expr_type(struct ivy_token* tok); extern enum token_expr_type get_token_expr_type(struct ivy_token *tok);
extern struct ivy_ast_node* ast_node_create(enum ivy_ast_node_type type); extern struct ivy_ast_node *ast_node_create(enum ivy_ast_node_type type);
extern enum ivy_status ast_node_add_child( extern enum ivy_status ast_node_add_child(
struct ivy_ast_node* parent, struct ivy_ast_node* child); struct ivy_ast_node *parent, struct ivy_ast_node *child);
#endif #endif