Commit Graph

48 Commits

Author SHA1 Message Date
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
881f345bbe lang: lex: move structure definitions to a separate header 2024-11-19 15:22:16 +00:00
0f3328565e lang: lex: fix identifier prefixed with underscore being tokenised incorrectly 2024-11-19 14:00:42 +00:00
90a32ac1a1 lang: lex: use a dictionary to lookup keywords 2024-11-19 10:49:42 +00:00
5a5b0d01d8 lang: lex: only read linefeeds up to the end of the current line buffer 2024-11-18 15:19:26 +00:00
61eabd52c4 lang: lex: replace call to isnumber() with isdigit() 2024-11-17 10:58:31 +00:00
104e549b32 lang: lex: implement lexing of numbers and atoms 2024-11-17 09:31:58 +00:00
f14c387a6e lang: lex: implement state stack; make lexer structure opaque
the state stack is used to track whether a string is currently being read,
what kind of string it is, and whether or not we are in an interpolation
within that string.
2024-11-16 23:03:43 +00:00
102769735e lang: lex: start implementing strings and interpolation 2024-11-16 21:30:32 +00:00
7959dc26a1 Merge branch 'main' of https://github.com/washh/ivy 2024-11-16 20:40:32 +00:00
00cf226078 lang: lex: implement lexing of symbols, identifiers, labels, keywords, and comments 2024-11-16 17:05:29 +00:00
646a851a10 meta: add msvc support
since bluelib is already cross-platform, this is mostly just adding
__declspec(dllexport) to the library functions.
2024-11-14 19:30:36 +00:00
6b02a86ba4 lang: implement identifier support in the lexer 2024-11-13 21:37:00 +00:00
d6dea45f52 meta: rename library modules 2024-11-12 19:55:47 +00:00