Commit Graph

63 Commits

Author SHA1 Message Date
c9dbc2e7e4 lang: re-arrange the operator table 2024-12-01 13:19:01 +00:00
624f183de8 lang: ast: fix inconsistent indentation 2024-11-29 12:06:06 +00:00
ec24e2c327 lang: ast: convert RPN expression queue to ast and replace generic EXPR node with it 2024-11-28 22:06:25 +00:00
05ced5d5fc lang: ast: define ast_node_type for some fundamental expression components 2024-11-28 22:05:37 +00:00
47c11e4c10 lang: ast: add missing #include 2024-11-28 22:04:22 +00:00
7aed34c875 lang: add some parser-internal operators 2024-11-28 22:01:31 +00:00
b227b27c06 lang: ast: implement more of the expression parser 2024-11-28 17:00:37 +00:00
a37e4d23bb lang: ast: get_token_expr_type now uses the operator table to discern expression symbols 2024-11-28 16:59:04 +00:00
2a33ae44a5 lang: ast: move recipient tracking from msg handler node to selector node 2024-11-28 16:58:01 +00:00
4304b94491 lang: ast: implement single-expression message handler parsing 2024-11-28 16:57:10 +00:00
7530dd36a2 lang: ast: move block parser state to separate header file
this allows other parsers to specify what kind of token should end the
block.
2024-11-28 16:56:25 +00:00
6a765c4f2b lang: define operator arity and position 2024-11-28 16:54:48 +00:00
fc76fe6ad4 lang: ast: use fancy index manipulation to reduce the size of ast_node_type 2024-11-28 10:56:43 +00:00
f04c858d9a lang: lex: add base/limit markers around token type enums 2024-11-28 10:56:23 +00:00
811d3787c4 lang: ast: add a BLOCK ast node to hold lists of expressions 2024-11-28 10:26:53 +00:00
7f9894d8f9 lang: fix a bunch of compiler warnings 2024-11-27 22:45:34 +00:00
101d87e09d lang: ast: implement simple identifier and operator expression parsing 2024-11-27 22:29:29 +00:00
31de937a21 lang: add operator precedence and associativity definitions 2024-11-27 22:29:01 +00:00
c7e3cea9b9 lang: lex: add definitions for some missing symbols and keywords 2024-11-27 22:28:17 +00:00
a5c0606221 lang: lex: fix push_token not setting lex_prev_token 2024-11-27 12:56:39 +00:00
ad25b89af0 lang: ast: fix incorrect return types; add function to determine expression tokens 2024-11-27 12:56:10 +00:00
cd89c20beb lang: ast: implement control flags returned by parser functions 2024-11-26 21:30:40 +00:00
740df312a9 lang: ast: remove redundant parse header 2024-11-26 21:30:09 +00:00
5f5efd8d35 lang: ast: initial implementation of msg handler and selector parsing 2024-11-26 13:08:51 +00:00
27792c43b3 lang: ast: fix compiler warnings 2024-11-25 21:31:52 +00:00
f9b0096dd7 lang: ast: initial implementation of class parser 2024-11-25 16:50:42 +00:00
19506a299c lang: ast: add nullptr check to ivy_ast_node_iterate 2024-11-25 16:50:12 +00:00
95321d7019 lang: ast: transparently ignore linefeeds if the current parse context doesn't handle them 2024-11-25 16:49:43 +00:00
dca0aba183 lang: ast: implement parsing 'use' statements 2024-11-25 16:49:07 +00:00
f1032f0c8e lang: ast: move unit-package parser state definition to c file 2024-11-25 16:48:03 +00:00
f603551e26 lang: ast: fix compiler warnings 2024-11-24 21:31:49 +00:00
1e7e73db21 lang: ast: implement ast iteration
iteration is implementing without recursion, instead using type-specific callbacks to construct a queue of nodes to iterate through. ast priting is implemented using this functionality.
2024-11-24 20:50:12 +00:00
fbef0b6743 lang: ast: add stub functions for retrieving, printing, interating, and destroying ast nodes 2024-11-24 16:12:31 +00:00
f524899da4 lang: lex: convert lexer token queue to b_queue 2024-11-24 16:12:06 +00:00
ab74c882d1 lang: ast: fill in stub functions for unit and unit-package 2024-11-24 16:11:33 +00:00
70aab9998b lang: ast: add ast node size to ast_node_type 2024-11-24 11:52:59 +00:00
d43e387158 lang: ast: add state size to ast_node_type 2024-11-24 11:42:43 +00:00
f1ea916155 lang: ast: re-factor parser into multiple files 2024-11-24 11:11:06 +00:00
a25683ddc9 lang: lex: move all lex enums to their own value ranges 2024-11-24 11:10:27 +00:00
ed35011931 lang: ast: implement node, parser, and parser state management 2024-11-23 19:28:03 +00:00
b630aa009c lang: lex: add function to check if tokens are available
if this function returns false, any attempt to read tokens from the lexer will cause another line of input to be retrieved from the lexer's line source.
2024-11-23 19:27:29 +00:00
5c5a2d236c lang: ast: add stub parser functions 2024-11-23 10:15:40 +00:00
6f06f42953 lang: add missing includes 2024-11-22 22:30:26 +00:00
ceb9f10b66 lang: add ast node definitions 2024-11-22 21:47:37 +00:00
90f96b6229 lang: lex: fix regular number characters not incrementing the token length 2024-11-21 20:05:13 +00:00
92f407ac09 lang: add colour to internal print functions 2024-11-20 22:14:11 +00:00
6e642b3c19 lang: lex: implement lexing of decimal numbers 2024-11-19 16:57:20 +00:00
a54a232428 lang: lex: fix underscore label producing two separate tokens 2024-11-19 16:17:58 +00:00
1dbe68cfeb lang: lex: add missing symbol and keyword definitions 2024-11-19 15:57:31 +00:00
7c42bf7bc9 lang: add internal debugging interface 2024-11-19 15:22:39 +00:00