From: Daniel Kraft <d@domob.eu>
To: Andy Wingo <wingo@pobox.com>
Cc: guile-devel <guile-devel@gnu.org>
Subject: Some more elisp aspects: Reader and documentation
Date: Sat, 01 Aug 2009 16:39:30 +0200 [thread overview]
Message-ID: <4A7453A2.2020808@domob.eu> (raw)
Hi Andy and all,
as the main elisp compiler gets more and more complete (well, still a
lot details missing as well as probably even most built-ins, but
anyways), I think I'll also work on a real elisp reader (currently,
Guile's Scheme reader is used) as well as some (internals) documentation
about what I did, am doing and will do in the future. I hope this
sounds like a good plan ;) BTW, if you want to review the compiler, we
could agree on a "freeze" to compiler changes on the branch so you can
do it freely, while I work entirely on the reader or documentation?
Regarding the reader, I think we've got two basic options (this was
already disussed briefly here at the start of my project, IIRC):
1) Use the existing reader code in C and try to adapt it so that it
(maybe controlled by some kind of "options") cares correctly about the
differences between elisp and Scheme. This might save some work as the
basic reading of S-expressions, literals and the like can be shared, and
the code will probably run fast; on the other hand, I'm not sure if we
might risk messing things up and getting some passages complicated in
order to have it handle alternatively both Scheme and elisp. To be
honest, I've so far not looked at the reader C code thoroughly, so I
can't judge what this will really lead us to.
2) Write a seperate elisp reader, possibly in Scheme (but could be C as
well if that's important for performance). This helps us keep "both"
readers clean and seperate, but all has to be done from ground up and
the code is probably slower (when written in Scheme). But my opinion is
that performance will not matter that much here anyways (because the
compiler probably takes most of the time, not the parser), and
implementing parsing of S-expressions and the like is not really hard,
so we won't lose much by not sharing existing code here. So if you
don't have another opinion because you know the existing code better
than I do or see problems I don't, I'd go with this approach.
For this and in order to get meaningful debug and error outputs, I guess
I'll have to find and associate the source code positions myself with
read objects, right? It seems that I can use port-line and port-column
to get the position of something just read, and set-source-properties!
to associate line/column to the expressions? Anything else I need to
care about then?
Documentation: Currently, I've got the module/language/elisp/README
file with some notes, mainly about stuff implemented/missing as well as
the extensions I implemented over original elisp. Additionally, I tried
to explain most "internal workings" very briefly directly with comments
in the source code; but I think it would be nice to have some very basic
information (like, how dynamic binding or the "void" value of variables
is implemented, or the different modules for function/value slots) also
in the real docs. Where do you suggest I put them
(chapter/section/subsection of what part of the documentation)?
Yours and have a nice weekend!
Daniel
--
Done: Arc-Bar-Cav-Ran-Rog-Sam-Tou-Val-Wiz
To go: Hea-Kni-Mon-Pri
next reply other threads:[~2009-08-01 14:39 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-01 14:39 Daniel Kraft [this message]
2009-08-17 11:46 ` Some more elisp aspects: Reader and documentation Ludovic Courtès
2009-08-17 12:07 ` Daniel Kraft
2009-08-17 12:17 ` Ludovic Courtès
2009-08-17 12:59 ` Daniel Kraft
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A7453A2.2020808@domob.eu \
--to=d@domob.eu \
--cc=guile-devel@gnu.org \
--cc=wingo@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).