f0869b5ba0
lang: codegen: start implementing lambda generation
2025-04-21 21:11:45 +01:00
f220fc2f4b
lang: ast: fix nested lambdas not parsing correctly
2025-04-20 21:25:28 +01:00
4a258e2580
lang: codegen: implement fstring generation
2025-04-18 23:17:39 +01:00
2ddb065243
lang: codegen: disable CODEGEN_F_IGNORE_RESULT in expression generation
...
this flag caused some issues where the result of a message would
be ignored if it was the first operand in a larger expression.
2025-04-18 23:15:28 +01:00
25c1fbd44b
lang: fix a bunch of memory leaks
2025-04-17 23:15:48 +01:00
11449b9919
lang: codegen: add support for non-fstrings to expr generator
2025-04-17 22:55:40 +01:00
abb7cfaf0e
mie: move mie_ctx to a separate header
2025-04-17 22:25:36 +01:00
7b8d77a264
lang: codegen: implement message-send code generation and global var references
2025-04-17 21:44:38 +01:00
a4504c0507
lang: ast: fix source formatting
2025-04-17 21:43:51 +01:00
51e07522e8
lang: ast: fix parens not allowing sub-keyword messages
...
previously, an expression like:
x arg1:a arg2:(c subArg:d).
were being parsed incorrectly. This expression was parsed
as single -arg1:arg2:subArg: message being sent to x. the
parentheses around the `c subArg:d` sub-expression were
being ignored.
now, this expression is correcly parsed as the value
of `c subArg:d` being passed as a parameter to the message
-arg1:arg2:
2025-04-17 21:38:31 +01:00
f0e6237473
lang: codegen: redesign again to use purely pre-order ast traversal
2025-04-16 21:58:52 +01:00
e430b7b2f1
lang: add var keyword for variable declarations
...
the var keyword allows greater control over what scope a
particular variable exists in. it clarifies whether a new
variable is being defined or an existing variable is being
assigned to. it will also facilitate the implementation of
global variables.
2025-04-15 11:02:47 +01:00
670b7c5a33
lang: codegen: redesign codegen to use a stack-based state machine
2025-04-14 20:15:05 +01:00
80e001cdc1
lang: add user args to ast iterator; combine pre/post-order traversal modes
...
the caller can now provide a pointer arg to ivy_ast_node_iterate, which will
be forwarded to the specified callback function each time it is called.
the iterator now behaves similarly to fts, in that it visits each node
in both pre-order and post-order, and indicates to the callback whether
the current iteration is pre- or post-order.
2025-04-14 12:24:42 +01:00
2cd78a64b0
lang: start implementing code generation (ast to ir) facility
2025-04-14 09:48:16 +01:00
fd91bb71c0
ast: implement postorder ast traversal
2025-04-14 09:46:27 +01:00
2235f9c0a9
lang: change symbols for properties and atoms to -> and $ respectively
2025-04-10 13:04:12 +01:00
df8d9689d1
lang: add null pointer check to arith_parse_left_paren
...
this fixes a crash that occurred when the call-operator was used on a lone ident in an expression.
2025-04-03 10:48:56 +01:00
78b2eb23c3
lang: ast: implement () operator parsing
...
the () operator can be used to call lambdas in a more functional way than the standard
message-send syntax
for example, with a lambda stored in variable `x`:
x(a:2 b:6).
is equivalent to
x call(a:2 b:6).
2025-03-26 21:10:12 +00:00
0c500dc19b
lang: lex: add function for creating fake ident tokens
2025-03-26 21:09:50 +00:00
46d244a28d
lang: ast: implement parsing of try-catch-finally statements
2025-01-16 13:17:08 +00:00
143d61e329
lang: ast: add support for multiple block termination tokens
2025-01-16 13:15:18 +00:00
fa33336ed7
lang: lex: add finally keyword
2025-01-16 13:13:08 +00:00
f5eaac1a4c
lang: fix underscopre not being treated as an expression start token
2025-01-15 21:11:19 +00:00
bc8bfcea9d
meta: add missing exe resource files
2024-12-16 20:57:30 +00:00
8b8a97c9a6
lang: ast: implement parsing of subscript operator
2024-12-08 17:08:29 +00:00
753afd7d87
lang: ast: implement parsing of tuples
2024-12-08 12:28:47 +00:00
1c3bb98714
lang: ast: rename IVY_AST_STATIC_PKG_ITEM to IVY_AST_PKG_ITEM
2024-12-07 21:46:24 +00:00
e8c30b65b5
lang: ast: implement support for multiple expression terminator tokens
2024-12-07 21:28:25 +00:00
209c47da68
lang: ast: implement parsing of static and dynamic package initialisers
2024-12-07 20:56:57 +00:00
b87d152f07
meta: add metadata to win32 exe/dll files
2024-12-07 19:32:35 +00:00
d404e21b33
lang: ast: implement parsing of unnamed parameters
2024-12-07 10:07:20 +00:00
504fea6d9e
lang: ast: fix expr type not being set when parsing a lambda
2024-12-06 22:46:24 +00:00
dba4f123d6
lang: ast: implement parsing of lambdas
2024-12-06 22:26:06 +00:00
68ad0655aa
lang: ast: fix selector to_string not including keyword message labels
2024-12-06 22:25:33 +00:00
dc55cfa1f8
lang: ast: propagate block terminator token to child expressions
2024-12-06 22:24:48 +00:00
54c6fd7040
lang: ast: adjust and clarify the precedence of token parser callbacks
2024-12-06 22:24:08 +00:00
4c36615bc1
lang: ast: implement s_terminator in block parser for all symbols
2024-12-06 21:34:26 +00:00
67bfdef18a
lang: ast: misc formatting and reference fixes
2024-12-06 21:33:53 +00:00
bd5e524241
lang: ast: replace ast node print callback with to_string
2024-12-06 20:24:08 +00:00
ae15f228d3
lang: ast: fix finalise_property not being called when parsing a right paren
2024-12-06 20:23:46 +00:00
41ef94bf3d
lang: ast: fix incorrect property parser state struct name
2024-12-06 20:23:23 +00:00
ec05379e33
cmake: add support for static build
2024-12-06 19:48:20 +00:00
1f7319458e
lang: ast: implement parsing of properties
2024-12-06 19:47:27 +00:00
94c10dfbb2
lang: ast: implement parsing of f-strings
2024-12-06 13:46:58 +00:00
2bd3e96427
lang: ast: implement parsing of atoms
2024-12-06 13:46:41 +00:00
7ba0a05332
lang: ast: fix error when parsing message handler keyword-message selector
2024-12-06 13:23:02 +00:00
d3813dc514
lang: ast: treat bang (!) as an unconsumed expression terminator
2024-12-06 13:22:33 +00:00
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