diff options
author | Bad Diode <bd@badd10de.dev> | 2021-10-29 22:00:40 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2021-10-29 22:00:40 +0200 |
commit | fbddf5e0c46778c1e403389ba557ef036b7b0fb5 (patch) | |
tree | 01aa089934d1b49fe515fe86fffca01c471c69e9 /src/parser.h | |
parent | 95709acb7f166b21f562ef3fcf8ba7cb5890d28a (diff) | |
download | bdl-fbddf5e0c46778c1e403389ba557ef036b7b0fb5.tar.gz bdl-fbddf5e0c46778c1e403389ba557ef036b7b0fb5.zip |
Revert "Deduplicate string/symbols text for fast equality checks"
This reverts commit 95709acb7f166b21f562ef3fcf8ba7cb5890d28a.
Diffstat (limited to 'src/parser.h')
-rwxr-xr-x | src/parser.h | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/src/parser.h b/src/parser.h index f438863..ee5febe 100755 --- a/src/parser.h +++ b/src/parser.h | |||
@@ -37,25 +37,10 @@ typedef struct Object { | |||
37 | typedef struct Parser { | 37 | typedef struct Parser { |
38 | Token *tokens; | 38 | Token *tokens; |
39 | size_t current; | 39 | size_t current; |
40 | |||
41 | // Unique symbols and strings. | ||
42 | Object **symbols; | ||
43 | Object **strings; | ||
44 | } Parser; | 40 | } Parser; |
45 | 41 | ||
46 | typedef Object* Root; | 42 | typedef Object* Root; |
47 | 43 | ||
48 | typedef struct ParserResults { | ||
49 | // All root statements. | ||
50 | Root *roots; | ||
51 | |||
52 | // Unique symbols (tracking only first occurence). | ||
53 | Object **symbols; | ||
54 | |||
55 | // Unique strings (tracking only first occurence). | ||
56 | Object **strings; | ||
57 | } ParserResults; | ||
58 | |||
59 | // Mimics the functionality in the Scanner functions, but for tokens. | 44 | // Mimics the functionality in the Scanner functions, but for tokens. |
60 | Token next_token(Parser *parser); | 45 | Token next_token(Parser *parser); |
61 | Token previous_token(Parser *parser); | 46 | Token previous_token(Parser *parser); |
@@ -65,21 +50,20 @@ bool has_next_token(const Parser *parser); | |||
65 | 50 | ||
66 | // Parsing operations. | 51 | // Parsing operations. |
67 | Object * parse_tree(Parser *parser, Errors *errors); | 52 | Object * parse_tree(Parser *parser, Errors *errors); |
68 | Object * parse_symbol(Parser *parser, Token tok); | 53 | Object * parse_symbol(Token tok); |
69 | Object * parse_string(Parser *parser, Token tok); | 54 | Object * parse_string(Token tok); |
70 | Object * parse_bool(Token tok); | 55 | Object * parse_bool(Token tok); |
71 | Object * parse_fixnum(Token tok); | 56 | Object * parse_fixnum(Token tok); |
72 | Object * parse_list(Parser *parser, Errors *errors); | 57 | Object * parse_list(Parser *parser, Errors *errors); |
73 | ParserResults parse(Token *tokens, Errors *errors); | 58 | Root * parse(Token *tokens, Errors *errors); |
74 | 59 | ||
75 | // Object operations. | 60 | // Object operations. |
76 | void object_display(Object *obj); | 61 | void object_display(Object *obj); |
77 | bool object_equal(Object *a, Object *b); | ||
78 | 62 | ||
79 | // Manage resources. | 63 | // Manage resources. |
80 | Object * object_alloc(Token tok, ObjectType type); | 64 | Object * object_alloc(Token tok, ObjectType type); |
81 | void object_free(Object *node); | 65 | void object_free(Object *node); |
82 | void free_parser_results(ParserResults *pr); | 66 | void free_roots(Root *roots); |
83 | 67 | ||
84 | // | 68 | // |
85 | // Helper macros. | 69 | // Helper macros. |