diff options
Diffstat (limited to 'src/prebuilt/wast-parser-gen.cc')
-rw-r--r-- | src/prebuilt/wast-parser-gen.cc | 184 |
1 files changed, 77 insertions, 107 deletions
diff --git a/src/prebuilt/wast-parser-gen.cc b/src/prebuilt/wast-parser-gen.cc index d1fe2c62..5c34c003 100644 --- a/src/prebuilt/wast-parser-gen.cc +++ b/src/prebuilt/wast-parser-gen.cc @@ -692,9 +692,9 @@ static const yytype_uint16 yyrline[] = 1189, 1197, 1206, 1214, 1220, 1226, 1232, 1238, 1246, 1254, 1264, 1270, 1280, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1301, 1302, 1306, 1311, 1319, 1340, - 1347, 1350, 1358, 1376, 1384, 1395, 1406, 1417, 1423, 1429, - 1435, 1441, 1447, 1452, 1457, 1463, 1472, 1477, 1478, 1483, - 1493, 1497, 1504, 1516, 1517, 1524, 1527, 1587, 1599 + 1347, 1350, 1358, 1376, 1384, 1395, 1406, 1417, 1420, 1423, + 1426, 1429, 1432, 1435, 1438, 1441, 1447, 1450, 1451, 1454, + 1462, 1466, 1473, 1485, 1486, 1493, 1496, 1560, 1569 }; #endif @@ -4201,153 +4201,122 @@ yyreduce: case 197: #line 1417 "src/wast-parser.y" /* yacc.c:1646 */ { - (yyval.command) = new Command(); - (yyval.command)->type = CommandType::AssertMalformed; - (yyval.command)->assert_malformed.module = (yyvsp[-2].script_module); - (yyval.command)->assert_malformed.text = (yyvsp[-1].text); + (yyval.command) = new AssertMalformedCommand((yyvsp[-2].script_module), (yyvsp[-1].text)); } -#line 4210 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4207 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 198: -#line 1423 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1420 "src/wast-parser.y" /* yacc.c:1646 */ { - (yyval.command) = new Command(); - (yyval.command)->type = CommandType::AssertInvalid; - (yyval.command)->assert_invalid.module = (yyvsp[-2].script_module); - (yyval.command)->assert_invalid.text = (yyvsp[-1].text); + (yyval.command) = new AssertInvalidCommand((yyvsp[-2].script_module), (yyvsp[-1].text)); } -#line 4221 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4215 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 199: -#line 1429 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1423 "src/wast-parser.y" /* yacc.c:1646 */ { - (yyval.command) = new Command(); - (yyval.command)->type = CommandType::AssertUnlinkable; - (yyval.command)->assert_unlinkable.module = (yyvsp[-2].script_module); - (yyval.command)->assert_unlinkable.text = (yyvsp[-1].text); + (yyval.command) = new AssertUnlinkableCommand((yyvsp[-2].script_module), (yyvsp[-1].text)); } -#line 4232 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4223 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 200: -#line 1435 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1426 "src/wast-parser.y" /* yacc.c:1646 */ { - (yyval.command) = new Command(); - (yyval.command)->type = CommandType::AssertUninstantiable; - (yyval.command)->assert_uninstantiable.module = (yyvsp[-2].script_module); - (yyval.command)->assert_uninstantiable.text = (yyvsp[-1].text); + (yyval.command) = new AssertUninstantiableCommand((yyvsp[-2].script_module), (yyvsp[-1].text)); } -#line 4243 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4231 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 201: -#line 1441 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1429 "src/wast-parser.y" /* yacc.c:1646 */ { - (yyval.command) = new Command(); - (yyval.command)->type = CommandType::AssertReturn; - (yyval.command)->assert_return.action = (yyvsp[-2].action); - (yyval.command)->assert_return.expected = (yyvsp[-1].consts); + (yyval.command) = new AssertReturnCommand((yyvsp[-2].action), (yyvsp[-1].consts)); } -#line 4254 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4239 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 202: -#line 1447 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1432 "src/wast-parser.y" /* yacc.c:1646 */ { - (yyval.command) = new Command(); - (yyval.command)->type = CommandType::AssertReturnCanonicalNan; - (yyval.command)->assert_return_canonical_nan.action = (yyvsp[-1].action); + (yyval.command) = new AssertReturnCanonicalNanCommand((yyvsp[-1].action)); } -#line 4264 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4247 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 203: -#line 1452 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1435 "src/wast-parser.y" /* yacc.c:1646 */ { - (yyval.command) = new Command(); - (yyval.command)->type = CommandType::AssertReturnArithmeticNan; - (yyval.command)->assert_return_arithmetic_nan.action = (yyvsp[-1].action); + (yyval.command) = new AssertReturnArithmeticNanCommand((yyvsp[-1].action)); } -#line 4274 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4255 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 204: -#line 1457 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1438 "src/wast-parser.y" /* yacc.c:1646 */ { - (yyval.command) = new Command(); - (yyval.command)->type = CommandType::AssertTrap; - (yyval.command)->assert_trap.action = (yyvsp[-2].action); - (yyval.command)->assert_trap.text = (yyvsp[-1].text); + (yyval.command) = new AssertTrapCommand((yyvsp[-2].action), (yyvsp[-1].text)); } -#line 4285 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4263 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 205: -#line 1463 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1441 "src/wast-parser.y" /* yacc.c:1646 */ { - (yyval.command) = new Command(); - (yyval.command)->type = CommandType::AssertExhaustion; - (yyval.command)->assert_trap.action = (yyvsp[-2].action); - (yyval.command)->assert_trap.text = (yyvsp[-1].text); + (yyval.command) = new AssertExhaustionCommand((yyvsp[-2].action), (yyvsp[-1].text)); } -#line 4296 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4271 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 206: -#line 1472 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1447 "src/wast-parser.y" /* yacc.c:1646 */ { - (yyval.command) = new Command(); - (yyval.command)->type = CommandType::Action; - (yyval.command)->action = (yyvsp[0].action); + (yyval.command) = new ActionCommand((yyvsp[0].action)); } -#line 4306 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4279 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 208: -#line 1478 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1451 "src/wast-parser.y" /* yacc.c:1646 */ { - (yyval.command) = new Command(); - (yyval.command)->type = CommandType::Module; - (yyval.command)->module = (yyvsp[0].module); + (yyval.command) = new ModuleCommand((yyvsp[0].module)); } -#line 4316 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4287 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 209: -#line 1483 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1454 "src/wast-parser.y" /* yacc.c:1646 */ { - (yyval.command) = new Command(); - (yyval.command)->type = CommandType::Register; - (yyval.command)->register_.module_name = (yyvsp[-2].text); - (yyval.command)->register_.var = std::move(*(yyvsp[-1].var)); + auto* command = new RegisterCommand((yyvsp[-2].text), *(yyvsp[-1].var)); delete (yyvsp[-1].var); - (yyval.command)->register_.var.loc = (yylsp[-1]); + command->var.loc = (yylsp[-1]); + (yyval.command) = command; } -#line 4329 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4298 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 210: -#line 1493 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1462 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.commands) = new CommandPtrVector(); (yyval.commands)->emplace_back((yyvsp[0].command)); } -#line 4338 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4307 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 211: -#line 1497 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1466 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.commands) = (yyvsp[-1].commands); (yyval.commands)->emplace_back((yyvsp[0].command)); } -#line 4347 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4316 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 212: -#line 1504 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1473 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.const_).loc = (yylsp[-2]); if (WABT_FAILED(parse_const((yyvsp[-2].type), (yyvsp[-1].literal).type, (yyvsp[-1].literal).text.start, @@ -4358,34 +4327,34 @@ yyreduce: } delete [] (yyvsp[-1].literal).text.start; } -#line 4362 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4331 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 213: -#line 1516 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1485 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.consts) = new ConstVector(); } -#line 4368 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4337 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 214: -#line 1517 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1486 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.consts) = (yyvsp[-1].consts); (yyval.consts)->push_back((yyvsp[0].const_)); } -#line 4377 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4346 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 215: -#line 1524 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1493 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.script) = new Script(); } -#line 4385 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4354 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 216: -#line 1527 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1496 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.script) = new Script(); (yyval.script)->commands = std::move(*(yyvsp[0].commands)); @@ -4393,14 +4362,14 @@ yyreduce: int last_module_index = -1; for (size_t i = 0; i < (yyval.script)->commands.size(); ++i) { - Command& command = *(yyval.script)->commands[i].get(); + Command* command = (yyval.script)->commands[i].get(); Var* module_var = nullptr; - switch (command.type) { + switch (command->type) { case CommandType::Module: { last_module_index = i; - /* Wire up module name bindings. */ - Module* module = command.module; + // Wire up module name bindings. + Module* module = cast<ModuleCommand>(command)->module; if (module->name.length == 0) continue; @@ -4410,25 +4379,29 @@ yyreduce: } case CommandType::AssertReturn: - module_var = &command.assert_return.action->module_var; + module_var = + &cast<AssertReturnCommand>(command)->action->module_var; goto has_module_var; case CommandType::AssertReturnCanonicalNan: - module_var = - &command.assert_return_canonical_nan.action->module_var; + module_var = &cast<AssertReturnCanonicalNanCommand>(command) + ->action->module_var; goto has_module_var; case CommandType::AssertReturnArithmeticNan: - module_var = - &command.assert_return_arithmetic_nan.action->module_var; + module_var = &cast<AssertReturnArithmeticNanCommand>(command) + ->action->module_var; goto has_module_var; case CommandType::AssertTrap: + module_var = &cast<AssertTrapCommand>(command)->action->module_var; + goto has_module_var; case CommandType::AssertExhaustion: - module_var = &command.assert_trap.action->module_var; + module_var = + &cast<AssertExhaustionCommand>(command)->action->module_var; goto has_module_var; case CommandType::Action: - module_var = &command.action->module_var; + module_var = &cast<ActionCommand>(command)->action->module_var; goto has_module_var; case CommandType::Register: - module_var = &command.register_.var; + module_var = &cast<RegisterCommand>(command)->var; goto has_module_var; has_module_var: { @@ -4446,29 +4419,26 @@ yyreduce: } } } -#line 4450 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4423 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 217: -#line 1587 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1560 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.script) = new Script(); - Command* command = new Command(); - command->type = CommandType::Module; - command->module = (yyvsp[0].module); - (yyval.script)->commands.emplace_back(command); + (yyval.script)->commands.emplace_back(new ModuleCommand((yyvsp[0].module))); } -#line 4462 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4432 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 218: -#line 1599 "src/wast-parser.y" /* yacc.c:1646 */ +#line 1569 "src/wast-parser.y" /* yacc.c:1646 */ { parser->script = (yyvsp[0].script); } -#line 4468 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4438 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; -#line 4472 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4442 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4703,7 +4673,7 @@ yyreturn: #endif return yyresult; } -#line 1602 "src/wast-parser.y" /* yacc.c:1906 */ +#line 1572 "src/wast-parser.y" /* yacc.c:1906 */ void append_expr_list(ExprList* expr_list, ExprList* expr) { |