Commit Graph

14 Commits

Author SHA1 Message Date
0d314388f0 fix arrays of structs, multiple struct fields with same type 2025-10-30 18:05:44 +03:00
851abd1ac2 prettify reader test with a nice macro 2025-10-30 18:05:44 +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
3d11426165 move basic and semen tests to groups 2025-10-30 18:05:44 +03:00
45d9199c27 add reader syntax for []
Now [...] reads to (¤ ...) for easy semantic processing
2025-10-30 18:05:44 +03:00
036f82facf add couple list utils
list-split and list-join
2025-10-30 18:05:44 +03:00
fd61e753dc fix tests 2025-10-01 16:29:46 +03:00
06892e1afa re-implement macro-expansion using new semantic walker 2025-09-29 15:56:51 +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
6a9885ebb0 add bool true false tests 2025-08-22 15:47:36 +03:00
8bbf44f329 split test in separate test files 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
41c3f3bd98 make fmt-c a unit 2025-08-03 21:44:43 +03:00
4b6a7d5209 add sex-tests 2025-08-02 10:49:38 +03:00