Re: How to learn about parsing

[email protected] ((Randal L. Schwartz))
Newsgroups perl.recdescent
Organization Stonehenge Consulting Services; Portland, Oregon, USA
Message-ID <[email protected]>
>>>>> "Chris" == Chris Warren <[email protected]> writes:

Chris> As part of my job, I have to do a lot of work munging message
Chris> files; each file contains information about multiple
Chris> messages. After writing a few programs that get specific bits
Chris> of information out of these files, I'm starting to think that a
Chris> proper parser is what's needed, and any time I need information
Chris> out of the message files, I can use this standard parser to get
Chris> whatever I need.

Chris> My first problem with this theory of mine is that I don't have
Chris> a formal computer-science education, and I don't think I
Chris> understand parsers (and, more on-topic, Parse::RecDescent) well
Chris> enough to write one. Can anyone recommend a good book or
Chris> tutorial on the subject of parsers, or should I stick to
Chris> piecemeal solutions until I find a computer-science degree?

I've heard that the O'Reilly "Yacc and Lex" book offers a good gentle
introduction for first-timers to parsers and lexers, although I've not
personally read it.  (I haven't read *every* O'Reilly book yet -- they
keep coming out with too many of them! :)

And to give you hope, *I* also don't have a formal CS education in the
slightest.  I learned parsers by studying the Unix docs for Yacc some
20 years ago, and lexers by studying the Unix Lex docs, and wrote a
program similar to my "spew"
(<http://www.stonehenge.com/merlyn/LinuxMag/col04.html>, and part of
the P::RD distro now) in Yacc and Lex as a personal exercise to see if
I understood.  I still haven't a clue what LALR and LL mean, and I can
barely tell the difference between recursive descent and the rest, but
I know P::RD rocks cuz it's Damian code. :)

Of course, the action language for Yacc and Lex is C.  You've got it
tons easier to do the same thing with P::RD, because the action
language is Perl. :)

Hope that helps... and if anyone finds something better than
O'Reilly's book, let *me* know so I can recommend it as well.

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<[email protected]> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.