in reply to Graph File Parsing

If you don't mind slurping the whole file into memory you can do it with regexps. First divide the file into part containing nodes and another one containing edges. Than do a match similar to this:
while($nodepart =~ m/node\s* \{\s* title:\s* "([^"]*)"\s* loc\s* \{\s* x:\s* (\d+)\s* y:\s* (\d+)\s* \}\s* \}\s*/gx){ build_the_structure_with_captured_node($1,$2,$3); }
And another one for the edges.

Most of languages have some regexp library - so this can work.

Update: The s modifier was not needed - \s matches a newline without it.