568
568
return new CT_EnumSpec (get_node (0), name);
571
CTree *CCBuilder::asm_def () {
572
// 1: ASM ( str_literal ) ;
573
return new CT_AsmDef (get_node (0), get_node (1), get_node (2),
574
get_node (3), get_node (4));
577
571
CTree *CCBuilder::linkage_spec () {
578
572
// 3: EXTERN str_literal decl
579
573
// 4: EXTERN str_literal { }
940
934
CTree *CCBuilder::member_declarator () {
935
// 3: identifier : const_expr
936
// 3: private_name : const_expr
938
// 2: declarator init_declarator_ext
942
939
// 2: declarator pure_spec
940
// 3: declarator init_declarator_ext pure_spec
943
941
// 2: declarator const_init
944
// 3: identifier : const_expr
945
// 3: private_name : const_expr
942
// 3: declarator init_declarator_ext const_init
946
943
int num = nodes ();
948
return new CT_BitFieldDeclarator (get_node (0), get_node (1), get_node (2));
949
else if (num == 2 && get_node (1)->token ()->type () == TOK_COLON)
950
return new CT_BitFieldDeclarator (get_node (0), get_node (1));
952
return new CT_InitDeclarator (get_node (0), (num == 2) ? get_node (1) : 0);
944
bool bitfield = (num >= 2 && get_node (1)->token ()->type () == TOK_COLON);
947
return new CT_BitFieldDeclarator (get_node (0), get_node (1), get_node (2));
949
return new CT_BitFieldDeclarator (get_node (0), get_node (1));
953
return new CT_InitDeclarator (get_node (0));
955
if (get_node (1)->NodeName () == CT_ExprList::NodeId ())
956
return new CT_InitDeclarator (get_node (0), 0, get_node (1));
958
return new CT_InitDeclarator (get_node (0), get_node (1), 0);
961
return new CT_InitDeclarator (get_node (0), get_node (1), get_node (2));
955
966
CTree *CCBuilder::pure_spec () {