Name: Seth Gordon
Member since: 2000-04-13 14:46:46
Last Login: N/A

Homepage: http://www.ropine.com

Notes:

I work as a technical writer for Kenan Systems, a subsidiary of Lucent that makes software for telecom and utility companies. The nice thing about being a technical writer is that if you have one grammatical error in the middle of one paragraph, the whole book it's embedded in doesn't become unreadable. (Well, not usually.) My current activities are:

  • Getting a couple of Linux machines at home to talk happily with another and with my ISP. Maybe I'll use the diary to post some of my, umm, learning experiences.
  • Taking a C++ class, and thus learning why so many people hate it. To redeem my soul, I'm going to try writing a Scheme interpreter for my final project in this class.
  • Writing a Perl module to handle MIF (Maker Interchange Format) files.

Recent blog entries by sethg

Finally I have some time to work on the FrameMaker::Mif project again. To paraphrase Spock, I am trying to build a LL(1) parser with stone knives and bearskins.

  1. The first time I tried writing the MIF parser, I used the Parse::RecDescent module. Unfortunately, when I encountered bugs -- I don't know whether they were my bugs or the module author's -- I had trouble debugging it, because the data structures that Parse::RecDescent produces are large, hairy, and contain code references (which Data::Dumper doesn't print out).
  2. Then I wrote a yacc grammar and used the -P (if memory serves) switch on byacc to generate a y.tab.pl file. I got a bare-bones module working with that technique, but now I want to change the data structure that the parser generates, and since I am a Prisoner of Bill here, schlepping files to and from a Unix account every time I want to tweak the grammar is not my idea of a good time.
  3. Then I thought, aha, Perl now ships with all these funky XML modules -- I can just translate the MIF file into an XML-syntax file that has exactly the same abstract structure, and use the XML modules to read the file back in and play with it. This is beginning to look like more trouble than it's worth.
  4. So, I've been boning up on the Tiger Book, writing up grammars, and then working out the FIRST and FOLLOW sets. Eleven terminals, ten nonterminals, nineteen productions, nothing but paper 'n ink. (I oughtta be a good boy and write a script to check my math before I actually implement this thing, right?) If I code this and it works, then I'll probably just download Parse::RecDescent again and use it. If it doesn't work, at least I'll have a better chance of knowing why....

\begin{maxwellsmartvoice}
Aha, the old "failing to end a class definition with a semicolon after the closing brace causes a syntax error on the next line" trick. Second time I've fallen for it this semester.
\end{maxwellsmartvoice}

 

sethg certified others as follows:

  • sethg certified sethg as Apprentice
  • sethg certified Sunir as Apprentice

Others have certified sethg as follows:

  • sethg certified sethg as Apprentice

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

X
Share this page