freenode/#clasp - IRC Chatlog
Search
10:39:41
beach
How about this solution for the source position: I define a special variable *client* (value is NIL by default) which can be bound by client code before calling CST-READ. I also define a generic function SOURCE-POSITION with two arguments, a stream and a client. When source position is wanted, the function is called with the stream and the value of *client*. The default method calls CL:FILE-POSITION.
10:40:00
beach
That way, client code can specialize on the stream class, on the client class, or on both.
10:43:43
Shinmera
Reminds me of a similar strategy I used in my testing framework to allow controlling test evaluation behaviour by the current report the tests should be evaluated with.
14:00:35
beach
I implemented the customization for source information. There is now a variable *CLIENT* and a generic function SOURCE-POSITION in the reader.
14:05:26
beach
I guess for backquote, I need three generic functions: BACKQUOTE, UNQUOTE, and UNQUOTE-SPLICING. Each one takes a form and wraps it according to the client way of doing it.
14:28:39
beach
OK, I think we have a fairly complete reader that can return CSTs with source information. I do think we should extract it to a separate repository, document it, and add a test suite.
14:52:38
Shinmera
beach: Does it have a system that lets users intervene when symbols are about to be interned or looked up?
14:53:32
Shinmera
And by users I mean people writing libraries and applications, not implementation writers.
14:55:24
Shinmera
Would need something like a series of functions that can be run until one of them "accepts" the token for some value.
14:58:56
beach
Well, I should definitely add the CLIENT parameter to INTERPRET-TOKEN now that I have it in other functions.
19:11:16
frgo
drmeister: I have the following line of code to expose a C++ class: class_<dds::core::Entity>("Entity", no_default_constructor) . What is the class name and package name form Lisp land for this then?
19:12:05
drmeister
The class name is ENTITY and the package is whatever package is wrapped around this declaration