Hello I've a big problem i search to parse an header file(C). I not
know how to solve the problem in the line 3 for the $4.
Someone can help me?
/* STRUCT & UNION */
struct_or_union _specifier
: struct_or_union IDENTIFIER '{' struct_declarat ion_list '}'
{ printf("%d,%s,% s",$1->type,$2->word_name,$4?? ?????????) }
| struct_or_union '{' struct_declarat ion_list '}'
| struct_or_union IDENTIFIER
;
struct_or_union
: STRUCT { $$=mktype(TSTRU CT); }
| UNION { $$=mktype(TUNIO N); }
;
struct_declarat ion_list
: struct_declarat ion
| struct_declarat ion_list struct_declarat ion
;
struct_declarat ion
: specifier_quali fier_list struct_declarat or_list ';'
;
specifier_quali fier_list
: type_specifier specifier_quali fier_list
| type_specifier
;
struct_declarat or_list
: struct_declarat or
| struct_declarat or_list ',' struct_declarat or
;
struct_declarat or
: declarator
| ':' LNG
| declarator ':' LNG
;
declarator
: pointer direct_declarat or
| direct_declarat or
;
pointer
: '*'
| '*' pointer
;
direct_declarat or
: IDENTIFIER
| '(' declarator ')'
| direct_declarat or '[' LNG ']'
| direct_declarat or '[' ']'
| direct_declarat or '(' parameter_list ')'
| direct_declarat or '(' identifier_list ')'
| direct_declarat or '(' ')'
;
parameter_list
: parameter_decla ration
| parameter_list ',' parameter_decla ration
;
identifier_list
: IDENTIFIER
| identifier_list ',' IDENTIFIER
;
parameter_decla ration
: declaration_spe cifiers declarator
| declaration_spe cifiers abstract_declar ator
| declaration_spe cifiers
;
direct_abstract _declarator
: '(' abstract_declar ator ')'
| '[' ']'
| '[' LNG ']'
| direct_abstract _declarator '[' ']'
| direct_abstract _declarator '[' LNG ']'
| '(' ')'
| '(' parameter_list ')'
| direct_abstract _declarator '(' ')'
| direct_abstract _declarator '(' parameter_list ')'
;
abstract_declar ator
: pointer
| direct_abstract _declarator
| pointer direct_abstract _declarator
;
know how to solve the problem in the line 3 for the $4.
Someone can help me?
/* STRUCT & UNION */
struct_or_union _specifier
: struct_or_union IDENTIFIER '{' struct_declarat ion_list '}'
{ printf("%d,%s,% s",$1->type,$2->word_name,$4?? ?????????) }
| struct_or_union '{' struct_declarat ion_list '}'
| struct_or_union IDENTIFIER
;
struct_or_union
: STRUCT { $$=mktype(TSTRU CT); }
| UNION { $$=mktype(TUNIO N); }
;
struct_declarat ion_list
: struct_declarat ion
| struct_declarat ion_list struct_declarat ion
;
struct_declarat ion
: specifier_quali fier_list struct_declarat or_list ';'
;
specifier_quali fier_list
: type_specifier specifier_quali fier_list
| type_specifier
;
struct_declarat or_list
: struct_declarat or
| struct_declarat or_list ',' struct_declarat or
;
struct_declarat or
: declarator
| ':' LNG
| declarator ':' LNG
;
declarator
: pointer direct_declarat or
| direct_declarat or
;
pointer
: '*'
| '*' pointer
;
direct_declarat or
: IDENTIFIER
| '(' declarator ')'
| direct_declarat or '[' LNG ']'
| direct_declarat or '[' ']'
| direct_declarat or '(' parameter_list ')'
| direct_declarat or '(' identifier_list ')'
| direct_declarat or '(' ')'
;
parameter_list
: parameter_decla ration
| parameter_list ',' parameter_decla ration
;
identifier_list
: IDENTIFIER
| identifier_list ',' IDENTIFIER
;
parameter_decla ration
: declaration_spe cifiers declarator
| declaration_spe cifiers abstract_declar ator
| declaration_spe cifiers
;
direct_abstract _declarator
: '(' abstract_declar ator ')'
| '[' ']'
| '[' LNG ']'
| direct_abstract _declarator '[' ']'
| direct_abstract _declarator '[' LNG ']'
| '(' ')'
| '(' parameter_list ')'
| direct_abstract _declarator '(' ')'
| direct_abstract _declarator '(' parameter_list ')'
;
abstract_declar ator
: pointer
| direct_abstract _declarator
| pointer direct_abstract _declarator
;
Comment