Commit Graph

20 Commits

Author SHA1 Message Date
0b2b97a0c6 add type database and compile-time reflection 2026-09-15 21:28:41 +03:00
e751ce2cb9 add sdl3 triangle example 2026-09-15 21:28:41 +03:00
d609a0c591 begin -> do
Shorter and doesn't imply existence of `end'
2026-09-15 16:32:55 +03:00
48a3d06925 move Sex to better types
Types, fns and vars are now written in another, better, more intuitive
and readable way.

Types:
"pointer to const char" is "* const char"
"array of pointers to volatile int" is "[* volatile int]"
Read left to right

Vars (as well as fn args, struct fields):
(var name type)
(struct vec3 ((x float) (y float) (z float))
(fn vec3-add ((v1 vec3) (v2 vec3)) vec3 ...)

Also fns are now have return types after arg list.

* is now must not be attached to any type name (or variable for that
matter)
2025-10-30 18:05:44 +03:00
775e321597 add support for nested lambdas 2025-10-01 14:10:42 +03:00
442f663635 add initial lambda support
No closures for now, but solid groundwork is laid.
2025-09-30 09:35:16 +03:00
b1744bb6af split semantic processing and fmt-c code generation
Introducing Sex SEMantic ENgine: the semen.
Also split reader to other file (it can be replaced in the future).
Macro expansion inside Sex code doesn't work yet, and it must be done
in semen, not during fmt-c generation as before.
2025-09-29 15:50:01 +03:00
d5e443a72c force c89 pedantic compilation mode 2025-08-22 15:47:36 +03:00
78977e988e add support for begin in Sex
begin-wrapped blocks are now creating lexical scopes
2025-08-22 15:47:36 +03:00
6c6e00e6dc implement new macro system 2025-08-06 15:38:04 +03:00
3ad25b3788 make return explicit
Required pulling in fmt-c.scm file though :(
2025-08-03 19:01:19 +03:00
3e535c9517 update example and Readme.org 2025-08-02 10:49:38 +03:00
44a352849a implement modules 2025-08-02 10:49:38 +03:00
93a4d181d0 add hello-world example 2025-08-02 10:49:38 +03:00
76ca609ea6 Make Sex templates more pleasant syntactically
No more unquotes to instantiate templates.
Also no need to pass quoted substitution lists, just use them as
regular lisp macros.
2025-07-11 18:27:50 +03:00
075116dfd2 support cpp define 2025-06-14 18:10:20 +03:00
97205ed8ef don't unkebabify -> in symbols (it's -> from C) 2025-06-14 17:48:41 +03:00
650bff6d0e fix pub function prototypes 2025-06-14 17:10:09 +03:00
bd71dcc8a7 add chicken-import support to sex
also fix unquoting to single atom processing wrongly in walk-sex-tree
2025-06-14 14:07:00 +03:00
f309f83dbb rename dir lib -> example
because it is not quite lib yet, but an example dump definitely
2025-06-14 12:40:15 +03:00