Related articles |
---|
Parsing nested structures with yacc amoebae@gmail.com (amoe) (2008-08-07) |
Re: Parsing nested structures with yacc cfc@shell01.TheWorld.com (Chris F Clark) (2008-08-08) |
Re: Parsing nested structures with yacc max@gustavus.edu (Max Hailperin) (2008-08-09) |
Re: Parsing nested structures with yacc kamalpr@hp.com (kamal) (2008-08-11) |
Re: Parsing nested structures with yacc amoebae@gmail.com (amoe) (2008-08-19) |
Re: Parsing nested structures with yacc max@gustavus.edu (Max Hailperin) (2008-08-20) |
From: | Chris F Clark <cfc@shell01.TheWorld.com> |
Newsgroups: | comp.compilers |
Date: | Fri, 08 Aug 2008 10:01:50 -0400 |
Organization: | The World Public Access UNIX, Brookline, MA |
References: | 08-08-014 |
Keywords: | parse |
Posted-Date: | 08 Aug 2008 18:40:22 EDT |
David <amoebae@gmail.com> writes:
> I'm trying to write a basic parser for S-expressions, basic list
> structures used in Lisp. This is mainly to help me understand Lex and
> Yacc. Since Yacc is meant to be good for recursive balanced
> structures, I thought it would be an easy project. I did find it easy
> to write a grammar that recognizes the correct form for an
> S-expression, however, I'm having a massive mental block when it comes
> to putting the data into a form in which it can be manipulated.
> Basically I want to convert the list syntax into an in-memory
> equivalent, using pairs (basically a linked list).
When manipulating a list, one often needs both access to the head and
the tail, because you insert the head into a list above it, but you
append things to the tail of the list. So, imagine that your parser
at each level returned a struct that had head and tail of the
underlying list (or if it is a single elt, both head and tail point to
the same thing). See, if that model doesn't allow you to add code to
your third grammar. For, the first version of the code don't worry
about where you allocate and free such structs, just that you have as
many as you need. After to you get that version working, the
management of these return value structs should be relatively obvious.
Hope this helps,
-Chris
******************************************************************************
Chris Clark Internet: christopher.f.clark@compiler-resources.com
Compiler Resources, Inc. or: compres@world.std.com
23 Bailey Rd Web Site: http://world.std.com/~compres
Berlin, MA 01503 voice: (508) 435-5016
USA fax: (978) 838-0263 (24 hours)
Return to the
comp.compilers page.
Search the
comp.compilers archives again.