diff options
Diffstat (limited to 'idlc/tidlc.yy')
-rw-r--r-- | idlc/tidlc.yy | 69 |
1 files changed, 42 insertions, 27 deletions
diff --git a/idlc/tidlc.yy b/idlc/tidlc.yy index 3e982a5..b3cc1d6 100644 --- a/idlc/tidlc.yy +++ b/idlc/tidlc.yy @@ -148,16 +148,20 @@ structure_block: T_STRUCTURE T_ID T_BRACE_OPEN elements T_BRACE_CLOSE { ; elements: element { - $$ = new tidl::Elements(); - $$->Add($1); + $$ = new (std::nothrow) tidl::Elements(); + if ($$ != nullptr) { + $$->Add($1); + } } | elements element { $$ = $1; - if ($$->Exist($2)) { - ps->ReportError("syntax error. \"Already Exists\".", $2->GetLine()); - delete $2; - } else { - $$->Add($2); + if ($2 != nullptr) { + if ($$->Exist($2)) { + ps->ReportError("syntax error. \"Already Exists\".", $2->GetLine()); + delete $2; + } else { + $$->Add($2); + } } } | elements error T_SEMICOLON { @@ -186,16 +190,20 @@ element: base_type T_ID T_SEMICOLON { ; attributes: attribute { - $$ = new tidl::Attributes(); - $$->Add($1); + $$ = new (std::nothrow) tidl::Attributes(); + if ($$ != nullptr) { + $$->Add($1); + } } | attributes T_COMMA attribute { $$ = $1; - if ($$->Exist($3)) { - ps->ReportError("syntax error. \"Already Exist\".", $3->GetLine()); - delete $3; - } else { - $$->Add($3); + if ($3 != nullptr) { + if ($$->Exist($3)) { + ps->ReportError("syntax error. \"Already Exist\".", $3->GetLine()); + delete $3; + } else { + $$->Add($3); + } } } | error { @@ -254,16 +262,20 @@ interface_block: T_INTERFACE T_ID T_BRACE_OPEN declarations T_BRACE_CLOSE { ; declarations: declaration { - $$ = new tidl::Declarations(); - $$->Add($1); + $$ = new (std::nothrow) tidl::Declarations(); + if ($$ != nullptr) { + $$->Add($1); + } } | declarations declaration { $$ = $1; - if ($$->Exist($2)) { - ps->ReportError("syntax error. \"Already Exists\".", $2->GetLine()); - delete $2; - } else { - $$->Add($2); + if ($2 != nullptr) { + if ($$->Exist($2)) { + ps->ReportError("syntax error. \"Already Exists\".", $2->GetLine()); + delete $2; + } else { + $$->Add($2); + } } } | declarations error T_SEMICOLON { @@ -331,16 +343,19 @@ declaration: base_type T_ID T_LEFT parameter_list T_RIGHT T_SEMICOLON { parameter_list: parameter { $$ = new tidl::Parameters(); - if ($1 != nullptr) + if ($1 != nullptr) { $$->Add($1); + } } | parameter_list T_COMMA parameter { $$ = $1; - if ($$->Exist($3)) { - ps->ReportError("syntax error. \"Already Exists\".", $3->GetLine()); - delete $3; - } else { - $$->Add($3); + if ($3 != nullptr) { + if ($$->Exist($3)) { + ps->ReportError("syntax error. \"Already Exists\".", $3->GetLine()); + delete $3; + } else { + $$->Add($3); + } } } | error { |