23 Commits

Author SHA1 Message Date
da51d66bb2 Match ast nodes to new grammar 2025-04-01 22:09:36 +02:00
03fc44f339 Use new validator function for parse_token calls on all primitives
Also adds new validated primitives for NODE_SECTION and NODE_REGISTER
2025-04-01 21:54:27 +02:00
eec02d6237 Fix incorrect error returned in parse_consecutive 2025-04-01 21:53:19 +02:00
39a4b2b0a7 Fix memory leak in ast.
If a node has children the array of children was never freed.
2025-04-01 21:51:48 +02:00
048b8fcf9d Extend parse_token to accept an optional validator function 2025-04-01 21:10:19 +02:00
1b21364939 Expose err_parse_no_match in parser_util.h 2025-04-01 20:57:34 +02:00
41114d7f9c Add basic parser combinators 2025-04-01 20:05:35 +02:00
dfc89a7493 Add "primitive" parsers for all the semantic tokens in the lexer grammar 2025-04-01 20:03:53 +02:00
43a62095bf Add basic parser utilities 2025-04-01 20:03:28 +02:00
ff7d33bf2a Add functions to skip over trivia in a tokenlist 2025-04-01 19:55:00 +02:00
208f30ac48 Expand AST node ids to support the lexer tokens and grammar rules 2025-04-01 19:26:54 +02:00
ed1491db33 Fix parse_token to add the correct information to a parse node 2025-04-01 17:20:50 +02:00
0bf4ba3a1b Fix ast nodes now containing token entry instead of token 2025-04-01 17:20:32 +02:00
e632764bf2 Partial parser implementation 2025-04-01 17:16:21 +02:00
a298e99895 Add invalid ast node id 2025-04-01 15:06:42 +02:00
126905a092 FIXME REORDER COMMIT -- Change main so it can parse the ast
FIXME THIS COMMIT NEEDS TO BE REORDERED
FIXME THIS COMMIT NEEDS TO BE REORDERED
FIXME THIS COMMIT NEEDS TO BE REORDERED
FIXME THIS COMMIT NEEDS TO BE REORDERED
2025-04-01 15:06:20 +02:00
0f6efa8050 Add basic AST functionality
All checks were successful
Validate the build / validate-build (push) Successful in 24s
2025-03-31 18:43:50 +02:00
bd37ddaeea Add tokenlist, a linked list of lexer tokens
The linked list is doubly linked so the parser can look forward into it
and error reporting can look backward.

This commmit also reworks main to use the tokenlist instead of dealing
with the lexer manually.
2025-03-31 18:43:34 +02:00
42da7b1d05 Move err_allocation_failed into error.c and make it available to
everyone.
2025-03-31 18:43:34 +02:00
5cdb60d395 Remove peek function 2025-03-30 22:51:47 +02:00
e5830daac9 Add documentation comments to the lexer code 2025-03-30 22:51:15 +02:00
942dd444cc Fix infinite loop when lexing an invalid newline sequence 2025-03-30 22:03:12 +02:00
df948b18c6 Initial commit, basic lexer structure 2025-03-30 17:45:51 +02:00