Commit Graph

57 Commits

Author SHA1 Message Date
24db34db62 scope_analysis: added support for deferred computation
All checks were successful
ci/woodpecker/push/debian Pipeline was successful
ci/woodpecker/push/fedora Pipeline was successful
ci/woodpecker/push/nix Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-02-15 15:09:59 +03:00
7685ae2e45 interpreter: removed the outdated tree-walk interpreter
All checks were successful
ci/woodpecker/push/debian Pipeline was successful
ci/woodpecker/push/fedora Pipeline was successful
ci/woodpecker/push/nix Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-02-15 14:30:41 +03:00
8d301a6fc2 scope_analysis: fix the handling of Lambda forms
All checks were successful
ci/woodpecker/push/debian Pipeline was successful
ci/woodpecker/push/fedora Pipeline was successful
ci/woodpecker/push/nix Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/cron/debian Pipeline was successful
ci/woodpecker/cron/fedora Pipeline was successful
ci/woodpecker/cron/nix Pipeline was successful
ci/woodpecker/cron/publish Pipeline was successful
2026-02-12 18:32:36 +03:00
81dfc07867 compiler: added my first attempt at a scope analysis pass
All checks were successful
ci/woodpecker/push/fedora Pipeline was successful
ci/woodpecker/push/debian Pipeline was successful
ci/woodpecker/push/nix Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/cron/debian Pipeline was successful
ci/woodpecker/cron/fedora Pipeline was successful
ci/woodpecker/cron/nix Pipeline was successful
ci/woodpecker/cron/publish Pipeline was successful
2026-02-11 23:40:53 +03:00
bd6acf89e0 util: separated the monadic traverse into a utility module 2026-02-11 23:40:17 +03:00
a250d96c63 core_ast: remove letrec comment 2026-02-04 21:52:16 +03:00
3a3bf2c674 core_ast: removed letrec. we now treat it as let + set.
All checks were successful
ci/woodpecker/push/debian Pipeline was successful
ci/woodpecker/push/nix Pipeline was successful
ci/woodpecker/push/fedora Pipeline was successful
ci/woodpecker/cron/fedora Pipeline was successful
ci/woodpecker/cron/debian Pipeline was successful
ci/woodpecker/cron/nix Pipeline was successful
2026-02-02 22:36:55 +03:00
7402a688c7 compiler: remove unused files 2026-02-02 20:43:13 +03:00
ed4f49311c syntactic_ast: unwrapped the central GADT into several related types.
All checks were successful
ci/woodpecker/push/debian Pipeline was successful
ci/woodpecker/push/nix Pipeline was successful
ci/woodpecker/push/fedora Pipeline was successful
core_ast: related to the above, reorganized core_ast to use the new syntactic ast
2026-02-02 20:32:15 +03:00
bd907fe69a minor changes
All checks were successful
ci/woodpecker/push/debian Pipeline was successful
ci/woodpecker/push/nix Pipeline was successful
ci/woodpecker/push/fedora Pipeline was successful
2026-02-02 19:53:08 +03:00
d7729571ea core_ast: modify the core ast to use unary functions
All checks were successful
ci/woodpecker/push/debian Pipeline was successful
ci/woodpecker/push/nix Pipeline was successful
ci/woodpecker/push/fedora Pipeline was successful
ci/woodpecker/cron/debian Pipeline was successful
ci/woodpecker/cron/nix Pipeline was successful
ci/woodpecker/cron/fedora Pipeline was successful
2026-01-16 22:34:35 +03:00
12b347de38 general: removed containers dependency
All checks were successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/push/build-nix Pipeline was successful
2026-01-14 21:40:21 +03:00
11625c88c6 core_ast: add of_sexpr
All checks were successful
ci/woodpecker/push/build Pipeline was successful
2026-01-14 12:28:22 +03:00
d41d8e5fbe core_ast: add initial draft for the core ast, and a conversion function from the syntactic ast
All checks were successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/cron/build Pipeline was successful
2026-01-07 20:02:10 +03:00
ec56d76fb3 syntactic_ast: modify the phantom types to have concrete constructors, as the ocaml compiler cannot prove them distinct otherwise
All checks were successful
ci/woodpecker/push/build Pipeline was successful
2026-01-07 20:00:11 +03:00
be81061895 syntactic_ast: fix issue in set! parsing, add set! to the test case.
All checks were successful
ci/woodpecker/push/build Pipeline was successful
2026-01-07 18:18:38 +03:00
e25b6b0b10 syntactic_ast: fix issue in cond parsing 2026-01-07 18:17:24 +03:00
0d731f29b3 syntactic_ast: added a node for set! expressions 2026-01-07 18:13:55 +03:00
54c48ddf0e syntactic_ast: add node for if expressions
All checks were successful
ci/woodpecker/push/build Pipeline was successful
2026-01-07 18:03:28 +03:00
edc9d8b9e6 syntactic_ast: added parsing and pretty printing for cond expressions
All checks were successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/cron/build Pipeline was successful
2026-01-04 21:38:04 +03:00
e95a115acf syntactic_ast: Added proper handling for Let and Letrec
All checks were successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/cron/build Pipeline was successful
2026-01-03 21:35:27 +03:00
9fb29afc3e syntactic_ast: Modified letrec forms to also accept a body
All checks were successful
ci/woodpecker/push/build Pipeline was successful
2026-01-03 20:49:17 +03:00
17e533dbb8 Modified the GADT to distinguish bodies
All checks were successful
ci/woodpecker/push/build Pipeline was successful
2026-01-03 20:43:11 +03:00
6d95977324 ast: improved the implementation of syntactic_ast
All checks were successful
ci/woodpecker/push/build Pipeline was successful
debug: added debug functions for the syntactic_ast module
Modified the compiler executable to test a little bit.

