Create some list nodes

This commit is contained in:
Josh Holtrop 2018-05-19 21:31:23 -04:00
parent eef900bedc
commit aca67c1a54

View File

@ -384,8 +384,14 @@ struct_or_union
;
struct_declaration_list
: struct_declaration
| struct_declaration_list struct_declaration
: struct_declaration {
$$ = new Node(NODE_TYPE_LIST);
$$->list->push_back($1);
}
| struct_declaration_list struct_declaration {
$$ = $1;
$$->list->push_back($2);
}
;
struct_declaration
@ -394,15 +400,33 @@ struct_declaration
;
specifier_qualifier_list
: type_specifier specifier_qualifier_list
| type_specifier
| type_qualifier specifier_qualifier_list
| type_qualifier
: type_specifier specifier_qualifier_list {
$$ = $2;
$$->list->push_back($1);
}
| type_specifier {
$$ = new Node(NODE_TYPE_LIST);
$$->list->push_back($1);
}
| type_qualifier specifier_qualifier_list {
$$ = $2;
$$->list->push_back($1);
}
| type_qualifier {
$$ = new Node(NODE_TYPE_LIST);
$$->list->push_back($1);
}
;
struct_declarator_list
: struct_declarator
| struct_declarator_list COMMA struct_declarator
: struct_declarator {
$$ = new Node(NODE_TYPE_LIST);
$$->list->push_back($1);
}
| struct_declarator_list COMMA struct_declarator {
$$ = $1;
$$->list->push_back($3);
}
;
struct_declarator
@ -418,8 +442,14 @@ enum_specifier
;
enumerator_list
: enumerator
| enumerator_list COMMA enumerator
: enumerator {
$$ = new Node(NODE_TYPE_LIST);
$$->list->push_back($1);
}
| enumerator_list COMMA enumerator {
$$ = $1;
$$->list->push_back($3);
}
;
enumerator
@ -460,8 +490,14 @@ pointer
;
type_qualifier_list
: type_qualifier
| type_qualifier_list type_qualifier
: type_qualifier {
$$ = new Node(NODE_TYPE_LIST);
$$->list->push_back($1);
}
| type_qualifier_list type_qualifier {
$$ = $2;
$$->list->push_back($1);
}
;
parameter_type_list
@ -470,8 +506,14 @@ parameter_type_list
;
parameter_list
: parameter_declaration
| parameter_list COMMA parameter_declaration
: parameter_declaration {
$$ = new Node(NODE_TYPE_LIST);
$$->list->push_back($1);
}
| parameter_list COMMA parameter_declaration {
$$ = $1;
$$->list->push_back($3);
}
;
parameter_declaration
@ -481,8 +523,14 @@ parameter_declaration
;
identifier_list
: IDENTIFIER
| identifier_list COMMA IDENTIFIER
: IDENTIFIER {
$$ = new Node(NODE_TYPE_LIST);
$$->list->push_back($1);
}
| identifier_list COMMA IDENTIFIER {
$$ = $1;
$$->list->push_back($3);
}
;
type_name
@ -513,8 +561,14 @@ initializer
;
initializer_list
: initializer
| initializer_list COMMA initializer
: initializer {
$$ = new Node(NODE_TYPE_LIST);
$$->list->push_back($1);
}
| initializer_list COMMA initializer {
$$ = $1;
$$->list->push_back($3);
}
;
statement
@ -541,13 +595,25 @@ compound_statement
;
declaration_list
: declaration
| declaration_list declaration
: declaration {
$$ = new Node(NODE_TYPE_LIST);
$$->list->push_back($1);
}
| declaration_list declaration {
$$ = $1;
$$->list->push_back($2);
}
;
statement_list
: statement
| statement_list statement
: statement {
$$ = new Node(NODE_TYPE_LIST);
$$->list->push_back($1);
}
| statement_list statement {
$$ = $1;
$$->list->push_back($2);
}
;
expression_statement