libera/#sicl - IRC Chatlog
Search
13:06:00
beach
I created a system called sicl-expression-to-ast that i hope one day will replace cleavir-cst-to-ast and which uses the s-expression-syntax library for parsing (for now only) special forms, thus removing lots of syntax verification from cleavir-cst-to-ast.
13:06:09
beach
It also uses the new library Iconoclast for it AST classes and for building ASTs using the architecture.builder-protocol.
13:06:14
beach
For now, I am using a very simple global environment that does a lot of things wrong, and that trampolines to the host global environment for functions and variables.
13:06:17
beach
I am telling you this because of the progress today. I successfully created an AST from the expression (PROGN (CAR *STANDARD-INPUT*) (CDR *STANDARD-INPUT*)), so the s-expression-syntax library was involved in the creation of the PROGN-AST.
13:10:47
beach
Bike: I was thinking about how to create an initial Clostrum environment filled with macros for a cross compiler. And it seems to me that you need something like the AST-evaluator of SICL. The body of a macro can very well refer to other macros, so the macro body must refer to the Clostrum environment.
13:10:48
beach
The way we do this in SICL is we turn the macro code into an AST and then we turn the AST into host code but with references to global stuff replaced with calls to Clostrum functions.
13:43:15
Bike
i was thinking the macro functions could be pretty normal host code - i don't see why it would matter what macros they use, as long as the actual expansion is to target code. more involved macros like defmethod i haven't thought about much, though.
13:43:34
Bike
if i did need the macro function to use clostrum i could just use the VM for that, though
13:49:14
beach
But wouldn't you then have to create special code for the host versions of the macros?
13:50:46
Bike
i was expecting to have to do that anyway, i guess? i think i'm confused. like say, the loop macro - i would need to create special code in that i'd have to load the khazern-extrinsic system, rather than the host loop.
13:53:37
Bike
this is also why i was asking about the sicl macro definitions before. if they expand into sicl-specific code i can't really use them (but luckily they seem pretty portable)
13:56:58
beach
I would still be interested in trying to create a system to which you can give a bunch of macro definitions and which will give you a Clostrum environment containing those macros. Complicated stuff like LOOP would have to be handled differently, of course. I have no idea how to structure such a thing though.
15:22:47
Bike
an idea in Kernel is a LOAD that, rather than simply evaluating the forms for effect in the current environment, constructs a new environment, adds new definitions to it, and then returns it
15:23:07
Bike
you can also incorporate some module stuff like having the file list which definitions should actually be visible in the returned environment and which are just auxiliary
15:23:27
Bike
i hadn't thought about it in a CL context before, but it might be useful for building up a cross compilation environment without the code being too unnatural