todo: Some nodes of the syntactic ast are not yet emitted,
2026-01-03 18:30:47 +03:00
cb94372f29 new ast: added a new syntactic_ast module that provides a more structured AST as a GADT
All checks were successful
ci/woodpecker/push/build Pipeline was successful
2026-01-03 16:44:00 +03:00
bc7ca0fa2d new library: added containers as a dependency.
All checks were successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/manual/build Pipeline was successful
ci/woodpecker/cron/build Pipeline was successful
2026-01-01 13:36:09 +03:00
9981c222eb Added desugar phase for converting cond into a chain of if's 2025-12-28 21:04:45 +03:00
93ba06a6b0 Expand parser to include =, > and < as symbol characters 2025-12-28 21:04:45 +03:00
624d420afe Separated mutually recursive definition of desugar phases
They do not need to be mutually recursive at all. At first I thought
they would have to be, because I thought it would be best if each phase
completely desugared the bodies of the expressions they handle, but now
I see that would probably lead to an infinite loop.

There is simply no reason to couple them so tightly.
2025-12-28 21:04:45 +03:00
d80caadc85 Added gensym, and phases in the desugar module for logical and & or 2025-12-28 21:04:45 +03:00
be0d479665 Added desugar steps to add (begin) wrappers around long lambda bodies, and rewrite internal (define) forms into letrec forms 2025-12-28 21:04:45 +03:00
4f1ad54596 Started work on the compiler, with a desugar phase 2025-12-28 21:04:45 +03:00
58277ad0a3 Complete reorganization: finally at a building state again 2025-12-28 21:04:45 +03:00
adbf083c3d Reorganized project 2025-12-28 21:04:45 +03:00
8e980a8f1b Reorganized basically everything, making way for the compiler 2025-12-28 21:04:45 +03:00
81c349c70a Added pretty-printing. 2025-12-28 21:04:45 +03:00
6c2ae01a80 Improved the debug print function to pretty-print lists. 2025-12-28 21:04:45 +03:00
e46938005b Making preparations for more of the standard library 2025-12-28 21:04:45 +03:00
e2f1a55cb7 Revert "Minor changes"
This reverts commit 6243ace80b.
2025-12-28 21:04:45 +03:00
5b9de4d5a3 Minor changes 2025-12-28 21:04:45 +03:00
64e52cd0cf Added more math operations, generalized and simplified existing math operations, added some list operations for the lisp lists 2025-12-28 21:04:45 +03:00
2f9501450f Reorganized the standard library a little more, moved the initialization code for the standard environment into a function. Making way for more organization changes to come 2025-12-28 21:04:45 +03:00
a45918d203 Added type annotations for the environment module to make things clearer, switched bind_args implementation with a simpler one. 2025-12-28 21:04:45 +03:00
52eee92b7b remove mistaken autosave file 2025-12-28 21:04:45 +03:00
892f47ba5f Reorganized environment-related functions. 2025-12-28 21:04:45 +03:00
c7132325db Added some standard functions 2025-12-28 21:04:45 +03:00
c80d5fd75f reorganized a bit, separated bind-symbol into two operators that have different uses, def and set 2025-12-28 21:04:45 +03:00
Emin Arslan
3e53f3720f Removed irrelevant comment 2025-12-28 21:04:45 +03:00
Emin Arslan
d0accebf73 Changed the addition and subtraction functions to be clearer 2025-12-28 21:04:45 +03:00
Emin Arslan
9b20547e84 Added def, changed naming, and added if expressions 2025-12-28 21:04:44 +03:00