56e71d6782
cl-lexer: Add a hacky workaround for float support.
...
It's disgusting, but better than nothing!
2024-09-19 13:16:27 -05:00
c62df3d8b3
sample-code: Add square root demo
2024-09-18 01:53:04 -05:00
fad28beb05
interpreter: Add float machinery
...
- operators
- type casting
2024-09-18 01:02:09 -05:00
0f8b0824ac
cl-parser: Fix precedence of comparison operators
2024-09-18 00:57:44 -05:00
99a00875a8
cl-intern: Derive Default for StringInterner and TypedInterner
2024-08-24 18:18:22 -05:00
8675f91aca
cl-ast: Remove tail from let (it caused more problems that it could've solved)
2024-07-31 03:19:20 -05:00
de63a8c123
cl-parser: Outline precedence parser
2024-07-31 02:55:01 -05:00
533436afc1
cl-parser: Move precedence parser into its own module
2024-07-31 02:48:39 -05:00
1eb0516baf
cl-parser: Rearrange to match cl-ast
...
Also reorder `Let` in the AST
2024-07-31 02:35:41 -05:00
97808fd855
cl-parser: Transliterate to a trait-based parsing implementation
...
Bump version number.
2024-07-31 01:39:00 -05:00
388a69948e
Revert "cl-ast: Unify break
, return
, and unary
expressions"
...
This reverts commit adb0fd229c
.
2024-07-30 22:31:39 -05:00
5e7ba6de24
cl-ast: Improve formatting of blocks and groups
2024-07-30 20:40:22 -05:00
adb0fd229c
cl-ast: Unify break
, return
, and unary
expressions
2024-07-30 20:16:07 -05:00
0e545077c6
cl-ast: Remove "Continue" struct
2024-07-30 19:42:28 -05:00
b64cc232f9
cl-ast: Move loop expression into unary exprs (with lowest priority)
2024-07-30 18:21:25 -05:00
b0341f06fd
cl-ast: Move let
into Expr
2024-07-30 18:02:09 -05:00
a3e383b53f
cl-token: Flatten TokenKind into a single enum (wow!)
2024-07-30 16:47:09 -05:00
1b217b2e75
typeck: Add a query for all strings
2024-07-29 15:55:53 -05:00
5662bd8524
cl-structures: (ab)use the Display trait to print a numbered, sorted list of interned strings.
2024-07-29 15:55:12 -05:00
28f9048087
cl-typeck: Fix infer.rs
doctests
2024-07-29 15:42:35 -05:00
b17164b68b
cl-interpret: Write an example for driving the interpreter
2024-07-29 15:42:05 -05:00
ecebefe218
cl-interpret: Knock those modules free!
2024-07-27 22:47:46 -05:00
fc374e0108
ascii.cl: TODO: throw out the interpreter (EVIL)
2024-07-27 20:00:22 -05:00
4295982876
ascii.cl: Cleanup on aisle "bitwise"
2024-07-27 19:59:35 -05:00
729155d3a4
ascii.cl: Fix type annotations (though they're not yet evaluated in the interpreter)
2024-07-27 19:38:41 -05:00
8c0ae02a71
sample-code/ascii.cl: Make it cooler
...
- Compute char value of digit
- Substitute C0 control codes for Unicode C0 Control Pictures
- Extend through Unicode Latin-1 Supplement
- Blank out C1 control code range
2024-07-27 19:34:37 -05:00
7f7836877e
sample-code: Add shebang comments to samples with a main() function
2024-07-27 18:56:36 -05:00
b2733aa171
cl-interpret/builtin: Add len
builtin as a quick hack to write more interesting programs.
...
This is temporary, I just want a way to get the length of a thing atm.
2024-07-27 18:43:03 -05:00
a233bb18bc
cl-lexer: Record the contents of comments
2024-07-27 18:41:50 -05:00
e06a27a5b1
cl-lexer: Treat #!/
| #!\
as a comment
2024-07-27 18:41:18 -05:00
3f5c5480ae
cl-interpret: [NOT FINAL] Add unicode-aware O(n) string indexing
2024-07-27 18:04:39 -05:00
53cf71608a
sample-code/hex.cl: Fix casting TODO, add to_string_radix function
2024-07-27 17:46:27 -05:00
883c2677d9
cl-parser: Index is NOT a low precedence operator!!!
2024-07-27 17:37:29 -05:00
7d98ef87d5
sample-code: proper type annotations on HEX_LUT, add FIXME for min and max
2024-07-26 06:22:29 -05:00
a188c5b65e
hex.cl: make the lut square
2024-07-26 06:17:00 -05:00
872818fe7c
sample-code/fib.cl: rename fib-iterative -> fibit (easier to type)
2024-07-26 06:13:59 -05:00
3aef055739
sample-code/ascii: Use as
casting to print the entire printable ASCII range
2024-07-26 06:10:59 -05:00
38a5d31b08
cl-ast: Escape string and char literals when pretty-printing
2024-07-26 05:51:20 -05:00
e43847bbd4
conlang: Introduce as
casting
...
Arbitrary primitive type conversion
Currently implemented as jankily as possible in the interpreter, but it works alright™️
2024-07-26 05:26:08 -05:00
a8b8a91c79
sample-code: print->println to match interpreter behavior
2024-07-26 05:13:52 -05:00
695c812bf5
cl-repl: increase jank: first positional arg is main file, remainder are imports
2024-07-26 05:13:06 -05:00
524c84be9e
cl_typeck: Add new primitive types (including joking-point numbers)
2024-07-26 03:24:34 -05:00
4096442f75
cl-typeck: Turn ref into a linked list.
...
This should be fine, since the only thing you can do with a ref is dereference it.
2024-07-26 02:14:41 -05:00
03a4e76292
cl-typeck: rustfmt implement.rs
2024-07-26 00:15:00 -05:00
46a1639990
sample-code: Have fun with random number generators
2024-07-25 23:59:41 -05:00
5ea8039a8a
typeck.rs: Update for new stdlib layout; don't hardcode the root stdlib module.
2024-07-25 07:09:12 -05:00
479efbad73
typeck.rs: Add file-loading mode
2024-07-25 07:08:07 -05:00
a462dd2be3
stdlib: Use Conlang module layout
2024-07-25 07:05:57 -05:00
4d6b94b570
conlang: Bump version to v0.0.6
...
- Major milestone: cl-typeck doesn't suck as much!
2024-07-25 05:56:05 -05:00
fe2b816f27
cl-typeck: Crate-spanning refactor part 2
...
- Removed all unreferenced files
- Reimplemented missing/nonfunctional behavior
- Added module documentation for most things
- TODO: item-level docs on Entry(Mut)
- Reparented the stages of Table population into the `stage` module.
- TODO: rewrite type inference to use only the tools provided by Table.
2024-07-25 05:55:11 -05:00