|
|
Invisible wrote:
> Given that I'm the only person here who knows how to read Haskell
> syntax, a link to the Parsec user manual seemed... a little pointless.
Oh. I *highly* suggest you put this up on your blog or your web site or
something like that, for public consumption. Get comments from a lot of
people, find jobs in Haskell and/or teaching because you can write like
this, etc.
> Heh. What do *I* know about parser theory? ;-)
I don't know. It seemed like a fair amount. :-) This is all stuff you
learn in the first semester of compiler construction class.
> The point is, Parsec will parse just about anything, although as you say
> it "works best" for LALR(1) grammars. It's quite surprising how simple
> and easy to explain the library is - and yet it handles almost anything.
> (I don't know if I made it clear, but Parsec parsers are a state monad.)
Yes. I'm just saying it "works best" because LALR(1) parses without ever
needing to use P_Try(). I.e., you don't need anything like exceptions
or input buffers to parse an LALR(1) grammar using the programming
language's stack - you need enough memory to hold one token, and you can
output results as soon as any production is recognised, and you only
need stack space proportional to the most nested expression in your
input, and you don't need any memory to outlast the parsing of the
productions you're currently parsing.
Of course, once you add arbitrary function calls and arbitrary buffering
(via P_Try and SuperCombiner) then you can parse lots more; it just
takes more code and more memory and potentially global data structures.
--
Darren New / San Diego, CA, USA (PST)
Post a reply to this message
|
|