Commit Graph

51 Commits

Author SHA1 Message Date
d88d58be70 lang: ast: implement for-loop parsing 2024-12-06 10:02:31 +00:00
f3cd89c72a lang: ast: implement caret (return) parsing 2024-12-06 10:01:56 +00:00
d1855afc05 lang: add missing includes; misc formatting cleanup 2024-12-06 09:59:57 +00:00
5fe3231c9e lang: ast: fix match node type specifying wrong node size 2024-12-05 22:00:23 +00:00
9a4b074381 lang: ast: suppress debug output by default 2024-12-05 19:37:58 +00:00
1a4d6089a1 lang: ast: implement parsing of while-loops 2024-12-05 19:29:21 +00:00
e23cd801c9 lang: ast: fix keyword arg parser not inheriting subexpr depth correctly 2024-12-05 16:55:53 +00:00
fc0a943ae8 lang: ast: improve cascade operator recipient resolution
the cascade operator now uses the precedence of the last message parsed
to determine the recipient of the subsequent messages, reducing the need
for parentheses and making the semantics of the operator more
predictable.

all messages in a cascade now inherit the precedence of the first
message in the cascade.
2024-12-05 16:53:59 +00:00
7acf80f930 lang: ast: implement parsing of match statements 2024-12-04 22:22:25 +00:00
0bb4a4284c lang: ast: re-factor condition group parser
this parser now only handles if-else statements, and uses the state init callback argument to receive any pre-existing inline expressions
2024-12-04 21:04:13 +00:00
a34b9c3710 lang: ast: fix expr_finalise not consuming the right-paren of a parenthesised expression 2024-12-04 20:18:40 +00:00
84f3704db0 lang: ast: fix expr_finalise not handling complex message terminator 2024-12-04 16:41:18 +00:00
c23523ce14 lang: ast: implement parsing of inline and standalone if-else statements 2024-12-04 16:35:19 +00:00
051cb1d2c2 lang: ast: implement cascade operator parsing 2024-12-03 21:57:44 +00:00
16ab13d738 lang: ast: re-factor expression parser into multiple files 2024-12-03 13:26:55 +00:00
1204bffb4d lang: ast: fix parsing of parenthesised sub-expressions in keyword arguments 2024-12-02 11:37:01 +00:00
6d6adf5955 lang: ast: fix parsing of consecutive unary messages 2024-12-02 10:59:49 +00:00
5ec3e8fcd4 lang: ast: implement parsing of complex messages 2024-12-02 10:48:16 +00:00
1c5b23d968 lang: ast: re-write expression parser to support keyword messages
also adjust some parser state callbackss to better support sub-parsers returning
 results to their parents.
2024-12-02 07:56:27 +00:00
1c73e1d37b lang: ast: implement parsing of right-parenthesis in expressions 2024-12-01 13:56:05 +00:00
b5cb87e8df lang: fix lots of compiler warnings/errors 2024-12-01 13:25:36 +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
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
fc76fe6ad4 lang: ast: use fancy index manipulation to reduce the size of ast_node_type 2024-11-28 10:56:43 +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
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
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