Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
39 check-ins
2024-02-28
| ||
01:20 | add in a modulo operator, and support for multiple values in a match pattern, along with a bug fix around handling of _ blackholes in pattern matching and boolean values in patterns. This gets the fizzbuzz example working \o/ Leaf check-in: 1abb5cfc15 user: JoshAshby tags: trunk | |
2024-02-24
| ||
04:25 | fixup the tests to align with the current set of sexpprinter stuff check-in: 595544639b user: JoshAshby tags: trunk | |
2023-12-02
| ||
04:35 | "working" type checker. It's passing the kitchenSink example so that's good news, now to start fixing all the tests and what not and figuring out where it's wrong and broken check-in: 8027d12a88 user: JoshAshby tags: trunk | |
01:43 | some other small cleanups check-in: fe5628fe63 user: JoshAshby tags: trunk | |
01:40 | less long token type enum check-in: 500f453886 user: JoshAshby tags: trunk | |
01:37 | more work to support the type checker and figuring out how to handle checking pattern matching as well. getting closer to a somewhat passable checker! check-in: d55e05ef49 user: JoshAshby tags: trunk | |
2023-11-24
| ||
21:22 | and a small error typo check-in: 1280e89210 user: JoshAshby tags: trunk | |
21:21 | fill out some missing cases for the reference interpreter check-in: 7cd8f6d0a3 user: JoshAshby tags: trunk | |
19:31 | go through a boring transition from the all class based AST to a smaller and sum-typed enum/class combo setup that makes it easier to add new nodes and having the compiler complain about them missing in the right places. Also lets the AST carry the tokens around better now too. check-in: 3f01eede4a user: JoshAshby tags: trunk | |
2023-11-23
| ||
06:12 | fixup var resolution to handle pattern variables a bit better check-in: c647f15ec9 user: JoshAshby tags: trunk | |
06:09 | working on naive matching within the reference interpreter and slowly figuring out what else I need to start adding soon and how I might want that to look. I've got most of the basic pattern matching working however so that's nice and I think I've got a handle on how to do this for more complex stuff check-in: d3c33235e9 user: JoshAshby tags: trunk | |
2023-11-22
| ||
06:38 | finish all but pattern matching in the reference interpreter check-in: b4f320a7cd user: JoshAshby tags: trunk | |
03:50 | fix up loop expection handling by throwing things everywhere. there is probably a better way to handle this all but this works for now check-in: 2ea81cf2ac user: JoshAshby tags: trunk | |
03:28 | more work on putting together the reference interpreter, getting closer to having all but match expressions working check-in: b006b9d1c2 user: JoshAshby tags: trunk | |
01:48 | switch gears and start throwing together a small tree walker interpreter to play with while still thinking about type checking match expressions and handling pattern matching. I know I'm going to hit the same problem in the interpreter but maybe I can figure something out there with a different thought on it check-in: 3357871325 user: JoshAshby tags: trunk | |
2023-11-18
| ||
18:46 | working more on the type checker, feel like I'm getting a little closer but now I've got to figure out pattern matching type checking check-in: f4f2dd9594 user: JoshAshby tags: trunk | |
2023-11-17
| ||
05:05 | fix a parser bug around call parameter lists, and progress into the next level of LL(n+1) parsers \o/ check-in: 0baefa952a user: JoshAshby tags: trunk | |
2023-11-16
| ||
06:05 | working on expanding the ast and adjusting the parser to handle some cases that I think i need. now working through some parser bugs from the adjustments check-in: f9ddc63ba1 user: JoshAshby tags: trunk | |
01:06 | still slowly thinking about how to figure out the type checking since there still isn't fuck all ground up articles about this check-in: 972fcf70f1 user: JoshAshby tags: trunk | |
2023-11-14
| ||
01:42 | comment out the prop access for now, rework some of the patterns to make things a little nicer and add an example file and let the cli start taking in some files to run and work through check-in: 120b466941 user: JoshAshby tags: trunk | |
00:08 | fix resolving for now and get it compiling on macos too check-in: 83de94ba4a user: JoshAshby tags: trunk | |
2023-11-13
| ||
23:52 | working on debugging the var resolution stage while thinking about the type checker. also added in support for declaring "external" functions that'll be bound through the runtime or linking later on but still need type defs check-in: 57856a475c user: josh tags: trunk | |
03:44 | trying to learn how to do a bidirectional type check but thankfully all the articles out there DON'T COVER ANYTHING BUT FUCKING THEORY JESUS FUCKING CHRIST PEOPLE check-in: 16a6a3e2c2 user: josh tags: trunk | |
2023-11-10
| ||
06:00 | working on figuring out the symbol table and type checker, needing to expand the ast a bit for function parameters and type annotations plus adding annotations to the parser, and playing around with a different ast representation that might be easier to work with long term check-in: 90530e3684 user: josh tags: trunk | |
2023-11-03
| ||
00:55 | add in match and break expressions parsing which brings at least the real core features in the parser hopefully to a close, now onto figuring out what direction to go in next. although it seems like I should make a basic symbol table builder pass first before I can start thinking about adding type annotations for a type system or anything else like figuring out the pattern matching and what target I want to compile for check-in: a3f6abb39a user: josh tags: trunk | |
2023-10-29
| ||
21:08 | parse function calls check-in: ef70d7f66b user: josh tags: trunk | |
20:07 | loop declarations, not 100% sure if these should be separate from the pratt expression parser or not but oh well this works for now! also thinking about pattern matching and function defs and how I might want that to work check-in: 9b49001a8e user: josh tags: trunk | |
2023-10-28
| ||
21:18 | add in property access with the dot operator check-in: c829356819 user: josh tags: trunk | |
21:04 | add other missing binary/unary calls check-in: af45649b3b user: josh tags: trunk | |
20:55 | add in function calls and grouping check-in: 95361f8344 user: josh tags: trunk | |
18:57 | fix an issue with variables but need to still figure out how the tests were passing any not failing first, as well as implement assignment handling. I'm curious if I need the whole "can assign" weave from Crafting Interpreters here since this is a multi-pass compiler that can handle figuring out what to codegen check-in: 5476e0fb7e user: josh tags: trunk | |
16:53 | Add in basic variable expressions and rename a tad few things, as well as some error messages. check-in: 61ac9c1c50 user: josh tags: trunk | |
01:57 | Work on adding let variable declarations. still figuring out how to handle making this all smooth to implement for new features check-in: 6c577f05d5 user: josh tags: trunk | |
2023-10-27
| ||
22:30 | rework the pratt parser rules to allow me to continue using instance methods, small amount of docs and some renaming check-in: c53f615840 user: josh tags: trunk | |
22:29 | iterate on some thoughts of keywords and change lex to use read while I work away from it. Also thinking about tests around the lexer/parser check-in: 977884957c user: josh tags: trunk | |
17:57 | move towards lowercase enums for more swifty convention, some other small renames check-in: 08ff1d5383 user: josh tags: trunk | |
2023-10-26
| ||
19:36 | small adjustments with filenames check-in: f8c0bfdd5e user: josh tags: trunk | |
18:38 | Initial working version of an adjusted Pratt parser, using the lexer and initial parser structure from amuse. I changed to using a class based AST as well in the hope that it would have made the visitor/walker nicer but I'm not convinced it's any better (although supposedly it'll be faster since enums with associated values are treated as value types still ) check-in: b006e583f3 user: josh tags: trunk | |
18:31 | initial empty check-in check-in: 64526bd313 user: josh tags: trunk | |