help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Tree-like construction while parsing the input file


From: Ilyes Gouta
Subject: Tree-like construction while parsing the input file
Date: Sat, 10 Jan 2009 16:41:10 +0100

Hi,

I'm writing a simple C header file parser using bison and I would like to
build a tree structure (a simplified AST) which will hold all the elements
of a given .h file.

Here is a snippet of my grammar:

input:
|   declaration input
;

item_list:
|   item_declaration item_list
;

enum_item:
    id                   { add_node_item(handle, &$1); }
|   id '=' expr          { add_node_item(handle, &$1); }
;

declaration:
    TYPEDEF ENUM { handle = add_node(TYPE_ENUM); } '{' enum_list '}' id ';'
{ set_node_name(handle, $6.text); check_stack(); }
|   STRUCT id { handle = add_node(TYPE_STRUCT); } '{' item_list '}' ';'
{ set_node_name(handle, $2.text); }

add_node(TYPE) will allocate the container as soon as we can tell if we're
processing a struct or an enum (for example). Now, I'd like the enum_listand
item_list rules to be able to "see" the allocated container so that I can
populate it when the parser hits those rules. I don't like to use global
variables (such as handle in this example) since declarations may be nested
and thus handle won't point to the correct container.

Any ideas?

Regards,
Ilyes Gouta.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]