Compilers - Am I writing one?
hans at fugal.net
Mon Jun 30 07:47:42 MDT 2008
Daniel C. wrote:
> I started off on a project to write a simple little program (ha!) that
> would turn files written in a LaTeX-like (but much, much simpler)
> language (called Raskal) into a fully-formed web site. All of the
> "hard" stuff - i.e. the actual HTML, CSS, document structures, etc.
> will be defined in files elsewhere, and then glued together (and
> filled in with content) according to what's in a bunch of files
> written in Raskal. All I really have to do is read the Raskal files
> and then parse them and turn them into data trees and hand them off to
> another program (already written) which will take care of turning the
> data tree into actual HTML and putting it where it goes on the server.
You've had some good advice. I think learning all that "painful" stuff
is immensely valuable, but of course time is our enemy. I think what you
need to understand to accomplish the task is much less: you need
parsing, abstract syntax trees (which are already defined for you), and
the already-written HTML generation. So really, you need parsing. You
mentioned lisp, so I don't know where to point you for actual tools, but
if you were using another language I'd recommend you look at
http://pdos.csail.mit.edu/~baford/packrat/ It gets rid of the silly
distinction between lexing and parsing, it allows you to keep your
grammar closer to the ideal (what Levi was discussing), and mixing in
the code (to generate your AST) is syntactically quite workable (based
on the one or two ports to languages I've looked at).
In short, find yourself a parser generator and learn how to use it. This
will involve understanding grammars and ASTs and maybe how to tweak a
grammar to fit the needs of the parser generator. Anything else you
choose to learn is icing on the cake.
As for the dragon book, it looks like an excellent book for digging
really deep (I haven't read it but I've perused it). But it doesn't look
like a practical book for the modern practitioner just looking to get
things done (it's dated now, and it spends a lot of time on things you
won't need to worry about). I want to read it sometime.
Hans Fugal ; http://hans.fugal.net
There's nothing remarkable about it. All one has to do is hit the
right keys at the right time and the instrument plays itself.
-- Johann Sebastian Bach
More information about the PLUG