Commit Graph

194 Commits

Author SHA1 Message Date
7e0b1a3214 Deprecate linker directives 2024-09-18 00:43:13 -04:00
8e3c871f27 Code cleanup 2024-09-18 00:42:33 -04:00
4e670c8bca Clean up some dead code 2024-09-18 00:35:01 -04:00
10a51ad996 Bugfix for string escaping in printouts 2024-09-16 00:15:54 -04:00
6b5a9d65e3 Overhaul of how libraries are installed 2024-09-15 21:18:42 -04:00
8ee23054bf Update Inline C syntax and documentation/tests 2024-09-15 17:34:34 -04:00
e422079fcc Add a Byte datatype 2024-09-15 15:33:47 -04:00
c455e7b67d Rename builtins/ -> stdlib/ 2024-09-13 20:18:08 -04:00
4380039acc Rename builtins to use plurals when appropriate 2024-09-13 20:08:20 -04:00
51c346bbc5 Code cleanup 2024-09-13 19:59:28 -04:00
34c562e88e Move cord helper functions into their own file 2024-09-13 14:23:24 -04:00
46a2aa2ffc Fix up comprehensions so set comprehensions work and everything is a bit
more clean
2024-09-12 14:27:13 -04:00
56a4d13975 Automatic promotion to single-argument enum tags with a unique type 2024-09-12 13:05:08 -04:00
05724a659f Change unicode escape to \{name} and add escape for ANSI CSI sequences:
\[...]
2024-09-12 01:43:00 -04:00
de23577091 Allow trailing whitespace in parens expressions 2024-09-12 01:04:53 -04:00
fa7e52787f Add postfix ! operator for optionals 2024-09-12 00:13:53 -04:00
b0b23acf88 Rename "Nil"->"Null" for consistency 2024-09-11 13:55:41 -04:00
210179ee67 Optional enums (deprecated custom tag values) 2024-09-11 12:29:48 -04:00
989dc3f442 Support if x := blah: ... 2024-09-11 01:48:15 -04:00
7126755275 Add optional types 2024-09-11 01:31:31 -04:00
0570acfa15 Fix path escapes 2024-09-09 03:20:31 -04:00
1fbe2cb5dd For parsing paths, use nested parens: (./foo), also add some methods 2024-09-09 02:02:08 -04:00
11c560ebcc More path stuff including some methods 2024-09-09 01:14:33 -04:00
13a9304dec Initial working version 2024-09-09 00:22:12 -04:00
aeed1992e9 Fix nearly every GCC warning and add __attribute__((pure/const)) where
appropriate
2024-09-08 17:17:15 -04:00
b0d806a1f0 Add unicode name escapes: \U[penguin] 2024-09-07 01:43:36 -04:00
a90ef1973f Don't parse suffixes on interpolations 2024-09-06 22:30:46 -04:00
9581231408 Remove unused 'import' keyword 2024-09-06 15:01:27 -04:00
176205a22d Print stack trace if $TOMO_STACKTRACE is set 2024-09-06 14:41:34 -04:00
4b352f89a3 Add Shell dsl type 2024-09-06 11:37:33 -04:00
391c1b6bde Rename table_t -> Table_t 2024-09-05 14:57:31 -04:00
fa5ca582ff Clean up some imports 2024-09-05 02:37:45 -04:00
d1b2e9f598 Disallow 'use' statements that aren't top level 2024-09-04 13:48:26 -04:00
64143f0a13 Syntax overhaul (comments back to #, print statments to !!),
using `$/.../` for patterns and using a DSL for patterns
2024-09-03 13:19:41 -04:00
61e482f6f3 Initial WIP first past 2024-09-02 18:47:39 -04:00
9496c4abcb Minor cleanup 2024-08-25 14:35:38 -04:00
dceb925573 Bugfix for parsing ints 2024-08-23 11:38:54 -04:00
ad51b208b4 Overhaul of import syntax. Now everything uses use: use foo, `use
./foo.tm`, `use <foo.h>`, `use libfoo.so`
2024-08-22 14:02:48 -04:00
c97ed75dff Add postfix conditionals for return/skip/stop/function calls 2024-08-19 19:30:22 -04:00
08d6385674 Add -deg suffix: 90deg for specifying degrees. Also fixed percent
suffix
2024-08-19 01:22:17 -04:00
967b649da2 Deprecate # operator in favor of .length and fix up some issues 2024-08-18 20:39:57 -04:00
a49870f810 Add primality testing and next_prime()/prev_prime() 2024-08-18 15:22:51 -04:00
f4b04a1b8c Improved syntax for dollar-string literals 2024-08-18 14:44:15 -04:00
752ab8212c Split BigIntType out of IntType and switch to using enums for the size
of ints/nums
2024-08-18 11:49:51 -04:00
2c8aa4ca57 Support semicolon in {:K:V; ...} 2024-08-17 14:54:58 -04:00
d08f795794 Partially working first draft of bigints 2024-08-13 01:30:25 -04:00
81812b46a0 Put back fallback 2024-08-12 17:33:40 -04:00
bdf7c369ed Bugfix for parsing comments 2024-08-12 17:27:59 -04:00
d2f4d07585 Support channels with maximum size 2024-08-11 15:04:22 -04:00
2ecb5fe885 Add channels and threads 2024-08-11 14:47:34 -04:00
6d3d104363 Overhaul of operator metamethods 2024-08-10 20:50:15 -04:00
b37bd70b60 For tables, deprecate support for square bracket indexing and .default
values, replacing them with a `:bump()` function for tables with numeric
values. This means that counters can be implemented easily without the
need to mask complexity.
2024-08-10 16:03:41 -04:00
8d3d591312 Add Sets to the language 2024-08-10 15:15:38 -04:00
b2e752ee32 Replace heap_str with GC_strdup 2024-07-26 13:30:24 -04:00
cfe46ee393 Replace heap_strn() with GC_strndup() 2024-07-26 13:28:18 -04:00
445f79cb70 Add iterator functions 2024-07-13 17:17:58 -04:00
a86dc05d36 Cache AST parsings so we don't have to re-parse files 2024-07-05 15:51:23 -04:00
e51e6f840c Tweak syntax for debug prints 2024-07-05 01:55:02 -04:00
4d3ea3f73e Check for newline between statements in blocks 2024-07-04 18:45:04 -04:00
6a105fbd80 Add 'defer' 2024-07-04 18:00:01 -04:00
9d9fe12987 Add !! statement for printing text 2024-07-04 16:23:05 -04:00
7dcb5bea3f Support top-level imports 2024-06-16 15:13:48 -04:00
dab2c399f1 Split import/use into separate concepts 2024-06-13 13:17:51 -04:00
5757a5023c Support loading shared libraries 2024-06-13 12:59:19 -04:00
8c7d530080 Split header compilation into a separate function 2024-06-06 16:28:53 -04:00
468e6c7411 Fix for parsing linker directives 2024-05-26 15:13:34 -04:00
308946e794 Switch optional detection to use 'when .. is @..' instead of 'if .. :=
..'; also fixed a bug with stack memory in doctests
2024-05-24 00:03:46 -04:00
bf3cdc3dfa Refine the parsing of blocks so it's always ':' [inline-block] [indent indented-block] 2024-05-23 13:09:59 -04:00
e7beacb460 Add a 'do' block for scoping 2024-05-23 12:52:18 -04:00
fba2b99b65 Support 'while when' 2024-05-23 12:40:21 -04:00
4f2421aeea Tweak inline C code 2024-05-18 21:18:08 -04:00
1df26851d7 Add syntax for "inline C(...)" 2024-05-18 16:31:34 -04:00
ee9a40f910 Fix 'else if' 2024-05-16 00:55:16 -04:00
02fe49a764 Deprecate interfaces (RIP) 2024-05-12 20:13:19 -04:00
3481042259 Simplify interfaces by requiring all functions are pointer methods 2024-05-12 15:56:24 -04:00
d143c72b22 WIP, but functional interfaces 2024-05-12 13:50:06 -04:00
a20f522fd6 Support space indents 2024-05-02 13:48:20 -04:00
c2daf6a928 Clean up 'when' syntax 2024-05-01 13:53:51 -04:00
2e27b88c1b Improved syntax for optionals 2024-04-30 13:18:47 -04:00
3c0a8f0b89 Syntax tweak: use ':' for blocks 2024-04-28 14:58:55 -04:00
a329682d30 Remove _mix_ keyword 2024-04-22 17:26:33 -04:00
e98f6854f5 Use leading underscore for file-local variables and functions instead of
"private" keyword
2024-04-17 13:44:01 -04:00
63e6ba596a Change table syntax to {key:value} instead of {key=>value} 2024-04-13 13:39:44 -04:00
6c01eef851 Introducing the main() function 2024-04-12 13:09:31 -04:00
c73e96ff91 Add comparison operator <> and array method to sort by a custom
comparison function
2024-04-02 13:08:06 -04:00
838c9963fc Adding a REPL 2024-03-30 12:14:24 -04:00
135e23094c Improve codegen for table/array iteration by inlining the iteration
macros
2024-03-26 14:02:48 -04:00
5157988efa Implement 'extern' functionality 2024-03-24 15:06:59 -04:00
a47bd2d569 Improvements to module imports 2024-03-19 23:29:32 -04:00
adbb07fdc2 Module imports 2024-03-19 14:22:03 -04:00
7c0a77df33 Handle function type annotations without returns better 2024-03-18 15:27:07 -04:00
d39e0aca2e Implement parsing of 'pass' 2024-03-18 13:49:42 -04:00
df2e01c15e Add some better file comments 2024-03-18 12:47:07 -04:00
46ee3fc0ef Temporary fix for newlines between statements 2024-03-17 15:59:06 -04:00
1647fb4bed Unary ops should only parse terms not full expressions 2024-03-17 15:23:42 -04:00
9932841530 Improve comprehensions for both arrays and tables 2024-03-17 14:46:36 -04:00
ecf425fb9a Rearrange expression/statement compilation code 2024-03-14 13:28:30 -04:00
d5d3f564bb Remove some shadowed variables 2024-03-14 02:48:07 -04:00
fdc3eadba2 Array comprehensions 2024-03-14 02:37:56 -04:00
a33f730617 Rearranging some files 2024-03-10 00:03:21 -05:00