freenode/#sicl - IRC Chatlog
Search
13:33:02
scymtym
beach: did it work for you? i tried the github versions in a fresh environment and everything seemed to work. if so, (s-expression-syntax:parse 'list t '(let ((a 1)))) should return a list-based AST
13:41:35
scymtym
what do you mean by "my own repository"? if you already have one, isn't it also cloned from github?
13:44:15
scymtym
the system definition is in the repository root directory so it should be picked up without any additional tweaking
13:45:09
scymtym
can you check that repository? as i said the definition all systems should be in the repository root
13:45:30
scymtym
concretely, there should be a s-expression-syntax.expression-grammar.asd in the s-expression-syntax repository
13:46:36
beach
I removed my local copy of the s-expression-syntax repository since it is in quicklisp.
13:47:37
beach
I used to have a symbolic link in local-projects to a clone of your repository, and I removed the symbolic link so that it would use the Quicklisp version instead.
13:49:41
beach
I took your advice (ql:quickload :s-expression-syntax) to mean that s-expression-syntax was in Quicklisp.
13:50:33
scymtym
i suggested that way of loading the system because it will automatically install missing dependencies from quicklisp even if the system itself is not in quicklisp
13:53:14
scymtym
great. try (s-expression-syntax:parse 'list t '(defun foo (a &optional (declare (type integer a)) (+ a b)))) for a more interesting result
13:56:56
scymtym
to parse CSTs, load s-expression-syntax.concrete-syntax-tree and do something like (let ((s-expression-syntax.expression-grammar:*client* (make-instance 's-expression-syntax.concrete-syntax-tree::cst-client))) (s-expression-syntax:parse 'list t (cst:cst-from-expression '(let ((a 1))))))
14:13:01
beach
Now, let's think about this situation for a while. Let's say some Common Lisp implementation would like to use your stuff for their native compiler. Then, they would either have to first already have a complete system to load your stuff, or else they would have to use the SICL bootstrapping technique.
14:14:42
beach
So either 1. SICL will be the only client. 2. Other implementations would have (at least) two compilers, or 3. I would have to make the SICL bootstrapping technique possible for implementations other than SICL.
14:16:40
beach
scymtym: I mean, these libraries of yours are not the only ones that we try to make other implementations use, and all the SICL modules that we claim can be used by other implementations are now written using the full Common Lisp language.
14:17:59
beach
I suppose there is still the option for other implementation of writing an initial compiler or interpreter and then bootstrapping the rest of the system from there.
14:19:51
beach
On the other hand, the SIC bootstrapping procedure makes very few assumptions about object representation. At least I think so.
14:24:43
beach
Looks good. I'll proofread, but slowly, because I need to fix dinner for my (admittedly small) family today.
14:25:55
beach
The preposition used in the AMOP is "to" for "specialized to", and "on" is used for methods "on" a generic function (I think).
14:26:26
beach
I first thought this was a quirk because the authors of the AMOP had foreign-sounding names, but I think the are mostly native speakers of English.
14:29:48
beach
Your phrase "it must supply a client object to these generic functions that can be clearly distinguished..." sounds like it is the generic functions that can be distinguished. Maybe "it must supply a client object to these generic functions, and that object must be distinguished..."
14:32:51
beach
Hello shka_. Short English lesson: "advice" in English is not countable. It's like "water" or "air". "I need a piece of advice" or "I need some advice'.
14:37:46
heisig
Yes, the AMOP talks about methods "specialized to" a particular class. I will fix that.
14:45:51
scymtym
shka_: i have mostly worked with unconventional parsing techniques like packrat and derivation-based parsing. that said, smug and esrap are probably both fine unless your language has something unusual like indentation as syntax or complicated context dependencies
14:46:34
scymtym
cl-yacc corresponds to a more conventional approach but i found it less convenient to use
14:50:15
shka_
scymtym: thanks, i will go with maxpc for now because documentation feels easier to digest
14:51:06
scymtym
shka_: if performance isn't much of a concern and the language isn't super complicated, anything should be fine, really
16:17:25
beach
I think I will take the rest of the day (what little is left of it) off. I have a lot of information to digest with respect to s-expression-syntax and the implications for both existing modules and a more global strategy.