allow defaults everywhere
This commit is contained in:
parent
d264437d91
commit
842dd7bf26
|
|
@ -753,6 +753,20 @@ write(ostream &out, bool brief, int indent_level) const {
|
|||
Fields::const_iterator fi;
|
||||
for (fi = _fields.begin(); fi != _fields.end(); ++fi) {
|
||||
(*fi)->write(out, brief, indent_level + 2);
|
||||
|
||||
/*
|
||||
if (true || (*fi)->has_default_value()) {
|
||||
indent(out, indent_level + 2) << "// = ";
|
||||
DCPacker packer;
|
||||
packer.set_unpack_data((*fi)->get_default_value());
|
||||
packer.begin_unpack(*fi);
|
||||
packer.unpack_and_format(out);
|
||||
if (!packer.end_unpack()) {
|
||||
out << "<error>";
|
||||
}
|
||||
out << "\n";
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
indent(out, indent_level) << "};\n";
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -132,7 +132,10 @@ dc_cleanup_parser() {
|
|||
%type <u.parameter> type_definition
|
||||
%type <u.parameter> named_parameter
|
||||
%type <u.parameter> unnamed_parameter
|
||||
%type <u.parameter> named_parameter_with_default
|
||||
%type <u.parameter> unnamed_parameter_with_default
|
||||
%type <u.parameter> parameter
|
||||
%type <u.parameter> parameter_with_default
|
||||
%type <u.parameter> parameter_definition
|
||||
%type <str> import_identifier
|
||||
%type <str> slash_identifier
|
||||
|
|
@ -223,7 +226,7 @@ import_symbol_list:
|
|||
;
|
||||
|
||||
typedef_decl:
|
||||
KW_TYPEDEF parameter
|
||||
KW_TYPEDEF parameter_with_default
|
||||
{
|
||||
DCTypedef *dtypedef = new DCTypedef($2);
|
||||
|
||||
|
|
@ -311,12 +314,12 @@ dclass_field:
|
|||
$$->set_flags($2);
|
||||
}
|
||||
| molecular_field
|
||||
| unnamed_parameter server_flags ';'
|
||||
| unnamed_parameter_with_default server_flags ';'
|
||||
{
|
||||
$$ = $1;
|
||||
$$->set_flags($2);
|
||||
}
|
||||
| named_parameter server_flags
|
||||
| named_parameter_with_default server_flags
|
||||
{
|
||||
$$ = $1;
|
||||
$$->set_flags($2);
|
||||
|
|
@ -387,11 +390,11 @@ struct_fields:
|
|||
struct_field:
|
||||
atomic_field
|
||||
| molecular_field
|
||||
| unnamed_parameter ';'
|
||||
| unnamed_parameter_with_default ';'
|
||||
{
|
||||
$$ = $1;
|
||||
}
|
||||
| named_parameter
|
||||
| named_parameter_with_default
|
||||
{
|
||||
$$ = $1;
|
||||
}
|
||||
|
|
@ -421,31 +424,9 @@ nonempty_parameter_list:
|
|||
;
|
||||
|
||||
atomic_element:
|
||||
parameter
|
||||
parameter_with_default
|
||||
{
|
||||
current_atomic->add_element($1);
|
||||
}
|
||||
| parameter '='
|
||||
{
|
||||
current_packer = &default_packer;
|
||||
current_packer->clear_data();
|
||||
current_packer->begin_pack($1);
|
||||
}
|
||||
parameter_value
|
||||
{
|
||||
bool is_valid = $1->is_valid();
|
||||
if (current_packer->end_pack()) {
|
||||
$1->set_default_value(current_packer->get_string());
|
||||
|
||||
} else {
|
||||
if (is_valid) {
|
||||
yyerror("Invalid default value for type");
|
||||
}
|
||||
// If the current parameter isn't valid, we don't mind a pack
|
||||
// error (there's no way for us to validate the syntax). So we'll
|
||||
// just ignore the default value in this case.
|
||||
}
|
||||
current_atomic->add_element($1);
|
||||
}
|
||||
;
|
||||
|
||||
|
|
@ -464,11 +445,66 @@ unnamed_parameter:
|
|||
type_definition
|
||||
;
|
||||
|
||||
named_parameter_with_default:
|
||||
named_parameter
|
||||
| named_parameter '='
|
||||
{
|
||||
current_packer = &default_packer;
|
||||
current_packer->clear_data();
|
||||
current_packer->begin_pack($1);
|
||||
}
|
||||
parameter_value
|
||||
{
|
||||
bool is_valid = $1->is_valid();
|
||||
if (current_packer->end_pack()) {
|
||||
$1->set_default_value(current_packer->get_string());
|
||||
|
||||
} else {
|
||||
if (is_valid) {
|
||||
yyerror("Invalid default value for type");
|
||||
}
|
||||
// If the current parameter isn't valid, we don't mind a pack
|
||||
// error (there's no way for us to validate the syntax). So we'll
|
||||
// just ignore the default value in this case.
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
unnamed_parameter_with_default:
|
||||
unnamed_parameter
|
||||
| unnamed_parameter '='
|
||||
{
|
||||
current_packer = &default_packer;
|
||||
current_packer->clear_data();
|
||||
current_packer->begin_pack($1);
|
||||
}
|
||||
parameter_value
|
||||
{
|
||||
bool is_valid = $1->is_valid();
|
||||
if (current_packer->end_pack()) {
|
||||
$1->set_default_value(current_packer->get_string());
|
||||
|
||||
} else {
|
||||
if (is_valid) {
|
||||
yyerror("Invalid default value for type");
|
||||
}
|
||||
// If the current parameter isn't valid, we don't mind a pack
|
||||
// error (there's no way for us to validate the syntax). So we'll
|
||||
// just ignore the default value in this case.
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
parameter:
|
||||
named_parameter
|
||||
| unnamed_parameter
|
||||
;
|
||||
|
||||
parameter_with_default:
|
||||
named_parameter_with_default
|
||||
| unnamed_parameter_with_default
|
||||
;
|
||||
|
||||
type_name:
|
||||
type_token
|
||||
{
|
||||
|
|
@ -1052,11 +1088,11 @@ switch_case:
|
|||
;
|
||||
|
||||
switch_field:
|
||||
unnamed_parameter ';'
|
||||
unnamed_parameter_with_default ';'
|
||||
{
|
||||
$$ = $1;
|
||||
}
|
||||
| named_parameter
|
||||
| named_parameter_with_default
|
||||
{
|
||||
$$ = $1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue