Commit Graph

428 Commits

Author SHA1 Message Date
wash a37e4d23bb lang: ast: get_token_expr_type now uses the operator table to discern expression symbols 2024-11-28 16:59:04 +00:00
wash 2a33ae44a5 lang: ast: move recipient tracking from msg handler node to selector node 2024-11-28 16:58:01 +00:00
wash 4304b94491 lang: ast: implement single-expression message handler parsing 2024-11-28 16:57:10 +00:00
wash 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
wash 6a765c4f2b lang: define operator arity and position 2024-11-28 16:54:48 +00:00
wash fc76fe6ad4 lang: ast: use fancy index manipulation to reduce the size of ast_node_type 2024-11-28 10:56:43 +00:00
wash f04c858d9a lang: lex: add base/limit markers around token type enums 2024-11-28 10:56:23 +00:00
wash 811d3787c4 lang: ast: add a BLOCK ast node to hold lists of expressions 2024-11-28 10:26:53 +00:00
wash 7f9894d8f9 lang: fix a bunch of compiler warnings 2024-11-27 22:45:34 +00:00
wash 9df8474515 frontend: always print lex tokens when compiling file or repl input 2024-11-27 22:30:42 +00:00
wash 101d87e09d lang: ast: implement simple identifier and operator expression parsing 2024-11-27 22:29:29 +00:00
wash 31de937a21 lang: add operator precedence and associativity definitions 2024-11-27 22:29:01 +00:00
wash c7e3cea9b9 lang: lex: add definitions for some missing symbols and keywords 2024-11-27 22:28:17 +00:00
wash 5af2692555 doc: document some additional operators in Person.im 2024-11-27 22:26:59 +00:00
wash a5c0606221 lang: lex: fix push_token not setting lex_prev_token 2024-11-27 12:56:39 +00:00
wash ad25b89af0 lang: ast: fix incorrect return types; add function to determine expression tokens 2024-11-27 12:56:10 +00:00
wash cd89c20beb lang: ast: implement control flags returned by parser functions 2024-11-26 21:30:40 +00:00
wash 740df312a9 lang: ast: remove redundant parse header 2024-11-26 21:30:09 +00:00
wash 8cf341c063 doc: add really simple source file for parser testing 2024-11-26 13:10:52 +00:00
wash 886c0b49a4 frontend: compile: parse source files 2024-11-26 13:10:36 +00:00
wash 25e65f2107 frontend: repl: combine repl_full and repl_lex_only 2024-11-26 13:09:57 +00:00
wash 5f5efd8d35 lang: ast: initial implementation of msg handler and selector parsing 2024-11-26 13:08:51 +00:00
wash 27792c43b3 lang: ast: fix compiler warnings 2024-11-25 21:31:52 +00:00
wash 8eb7eff274 frontend: repl: print ast once all tokens in the lex buffer have been consumed 2024-11-25 16:51:29 +00:00
wash f9b0096dd7 lang: ast: initial implementation of class parser 2024-11-25 16:50:42 +00:00
wash 19506a299c lang: ast: add nullptr check to ivy_ast_node_iterate 2024-11-25 16:50:12 +00:00
wash 95321d7019 lang: ast: transparently ignore linefeeds if the current parse context doesn't handle them 2024-11-25 16:49:43 +00:00
wash dca0aba183 lang: ast: implement parsing 'use' statements 2024-11-25 16:49:07 +00:00
wash f1032f0c8e lang: ast: move unit-package parser state definition to c file 2024-11-25 16:48:03 +00:00
wash f603551e26 lang: ast: fix compiler warnings 2024-11-24 21:31:49 +00:00
wash 6fa1524766 frontend: repl: print the ast after each line of input 2024-11-24 20:50:32 +00:00
wash 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
wash 5622073252 frontend: repl: print and destroy ast nodes after parsing 2024-11-24 16:12:49 +00:00
wash fbef0b6743 lang: ast: add stub functions for retrieving, printing, interating, and destroying ast nodes 2024-11-24 16:12:31 +00:00
wash f524899da4 lang: lex: convert lexer token queue to b_queue 2024-11-24 16:12:06 +00:00
wash ab74c882d1 lang: ast: fill in stub functions for unit and unit-package 2024-11-24 16:11:33 +00:00
wash 70aab9998b lang: ast: add ast node size to ast_node_type 2024-11-24 11:52:59 +00:00
wash d43e387158 lang: ast: add state size to ast_node_type 2024-11-24 11:42:43 +00:00
wash f1ea916155 lang: ast: re-factor parser into multiple files 2024-11-24 11:11:06 +00:00
wash a25683ddc9 lang: lex: move all lex enums to their own value ranges 2024-11-24 11:10:27 +00:00
wash e71f6a0904 frontend: repl: pass user input through the parser 2024-11-23 19:28:26 +00:00
wash ed35011931 lang: ast: implement node, parser, and parser state management 2024-11-23 19:28:03 +00:00
wash 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
wash 54a0c331b2 common: add a status code for internal errors 2024-11-23 19:26:29 +00:00
wash 5c5a2d236c lang: ast: add stub parser functions 2024-11-23 10:15:40 +00:00
wash 8219797cbb cmake: don't link bluelib modules to their dependencies
this fixes duplicate library warnings given by ld, but still ensures that the user lists all dependent bluelib modules in their CMakeFiles.txt
2024-11-23 10:14:05 +00:00
wash 6f06f42953 lang: add missing includes 2024-11-22 22:30:26 +00:00
wash f1be82c495 asm: add missing includes 2024-11-22 22:30:15 +00:00
wash ceb9f10b66 lang: add ast node definitions 2024-11-22 21:47:37 +00:00
wash 90f96b6229 lang: lex: fix regular number characters not incrementing the token length 2024-11-21 20:05:13 +00:00