Homeworks From Hell

I just spent an inordinate amount of time on Dr. Deremer’s BNF homework. I’m still not sure if I got everything right but I just don’t feel like looking at it again. I still haven’t figured out a way to typeset BNF’s in latex.

What I do is I use the inline math environment to treat the BNF as a math formula. This has an unfortunate side effect, as the default latex behavior is to break line on inequality symbols. Most BNF tokens are of the form <token> so, if the line is broken on < or > it looks absolutely ridiculous. I simply enforced manual line breaks, and forced alternate spacing using \quad and \qquad. This is far from optimal solution. I need to find a better way to do this for the future.

On the other hand, I found a great way to draw parse trees using the pstricks package which should be bundled by default with most modern latex installations. I drew all my trees by hand, and then just coded them up. The syntax is super easy:

\pstree{ \TR{root} }
{
\TR{child-1}

\pstree{ \TR{child-2} }
{
\TR{sub-child-of-2}
}
}

It was quite painless to modify and change these things. I really don’t envy people who were doing these things in Word. I wouldn’t even attempt to make tree’s in word if someone paid me to do this. As far as I’m concerned, WYSIWYG office suites are retarded. The only proper way to write documents is to typeset in latex. But that’s just me…

Btw, if you are wondering about problem 13 here is a hint: the parse tree for the grammar needs to grow symmetrically on both right and left. Focus on the middle node. Think “christmas tree”. The grammar is a one liner actually – very simple and elegant in a way. It took me hours to figure this damn thing out. I think I was over thinking it way to much.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: