struct
If the ‘-t’ option (or, equivalently, the ‘%struct-type’ declaration)
is enabled, you must provide a C struct
as the last
component in the declaration section from the input file. The first
field in this struct must be of type char *
or const char *
if the ‘-P’ option is not given, or of type int
if the option
‘-P’ (or, equivalently, the ‘%pic’ declaration) is enabled.
This first field must be called ‘name’, although it is possible to modify
its name with the ‘-K’ option (or, equivalently, the
‘%define slot-name’ declaration) described below.
Here is a simple example, using months of the year and their attributes as input:
struct month { char *name; int number; int days; int leap_days; }; %% january, 1, 31, 31 february, 2, 28, 29 march, 3, 31, 31 april, 4, 30, 30 may, 5, 31, 31 june, 6, 30, 30 july, 7, 31, 31 august, 8, 31, 31 september, 9, 30, 30 october, 10, 31, 31 november, 11, 30, 30 december, 12, 31, 31
Separating the struct
declaration from the list of keywords and
other fields are a pair of consecutive percent signs, ‘%%’,
appearing left justified in the first column, as in the UNIX utility
lex
.
If the struct
has already been declared in an include file, it can
be mentioned in an abbreviated form, like this:
struct month; %% january, 1, 31, 31 ...