Using a C struct to represent a node in a parse tree ... how many fields in the struct?

Roger L Costello <costello@mitre.org>
Fri, 8 Apr 2022 11:17:01 +0000

          From comp.compilers

Related articles
| List of all articles for this month |
From: Roger L Costello <costello@mitre.org>
Newsgroups: comp.compilers
Date: Fri, 8 Apr 2022 11:17:01 +0000
Organization: Compilers Central
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="77925"; mail-complaints-to="abuse@iecc.com"
Keywords: parse, question, comment
Posted-Date: 08 Apr 2022 11:50:38 EDT
Content-Language: en-US

Hi Folks,


The compiler book [1] that I am reading says this:


The most obvious way to represent the information gained from lexical and
syntax analysis is as a tree along the lines of the parse tree. In C this is
suitably handled using a simple struct for each node:


struct node
{
int nodetype ;
struct node *field1 ;
struct node *field2 ;
struct node *field3 ;
struct node *field4 ;
struct node *field5 ;
} ;


But, but, but, ..what if a node requires more than 5 fields; how is that
handled?


/Roger


[1] Introduction to Compiling Techniques, A First Course Using ANSI C, LEX and
YACC by J. P. Bennett, page 47.
[Use a bigger struct. You know what kind of nodes your parser creates, so define
a struct that does what you want. Personally, I prefer to define a struct for
each node type and a general node that is a union, or perhaps a union of
pointers. -John]


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.