diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/binary-writer.cc | 20 | ||||
-rw-r--r-- | src/expr-visitor.cc | 26 | ||||
-rw-r--r-- | src/ir.cc | 54 | ||||
-rw-r--r-- | src/ir.h | 13 | ||||
-rw-r--r-- | src/prebuilt/wast-lexer-gen.cc | 3961 | ||||
-rw-r--r-- | src/prebuilt/wast-parser-gen.cc | 2374 | ||||
-rw-r--r-- | src/prebuilt/wast-parser-gen.hh | 101 | ||||
-rw-r--r-- | src/prebuilt/wast-parser-gen.output | 5548 | ||||
-rw-r--r-- | src/tools/wast2wasm.cc | 20 | ||||
-rw-r--r-- | src/validator.cc | 25 | ||||
-rw-r--r-- | src/wast-lexer.cc | 5 | ||||
-rw-r--r-- | src/wast-parser-lexer-shared.h | 3 | ||||
-rw-r--r-- | src/wast-parser.h | 8 | ||||
-rw-r--r-- | src/wast-parser.y | 97 |
14 files changed, 6723 insertions, 5532 deletions
diff --git a/src/binary-writer.cc b/src/binary-writer.cc index 00947afa..2e907b42 100644 --- a/src/binary-writer.cc +++ b/src/binary-writer.cc @@ -444,6 +444,14 @@ void BinaryWriter::WriteExpr(const Module* module, write_u32_leb128(&stream_, 0, "call_indirect reserved"); break; } + case ExprType::Catch: + // TODO(karlschimpf): Define + WABT_FATAL("Catch: Don't know how to write\n"); + break; + case ExprType::CatchAll: + // TODO(karlschimpf): Define + WABT_FATAL("CatchAll: Don't know how to write\n"); + break; case ExprType::Compare: write_opcode(&stream_, expr->compare.opcode); break; @@ -522,6 +530,10 @@ void BinaryWriter::WriteExpr(const Module* module, case ExprType::Nop: write_opcode(&stream_, Opcode::Nop); break; + case ExprType::Rethrow: + // TODO(karlschimpf): Define + WABT_FATAL("Rethrow: Don't know how to write\n"); + break; case ExprType::Return: write_opcode(&stream_, Opcode::Return); break; @@ -554,6 +566,14 @@ void BinaryWriter::WriteExpr(const Module* module, write_u32_leb128(&stream_, index, "local index"); break; } + case ExprType::Throw: + // TODO(karlschimpf): Define + WABT_FATAL("Throw: Don't know how to write\n"); + break; + case ExprType::TryBlock: + // TODO(karlschimpf): Define + WABT_FATAL("TryBlock: Don't know how to write\n"); + break; case ExprType::Unary: write_opcode(&stream_, expr->unary.opcode); break; diff --git a/src/expr-visitor.cc b/src/expr-visitor.cc index 0300cb5e..961e91f9 100644 --- a/src/expr-visitor.cc +++ b/src/expr-visitor.cc @@ -60,6 +60,16 @@ Result ExprVisitor::VisitExpr(Expr* expr) { CHECK_RESULT(delegate_->OnCallIndirectExpr(expr)); break; + case ExprType::Catch: + // TODO(karlschimpf): Define + WABT_FATAL("Catch: don't know how to visit\n"); + return Result::Error; + + case ExprType::CatchAll: + // TODO(karlschimpf): Define + WABT_FATAL("CatchAll: don't know how to visit\n"); + return Result::Error; + case ExprType::Compare: CHECK_RESULT(delegate_->OnCompareExpr(expr)); break; @@ -114,6 +124,11 @@ Result ExprVisitor::VisitExpr(Expr* expr) { CHECK_RESULT(delegate_->OnNopExpr(expr)); break; + case ExprType::Rethrow: + // TODO(karlschimpf): Define + WABT_FATAL("Rethrow: don't know how to visit\n"); + return Result::Error; + case ExprType::Return: CHECK_RESULT(delegate_->OnReturnExpr(expr)); break; @@ -138,6 +153,17 @@ Result ExprVisitor::VisitExpr(Expr* expr) { CHECK_RESULT(delegate_->OnTeeLocalExpr(expr)); break; + case ExprType::Throw: + // TODO(karlschimpf): Define + WABT_FATAL("Throw: don't know how to visit\n"); + return Result::Error; + + case ExprType::TryBlock: + // TODO(karlschimpf): Define + WABT_FATAL("TryBlock: don't know how to visit\n"); + return Result::Error; + break; + case ExprType::Unary: CHECK_RESULT(delegate_->OnUnaryExpr(expr)); break; @@ -262,6 +262,11 @@ Expr::~Expr() { case ExprType::CallIndirect: destroy_var(&call_indirect.var); break; + case ExprType::Catch: + case ExprType::CatchAll: + destroy_var(&catch_.var); + destroy_expr_list(catch_.first); + break; case ExprType::GetGlobal: destroy_var(&get_global.var); break; @@ -275,6 +280,9 @@ Expr::~Expr() { case ExprType::Loop: delete loop; break; + case ExprType::Rethrow: + destroy_var(&rethrow_.var); + break; case ExprType::SetGlobal: destroy_var(&set_global.var); break; @@ -284,7 +292,13 @@ Expr::~Expr() { case ExprType::TeeLocal: destroy_var(&tee_local.var); break; - + case ExprType::Throw: + destroy_var(&throw_.var); + break; + case ExprType::TryBlock: + delete try_block.block; + destroy_expr_list(try_block.first_catch); + break; case ExprType::Binary: case ExprType::Compare: case ExprType::Const: @@ -354,6 +368,22 @@ Expr* Expr::CreateCallIndirect(Var var) { } // static +Expr* Expr::CreateCatch(Var var, Expr* first) { + Expr* expr = new Expr(ExprType::Catch); + expr->catch_.var = var; + expr->catch_.first = first; + return expr; +} + +// static +Expr* Expr::CreateCatchAll(Var var, Expr* first) { + Expr* expr = new Expr(ExprType::CatchAll); + expr->catch_.var = var; + expr->catch_.first = first; + return expr; +} + +// static Expr* Expr::CreateCompare(Opcode opcode) { Expr* expr = new Expr(ExprType::Compare); expr->compare.opcode = opcode; @@ -433,6 +463,13 @@ Expr* Expr::CreateNop() { } // static +Expr* Expr::CreateRethrow(Var var) { + Expr* expr = new Expr(ExprType::Rethrow); + expr->rethrow_.var = var; + return expr; +} + +// static Expr* Expr::CreateReturn() { return new Expr(ExprType::Return); } @@ -473,6 +510,21 @@ Expr* Expr::CreateTeeLocal(Var var) { } // static +Expr* Expr::CreateThrow(Var var) { + Expr* expr = new Expr(ExprType::Throw); + expr->throw_.var = var; + return expr; +} + +// static +Expr* Expr::CreateTry(Block* block, Expr* first_catch) { + Expr* expr = new Expr(ExprType::TryBlock); + expr->try_block.block = block; + expr->try_block.first_catch = first_catch; + return expr; +} + +// static Expr* Expr::CreateUnary(Opcode opcode) { Expr* expr = new Expr(ExprType::Unary); expr->unary.opcode = opcode; @@ -85,6 +85,8 @@ enum class ExprType { BrTable, Call, CallIndirect, + Catch, + CatchAll, Compare, Const, Convert, @@ -97,12 +99,15 @@ enum class ExprType { Load, Loop, Nop, + Rethrow, Return, Select, SetGlobal, SetLocal, Store, TeeLocal, + Throw, + TryBlock, Unary, Unreachable, }; @@ -135,6 +140,8 @@ struct Expr { static Expr* CreateBrTable(VarVector* targets, Var default_target); static Expr* CreateCall(Var); static Expr* CreateCallIndirect(Var); + static Expr* CreateCatch(Var v, Expr* first); + static Expr* CreateCatchAll(Var v, Expr* first); static Expr* CreateCompare(Opcode); static Expr* CreateConst(const Const&); static Expr* CreateConvert(Opcode); @@ -147,12 +154,15 @@ struct Expr { static Expr* CreateLoad(Opcode, Address align, uint64_t offset); static Expr* CreateLoop(Block*); static Expr* CreateNop(); + static Expr* CreateRethrow(Var); static Expr* CreateReturn(); static Expr* CreateSelect(); static Expr* CreateSetGlobal(Var); static Expr* CreateSetLocal(Var); static Expr* CreateStore(Opcode, Address align, uint64_t offset); static Expr* CreateTeeLocal(Var); + static Expr* CreateThrow(Var); + static Expr* CreateTry(Block* block, Expr* first_catch); static Expr* CreateUnary(Opcode); static Expr* CreateUnreachable(); @@ -162,6 +172,9 @@ struct Expr { union { struct { Opcode opcode; } binary, compare, convert, unary; struct Block *block, *loop; + struct { Block* block; Expr* first_catch; } try_block; + struct { Var var; Expr* first; } catch_; + struct { Var var; } throw_, rethrow_; struct { Var var; } br, br_if; struct { VarVector* targets; Var default_target; } br_table; struct { Var var; } call, call_indirect; diff --git a/src/prebuilt/wast-lexer-gen.cc b/src/prebuilt/wast-lexer-gen.cc index 8f249385..f759f75a 100644 --- a/src/prebuilt/wast-lexer-gen.cc +++ b/src/prebuilt/wast-lexer-gen.cc @@ -447,12 +447,12 @@ YYCOND_BLOCK_COMMENT: yy34: ++cursor_; yy35: -#line 474 "src/wast-lexer.cc" +#line 479 "src/wast-lexer.cc" { continue; } #line 453 "src/prebuilt/wast-lexer-gen.cc" yy36: ++cursor_; -#line 473 "src/wast-lexer.cc" +#line 478 "src/wast-lexer.cc" { NEWLINE; continue; } #line 458 "src/prebuilt/wast-lexer-gen.cc" yy38: @@ -466,7 +466,7 @@ yy39: yy40: ++cursor_; yy41: -#line 475 "src/wast-lexer.cc" +#line 480 "src/wast-lexer.cc" { MAYBE_MALFORMED_UTF8(" in block comment"); } #line 472 "src/prebuilt/wast-lexer-gen.cc" yy42: @@ -501,12 +501,12 @@ yy47: goto yy41; yy48: ++cursor_; -#line 469 "src/wast-lexer.cc" +#line 474 "src/wast-lexer.cc" { COMMENT_NESTING++; continue; } #line 507 "src/prebuilt/wast-lexer-gen.cc" yy50: ++cursor_; -#line 470 "src/wast-lexer.cc" +#line 475 "src/wast-lexer.cc" { if (--COMMENT_NESTING == 0) BEGIN(YYCOND_INIT); continue; } @@ -581,7 +581,7 @@ YYCOND_LINE_COMMENT: } } yy57: -#line 467 "src/wast-lexer.cc" +#line 472 "src/wast-lexer.cc" { continue; } #line 587 "src/prebuilt/wast-lexer-gen.cc" yy58: @@ -606,13 +606,13 @@ yy58: yy60: ++cursor_; BEGIN(YYCOND_i); -#line 466 "src/wast-lexer.cc" +#line 471 "src/wast-lexer.cc" { NEWLINE; continue; } #line 612 "src/prebuilt/wast-lexer-gen.cc" yy62: ++cursor_; yy63: -#line 482 "src/wast-lexer.cc" +#line 487 "src/wast-lexer.cc" { MAYBE_MALFORMED_UTF8(""); } #line 618 "src/prebuilt/wast-lexer-gen.cc" yy64: @@ -835,7 +835,7 @@ YYCOND_i: yy79: ++cursor_; yy80: -#line 481 "src/wast-lexer.cc" +#line 486 "src/wast-lexer.cc" { ERROR("unexpected char"); continue; } #line 841 "src/prebuilt/wast-lexer-gen.cc" yy81: @@ -845,12 +845,12 @@ yy81: if (yybm[0+yych] & 4) { goto yy81; } -#line 477 "src/wast-lexer.cc" +#line 482 "src/wast-lexer.cc" { continue; } #line 851 "src/prebuilt/wast-lexer-gen.cc" yy84: ++cursor_; -#line 476 "src/wast-lexer.cc" +#line 481 "src/wast-lexer.cc" { NEWLINE; continue; } #line 856 "src/prebuilt/wast-lexer-gen.cc" yy86: @@ -862,7 +862,7 @@ yy87: goto yy86; } yy88: -#line 478 "src/wast-lexer.cc" +#line 483 "src/wast-lexer.cc" { ERROR("unexpected token \"%.*s\"", static_cast<int>(yyleng), yytext); continue; } @@ -1096,29 +1096,24 @@ yy116: goto yy87; yy117: yych = *++cursor_; - if (yych <= 'e') { - if (yych == 'a') goto yy193; - if (yych <= 'd') goto yy87; - goto yy194; - } else { - if (yych <= 'h') { - if (yych <= 'g') goto yy87; - goto yy195; - } else { - if (yych == 'y') goto yy196; - goto yy87; - } + switch (yych) { + case 'a': goto yy193; + case 'e': goto yy194; + case 'h': goto yy195; + case 'r': goto yy196; + case 'y': goto yy197; + default: goto yy87; } yy118: yych = *++cursor_; - if (yych == 'n') goto yy197; + if (yych == 'n') goto yy198; goto yy87; yy119: ++cursor_; yy120: -#line 482 "src/wast-lexer.cc" +#line 487 "src/wast-lexer.cc" { MAYBE_MALFORMED_UTF8(""); } -#line 1122 "src/prebuilt/wast-lexer-gen.cc" +#line 1117 "src/prebuilt/wast-lexer-gen.cc" yy121: yych = *++cursor_; if (yych <= 0x7F) goto yy120; @@ -1128,31 +1123,31 @@ yy122: yyaccept = 1; yych = *(marker_ = ++cursor_); if (yych <= 0x9F) goto yy120; - if (yych <= 0xBF) goto yy198; + if (yych <= 0xBF) goto yy199; goto yy120; yy123: yyaccept = 1; yych = *(marker_ = ++cursor_); if (yych <= 0x7F) goto yy120; - if (yych <= 0xBF) goto yy198; + if (yych <= 0xBF) goto yy199; goto yy120; yy124: yyaccept = 1; yych = *(marker_ = ++cursor_); if (yych <= 0x8F) goto yy120; - if (yych <= 0xBF) goto yy199; + if (yych <= 0xBF) goto yy200; goto yy120; yy125: yyaccept = 1; yych = *(marker_ = ++cursor_); if (yych <= 0x7F) goto yy120; - if (yych <= 0xBF) goto yy199; + if (yych <= 0xBF) goto yy200; goto yy120; yy126: yyaccept = 1; yych = *(marker_ = ++cursor_); if (yych <= 0x7F) goto yy120; - if (yych <= 0x8F) goto yy199; + if (yych <= 0x8F) goto yy200; goto yy120; yy127: ++cursor_; @@ -1190,7 +1185,7 @@ yy130: ++cursor_; #line 241 "src/wast-lexer.cc" { TEXT; RETURN(TEXT); } -#line 1194 "src/prebuilt/wast-lexer-gen.cc" +#line 1189 "src/prebuilt/wast-lexer-gen.cc" yy132: ++cursor_; if (limit_ <= cursor_) FILL(1); @@ -1203,10 +1198,10 @@ yy132: } else { if (yych <= '9') { if (yych <= '/') goto yy129; - goto yy200; + goto yy201; } else { if (yych <= '@') goto yy129; - if (yych <= 'F') goto yy200; + if (yych <= 'F') goto yy201; goto yy129; } } @@ -1216,7 +1211,7 @@ yy132: if (yych <= '\\') goto yy127; goto yy129; } else { - if (yych <= 'f') goto yy200; + if (yych <= 'f') goto yy201; if (yych <= 'm') goto yy129; goto yy127; } @@ -1285,15 +1280,15 @@ yy140: if (yych <= ';') goto yy141; if (yych <= '}') goto yy86; yy141: -#line 463 "src/wast-lexer.cc" +#line 468 "src/wast-lexer.cc" { TEXT; RETURN(VAR); } -#line 1291 "src/prebuilt/wast-lexer-gen.cc" +#line 1286 "src/prebuilt/wast-lexer-gen.cc" yy142: ++cursor_; BEGIN(YYCOND_BLOCK_COMMENT); -#line 468 "src/wast-lexer.cc" +#line 473 "src/wast-lexer.cc" { COMMENT_NESTING = 1; continue; } -#line 1297 "src/prebuilt/wast-lexer-gen.cc" +#line 1292 "src/prebuilt/wast-lexer-gen.cc" yy144: ++cursor_; if ((yych = *cursor_) <= '9') { @@ -1322,7 +1317,7 @@ yy144: if (yych <= 'e') goto yy153; goto yy86; } else { - if (yych <= 'x') goto yy201; + if (yych <= 'x') goto yy202; if (yych <= '~') goto yy86; } } @@ -1330,7 +1325,7 @@ yy144: yy145: #line 236 "src/wast-lexer.cc" { LITERAL(Int); RETURN(INT); } -#line 1334 "src/prebuilt/wast-lexer-gen.cc" +#line 1329 "src/prebuilt/wast-lexer-gen.cc" yy146: ++cursor_; if ((limit_ - cursor_) < 3) FILL(3); @@ -1363,7 +1358,7 @@ yy146: } yy148: yych = *++cursor_; - if (yych == 'n') goto yy202; + if (yych == 'n') goto yy203; goto yy87; yy149: yych = *++cursor_; @@ -1395,45 +1390,45 @@ yy150: yy152: #line 237 "src/wast-lexer.cc" { LITERAL(Float); RETURN(FLOAT); } -#line 1399 "src/prebuilt/wast-lexer-gen.cc" +#line 1394 "src/prebuilt/wast-lexer-gen.cc" yy153: yych = *++cursor_; if (yych <= ',') { - if (yych == '+') goto yy203; + if (yych == '+') goto yy204; goto yy87; } else { - if (yych <= '-') goto yy203; + if (yych <= '-') goto yy204; if (yych <= '/') goto yy87; - if (yych <= '9') goto yy204; + if (yych <= '9') goto yy205; goto yy87; } yy154: yych = *++cursor_; if (yybm[0+yych] & 128) { - goto yy206; + goto yy207; } goto yy87; yy155: ++cursor_; BEGIN(YYCOND_LINE_COMMENT); -#line 465 "src/wast-lexer.cc" +#line 470 "src/wast-lexer.cc" { continue; } -#line 1422 "src/prebuilt/wast-lexer-gen.cc" +#line 1417 "src/prebuilt/wast-lexer-gen.cc" yy157: yych = *++cursor_; - if (yych == 'i') goto yy208; + if (yych == 'i') goto yy209; goto yy87; yy158: yych = *++cursor_; - if (yych == 'y') goto yy209; + if (yych == 'y') goto yy210; goto yy87; yy159: yych = *++cursor_; - if (yych == 's') goto yy210; + if (yych == 's') goto yy211; goto yy87; yy160: yych = *++cursor_; - if (yych == 'o') goto yy211; + if (yych == 'o') goto yy212; goto yy87; yy161: ++cursor_; @@ -1448,74 +1443,75 @@ yy161: if (yych <= '^') { if (yych != ';') goto yy86; } else { - if (yych <= '_') goto yy212; + if (yych <= '_') goto yy213; if (yych <= '~') goto yy86; } } yy162: #line 266 "src/wast-lexer.cc" { RETURN(BR); } -#line 1459 "src/prebuilt/wast-lexer-gen.cc" +#line 1454 "src/prebuilt/wast-lexer-gen.cc" yy163: yych = *++cursor_; - if (yych == 'l') goto yy213; + if (yych == 'l') goto yy214; + if (yych == 't') goto yy215; goto yy87; yy164: yych = *++cursor_; - if (yych == 'r') goto yy214; + if (yych == 'r') goto yy216; goto yy87; yy165: yych = *++cursor_; - if (yych == 't') goto yy215; + if (yych == 't') goto yy217; goto yy87; yy166: yych = *++cursor_; - if (yych == 'o') goto yy216; + if (yych == 'o') goto yy218; goto yy87; yy167: yych = *++cursor_; - if (yych == 'e') goto yy217; - if (yych == 's') goto yy218; + if (yych == 'e') goto yy219; + if (yych == 's') goto yy220; goto yy87; yy168: yych = *++cursor_; - if (yych == 'd') goto yy219; + if (yych == 'd') goto yy221; goto yy87; yy169: yych = *++cursor_; - if (yych == 'p') goto yy221; + if (yych == 'p') goto yy223; goto yy87; yy170: yych = *++cursor_; - if (yych == '2') goto yy222; + if (yych == '2') goto yy224; goto yy87; yy171: yych = *++cursor_; - if (yych == '4') goto yy224; + if (yych == '4') goto yy226; goto yy87; yy172: yych = *++cursor_; - if (yych == 'n') goto yy226; + if (yych == 'n') goto yy228; goto yy87; yy173: yych = *++cursor_; - if (yych == 't') goto yy227; + if (yych == 't') goto yy229; goto yy87; yy174: yych = *++cursor_; - if (yych == 'o') goto yy229; + if (yych == 'o') goto yy231; goto yy87; yy175: yych = *++cursor_; - if (yych == 'o') goto yy230; + if (yych == 'o') goto yy232; goto yy87; yy176: yych = *++cursor_; - if (yych == '2') goto yy231; + if (yych == '2') goto yy233; goto yy87; yy177: yych = *++cursor_; - if (yych == '4') goto yy233; + if (yych == '4') goto yy235; goto yy87; yy178: ++cursor_; @@ -1524,99 +1520,104 @@ yy178: } #line 262 "src/wast-lexer.cc" { RETURN(IF); } -#line 1528 "src/prebuilt/wast-lexer-gen.cc" +#line 1524 "src/prebuilt/wast-lexer-gen.cc" yy180: yych = *++cursor_; - if (yych == 'p') goto yy235; + if (yych == 'p') goto yy237; goto yy87; yy181: yych = *++cursor_; - if (yych == 'f') goto yy236; - if (yych == 'v') goto yy238; + if (yych == 'f') goto yy238; + if (yych == 'v') goto yy240; goto yy87; yy182: yych = *++cursor_; - if (yych == 'c') goto yy239; - if (yych == 'o') goto yy240; + if (yych == 'c') goto yy241; + if (yych == 'o') goto yy242; goto yy87; yy183: yych = *++cursor_; - if (yych == 'm') goto yy241; + if (yych == 'm') goto yy243; goto yy87; yy184: yych = *++cursor_; - if (yych == 'd') goto yy242; + if (yych == 'd') goto yy244; goto yy87; yy185: yych = *++cursor_; - if (yych == 't') goto yy243; + if (yych == 't') goto yy245; goto yy87; yy186: yych = *++cursor_; - if (yych == 'n') goto yy245; + if (yych == 'n') goto yy247; goto yy87; yy187: yych = *++cursor_; - if (yych == 'p') goto yy247; + if (yych == 'p') goto yy249; goto yy87; yy188: yych = *++cursor_; - if (yych == 'f') goto yy249; + if (yych == 'f') goto yy251; goto yy87; yy189: yych = *++cursor_; - if (yych == 'r') goto yy250; + if (yych == 'r') goto yy252; goto yy87; yy190: yych = *++cursor_; if (yych <= 'r') { - if (yych == 'g') goto yy251; + if (yych == 'g') goto yy253; goto yy87; } else { - if (yych <= 's') goto yy252; - if (yych <= 't') goto yy253; + if (yych <= 's') goto yy254; + if (yych <= 't') goto yy255; goto yy87; } yy191: yych = *++cursor_; - if (yych == 'l') goto yy254; - if (yych == 't') goto yy255; + if (yych == 'l') goto yy256; + if (yych == 't') goto yy257; goto yy87; yy192: yych = *++cursor_; - if (yych == 'a') goto yy256; + if (yych == 'a') goto yy258; goto yy87; yy193: yych = *++cursor_; - if (yych == 'b') goto yy257; + if (yych == 'b') goto yy259; goto yy87; yy194: yych = *++cursor_; - if (yych == 'e') goto yy258; + if (yych == 'e') goto yy260; goto yy87; yy195: yych = *++cursor_; - if (yych == 'e') goto yy259; + if (yych == 'e') goto yy261; + if (yych == 'r') goto yy262; goto yy87; yy196: yych = *++cursor_; - if (yych == 'p') goto yy260; + if (yych == 'y') goto yy263; goto yy87; yy197: yych = *++cursor_; - if (yych == 'r') goto yy261; + if (yych == 'p') goto yy265; goto yy87; yy198: yych = *++cursor_; + if (yych == 'r') goto yy266; + goto yy87; +yy199: + yych = *++cursor_; if (yych <= 0x7F) goto yy129; if (yych <= 0xBF) goto yy79; goto yy129; -yy199: +yy200: yych = *++cursor_; if (yych <= 0x7F) goto yy129; - if (yych <= 0xBF) goto yy198; + if (yych <= 0xBF) goto yy199; goto yy129; -yy200: +yy201: ++cursor_; if (limit_ <= cursor_) FILL(1); yych = *cursor_; @@ -1630,27 +1631,27 @@ yy200: if (yych <= 'f') goto yy127; goto yy129; } -yy201: +yy202: yych = *++cursor_; if (yych <= '@') { if (yych <= '/') goto yy87; - if (yych <= '9') goto yy262; + if (yych <= '9') goto yy267; goto yy87; } else { - if (yych <= 'F') goto yy262; + if (yych <= 'F') goto yy267; if (yych <= '`') goto yy87; - if (yych <= 'f') goto yy262; + if (yych <= 'f') goto yy267; goto yy87; } -yy202: +yy203: yych = *++cursor_; - if (yych == 'f') goto yy236; + if (yych == 'f') goto yy238; goto yy87; -yy203: +yy204: yych = *++cursor_; if (yych <= '/') goto yy87; if (yych >= ':') goto yy87; -yy204: +yy205: ++cursor_; if (limit_ <= cursor_) FILL(1); yych = *cursor_; @@ -1666,7 +1667,7 @@ yy204: } else { if (yych <= ':') { if (yych <= '/') goto yy86; - if (yych <= '9') goto yy204; + if (yych <= '9') goto yy205; goto yy86; } else { if (yych <= ';') goto yy152; @@ -1674,12 +1675,12 @@ yy204: goto yy152; } } -yy206: +yy207: ++cursor_; if ((limit_ - cursor_) < 3) FILL(3); yych = *cursor_; if (yybm[0+yych] & 128) { - goto yy206; + goto yy207; } if (yych <= '-') { if (yych <= '"') { @@ -1692,316 +1693,333 @@ yy206: } } else { if (yych <= ';') { - if (yych <= '.') goto yy264; + if (yych <= '.') goto yy269; if (yych <= ':') goto yy86; goto yy98; } else { - if (yych == 'p') goto yy266; + if (yych == 'p') goto yy271; if (yych <= '~') goto yy86; goto yy98; } } -yy208: - yych = *++cursor_; - if (yych == 'g') goto yy267; - goto yy87; yy209: yych = *++cursor_; - if (yych == 'f') goto yy268; + if (yych == 'g') goto yy272; goto yy87; yy210: yych = *++cursor_; - if (yych == 'e') goto yy269; + if (yych == 'f') goto yy273; goto yy87; yy211: yych = *++cursor_; - if (yych == 'c') goto yy270; + if (yych == 'e') goto yy274; goto yy87; yy212: yych = *++cursor_; - if (yych == 'i') goto yy271; - if (yych == 't') goto yy272; + if (yych == 'c') goto yy275; goto yy87; yy213: yych = *++cursor_; - if (yych == 'l') goto yy273; + if (yych == 'i') goto yy276; + if (yych == 't') goto yy277; goto yy87; yy214: yych = *++cursor_; - if (yych == 'r') goto yy275; + if (yych == 'l') goto yy278; goto yy87; yy215: yych = *++cursor_; - if (yych == 'a') goto yy276; + if (yych == 'c') goto yy280; goto yy87; yy216: yych = *++cursor_; - if (yych == 'p') goto yy278; + if (yych == 'r') goto yy281; goto yy87; yy217: yych = *++cursor_; - if (yych == 'm') goto yy280; + if (yych == 'a') goto yy282; goto yy87; yy218: yych = *++cursor_; - if (yych == 'e') goto yy282; + if (yych == 'p') goto yy284; goto yy87; yy219: + yych = *++cursor_; + if (yych == 'm') goto yy286; + goto yy87; +yy220: + yych = *++cursor_; + if (yych == 'e') goto yy288; + goto yy87; +yy221: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 272 "src/wast-lexer.cc" { RETURN(END); } -#line 1757 "src/prebuilt/wast-lexer-gen.cc" -yy221: +#line 1762 "src/prebuilt/wast-lexer-gen.cc" +yy223: yych = *++cursor_; - if (yych == 'o') goto yy284; + if (yych == 'o') goto yy290; goto yy87; -yy222: +yy224: ++cursor_; if ((yych = *cursor_) <= ')') { if (yych <= '!') { if (yych >= '!') goto yy86; } else { - if (yych <= '"') goto yy223; + if (yych <= '"') goto yy225; if (yych <= '\'') goto yy86; } } else { if (yych <= ':') { - if (yych == '.') goto yy285; + if (yych == '.') goto yy291; goto yy86; } else { - if (yych <= ';') goto yy223; + if (yych <= ';') goto yy225; if (yych <= '~') goto yy86; } } -yy223: +yy225: #line 256 "src/wast-lexer.cc" { TYPE(F32); RETURN(VALUE_TYPE); } -#line 1783 "src/prebuilt/wast-lexer-gen.cc" -yy224: +#line 1788 "src/prebuilt/wast-lexer-gen.cc" +yy226: ++cursor_; if ((yych = *cursor_) <= ')') { if (yych <= '!') { if (yych >= '!') goto yy86; } else { - if (yych <= '"') goto yy225; + if (yych <= '"') goto yy227; if (yych <= '\'') goto yy86; } } else { if (yych <= ':') { - if (yych == '.') goto yy286; + if (yych == '.') goto yy292; goto yy86; } else { - if (yych <= ';') goto yy225; + if (yych <= ';') goto yy227; if (yych <= '~') goto yy86; } } -yy225: +yy227: #line 257 "src/wast-lexer.cc" { TYPE(F64); RETURN(VALUE_TYPE); } -#line 1805 "src/prebuilt/wast-lexer-gen.cc" -yy226: +#line 1810 "src/prebuilt/wast-lexer-gen.cc" +yy228: yych = *++cursor_; - if (yych == 'c') goto yy287; + if (yych == 'c') goto yy293; goto yy87; -yy227: +yy229: ++cursor_; if ((yych = *cursor_) <= ')') { if (yych <= '!') { if (yych >= '!') goto yy86; } else { - if (yych <= '"') goto yy228; + if (yych <= '"') goto yy230; if (yych <= '\'') goto yy86; } } else { if (yych <= '^') { if (yych != ';') goto yy86; } else { - if (yych <= '_') goto yy289; + if (yych <= '_') goto yy295; if (yych <= '~') goto yy86; } } -yy228: +yy230: #line 452 "src/wast-lexer.cc" { RETURN(GET); } -#line 1830 "src/prebuilt/wast-lexer-gen.cc" -yy229: +#line 1835 "src/prebuilt/wast-lexer-gen.cc" +yy231: yych = *++cursor_; - if (yych == 'b') goto yy290; + if (yych == 'b') goto yy296; goto yy87; -yy230: +yy232: yych = *++cursor_; - if (yych == 'w') goto yy291; + if (yych == 'w') goto yy297; goto yy87; -yy231: +yy233: ++cursor_; if ((yych = *cursor_) <= ')') { if (yych <= '!') { if (yych >= '!') goto yy86; } else { - if (yych <= '"') goto yy232; + if (yych <= '"') goto yy234; if (yych <= '\'') goto yy86; } } else { if (yych <= ':') { - if (yych == '.') goto yy292; + if (yych == '.') goto yy298; goto yy86; } else { - if (yych <= ';') goto yy232; + if (yych <= ';') goto yy234; if (yych <= '~') goto yy86; } } -yy232: +yy234: #line 254 "src/wast-lexer.cc" { TYPE(I32); RETURN(VALUE_TYPE); } -#line 1860 "src/prebuilt/wast-lexer-gen.cc" -yy233: +#line 1865 "src/prebuilt/wast-lexer-gen.cc" +yy235: ++cursor_; if ((yych = *cursor_) <= ')') { if (yych <= '!') { if (yych >= '!') goto yy86; } else { - if (yych <= '"') goto yy234; + if (yych <= '"') goto yy236; if (yych <= '\'') goto yy86; } } else { if (yych <= ':') { - if (yych == '.') goto yy293; + if (yych == '.') goto yy299; goto yy86; } else { - if (yych <= ';') goto yy234; + if (yych <= ';') goto yy236; if (yych <= '~') goto yy86; } } -yy234: +yy236: #line 255 "src/wast-lexer.cc" { TYPE(I64); RETURN(VALUE_TYPE); } -#line 1882 "src/prebuilt/wast-lexer-gen.cc" -yy235: +#line 1887 "src/prebuilt/wast-lexer-gen.cc" +yy237: yych = *++cursor_; - if (yych == 'o') goto yy294; + if (yych == 'o') goto yy300; goto yy87; -yy236: +yy238: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 239 "src/wast-lexer.cc" { LITERAL(Infinity); RETURN(FLOAT); } -#line 1894 "src/prebuilt/wast-lexer-gen.cc" -yy238: - yych = *++cursor_; - if (yych == 'o') goto yy295; - goto yy87; -yy239: - yych = *++cursor_; - if (yych == 'a') goto yy296; - goto yy87; +#line 1899 "src/prebuilt/wast-lexer-gen.cc" yy240: yych = *++cursor_; - if (yych == 'p') goto yy297; + if (yych == 'o') goto yy301; goto yy87; yy241: yych = *++cursor_; - if (yych == 'o') goto yy299; + if (yych == 'a') goto yy302; goto yy87; yy242: yych = *++cursor_; - if (yych == 'u') goto yy300; + if (yych == 'p') goto yy303; goto yy87; yy243: + yych = *++cursor_; + if (yych == 'o') goto yy305; + goto yy87; +yy244: + yych = *++cursor_; + if (yych == 'u') goto yy306; + goto yy87; +yy245: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 259 "src/wast-lexer.cc" { RETURN(MUT); } -#line 1922 "src/prebuilt/wast-lexer-gen.cc" -yy245: +#line 1927 "src/prebuilt/wast-lexer-gen.cc" +yy247: ++cursor_; if ((yych = *cursor_) <= ')') { if (yych <= '!') { if (yych >= '!') goto yy86; } else { - if (yych <= '"') goto yy246; + if (yych <= '"') goto yy248; if (yych <= '\'') goto yy86; } } else { if (yych <= ':') { if (yych <= '9') goto yy86; - goto yy301; + goto yy307; } else { - if (yych <= ';') goto yy246; + if (yych <= ';') goto yy248; if (yych <= '~') goto yy86; } } -yy246: +yy248: #line 240 "src/wast-lexer.cc" { LITERAL(Nan); RETURN(FLOAT); } -#line 1944 "src/prebuilt/wast-lexer-gen.cc" -yy247: +#line 1949 "src/prebuilt/wast-lexer-gen.cc" +yy249: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 260 "src/wast-lexer.cc" { RETURN(NOP); } -#line 1952 "src/prebuilt/wast-lexer-gen.cc" -yy249: - yych = *++cursor_; - if (yych == 's') goto yy302; - goto yy87; -yy250: - yych = *++cursor_; - if (yych == 'a') goto yy303; - goto yy87; +#line 1957 "src/prebuilt/wast-lexer-gen.cc" yy251: yych = *++cursor_; - if (yych == 'i') goto yy304; + if (yych == 's') goto yy308; goto yy87; yy252: yych = *++cursor_; - if (yych == 'u') goto yy305; + if (yych == 'a') goto yy309; goto yy87; yy253: yych = *++cursor_; - if (yych == 'u') goto yy306; + if (yych == 'i') goto yy310; goto yy87; yy254: yych = *++cursor_; - if (yych == 'e') goto yy307; + if (yych == 'u') goto yy311; goto yy87; yy255: yych = *++cursor_; - if (yych == '_') goto yy308; + if (yych == 'h') goto yy312; + if (yych == 'u') goto yy313; goto yy87; yy256: yych = *++cursor_; - if (yych == 'r') goto yy309; + if (yych == 'e') goto yy314; goto yy87; yy257: yych = *++cursor_; - if (yych == 'l') goto yy310; + if (yych == '_') goto yy315; goto yy87; yy258: yych = *++cursor_; - if (yych == '_') goto yy311; + if (yych == 'r') goto yy316; goto yy87; yy259: yych = *++cursor_; - if (yych == 'n') goto yy312; + if (yych == 'l') goto yy317; goto yy87; yy260: yych = *++cursor_; - if (yych == 'e') goto yy314; + if (yych == '_') goto yy318; goto yy87; yy261: yych = *++cursor_; - if (yych == 'e') goto yy316; + if (yych == 'n') goto yy319; goto yy87; yy262: + yych = *++cursor_; + if (yych == 'o') goto yy321; + goto yy87; +yy263: + ++cursor_; + if (yybm[0+(yych = *cursor_)] & 8) { + goto yy86; + } +#line 463 "src/wast-lexer.cc" + { RETURN(TRY); } +#line 2014 "src/prebuilt/wast-lexer-gen.cc" +yy265: + yych = *++cursor_; + if (yych == 'e') goto yy322; + goto yy87; +yy266: + yych = *++cursor_; + if (yych == 'e') goto yy324; + goto yy87; +yy267: ++cursor_; if ((limit_ - cursor_) < 3) FILL(3); yych = *cursor_; @@ -2015,9 +2033,9 @@ yy262: if (yych <= ')') goto yy145; goto yy86; } else { - if (yych <= '.') goto yy264; + if (yych <= '.') goto yy269; if (yych <= '/') goto yy86; - goto yy262; + goto yy267; } } } else { @@ -2027,21 +2045,21 @@ yy262: goto yy145; } else { if (yych <= '@') goto yy86; - if (yych <= 'F') goto yy262; + if (yych <= 'F') goto yy267; goto yy86; } } else { if (yych <= 'o') { - if (yych <= 'f') goto yy262; + if (yych <= 'f') goto yy267; goto yy86; } else { - if (yych <= 'p') goto yy266; + if (yych <= 'p') goto yy271; if (yych <= '~') goto yy86; goto yy145; } } } -yy264: +yy269: ++cursor_; if ((limit_ - cursor_) < 3) FILL(3); yych = *cursor_; @@ -2053,315 +2071,327 @@ yy264: } else { if (yych <= ')') goto yy88; if (yych <= '/') goto yy86; - if (yych <= '9') goto yy264; + if (yych <= '9') goto yy269; goto yy86; } } else { if (yych <= '`') { if (yych <= ';') goto yy88; if (yych <= '@') goto yy86; - if (yych <= 'F') goto yy264; + if (yych <= 'F') goto yy269; goto yy86; } else { if (yych <= 'o') { - if (yych <= 'f') goto yy264; + if (yych <= 'f') goto yy269; goto yy86; } else { - if (yych <= 'p') goto yy266; + if (yych <= 'p') goto yy271; if (yych <= '~') goto yy86; goto yy88; } } } -yy266: +yy271: yych = *++cursor_; if (yych <= ',') { - if (yych == '+') goto yy317; + if (yych == '+') goto yy325; goto yy87; } else { - if (yych <= '-') goto yy317; + if (yych <= '-') goto yy325; if (yych <= '/') goto yy87; - if (yych <= '9') goto yy318; + if (yych <= '9') goto yy326; goto yy87; } -yy267: +yy272: yych = *++cursor_; - if (yych == 'n') goto yy321; + if (yych == 'n') goto yy329; goto yy87; -yy268: +yy273: yych = *++cursor_; - if (yych == 'u') goto yy322; + if (yych == 'u') goto yy330; goto yy87; -yy269: +yy274: yych = *++cursor_; - if (yych == 'r') goto yy323; + if (yych == 'r') goto yy331; goto yy87; -yy270: +yy275: yych = *++cursor_; - if (yych == 'k') goto yy324; + if (yych == 'k') goto yy332; goto yy87; -yy271: +yy276: yych = *++cursor_; - if (yych == 'f') goto yy326; + if (yych == 'f') goto yy334; goto yy87; -yy272: +yy277: yych = *++cursor_; - if (yych == 'a') goto yy328; + if (yych == 'a') goto yy336; goto yy87; -yy273: +yy278: ++cursor_; if ((yych = *cursor_) <= ')') { if (yych <= '!') { if (yych >= '!') goto yy86; } else { - if (yych <= '"') goto yy274; + if (yych <= '"') goto yy279; if (yych <= '\'') goto yy86; } } else { if (yych <= '^') { if (yych != ';') goto yy86; } else { - if (yych <= '_') goto yy329; + if (yych <= '_') goto yy337; if (yych <= '~') goto yy86; } } -yy274: +yy279: #line 269 "src/wast-lexer.cc" { RETURN(CALL); } -#line 2132 "src/prebuilt/wast-lexer-gen.cc" -yy275: +#line 2150 "src/prebuilt/wast-lexer-gen.cc" +yy280: yych = *++cursor_; - if (yych == 'e') goto yy330; + if (yych == 'h') goto yy338; goto yy87; -yy276: +yy281: + yych = *++cursor_; + if (yych == 'e') goto yy340; + goto yy87; +yy282: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 446 "src/wast-lexer.cc" { RETURN(DATA); } -#line 2144 "src/prebuilt/wast-lexer-gen.cc" -yy278: +#line 2166 "src/prebuilt/wast-lexer-gen.cc" +yy284: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 271 "src/wast-lexer.cc" { RETURN(DROP); } -#line 2152 "src/prebuilt/wast-lexer-gen.cc" -yy280: +#line 2174 "src/prebuilt/wast-lexer-gen.cc" +yy286: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 445 "src/wast-lexer.cc" { RETURN(ELEM); } -#line 2160 "src/prebuilt/wast-lexer-gen.cc" -yy282: +#line 2182 "src/prebuilt/wast-lexer-gen.cc" +yy288: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 264 "src/wast-lexer.cc" { RETURN(ELSE); } -#line 2168 "src/prebuilt/wast-lexer-gen.cc" -yy284: +#line 2190 "src/prebuilt/wast-lexer-gen.cc" +yy290: yych = *++cursor_; - if (yych == 'r') goto yy331; + if (yych == 'r') goto yy341; goto yy87; -yy285: +yy291: yych = *++cursor_; switch (yych) { - case 'a': goto yy332; - case 'c': goto yy333; - case 'd': goto yy334; - case 'e': goto yy335; - case 'f': goto yy336; - case 'g': goto yy337; - case 'l': goto yy338; - case 'm': goto yy339; - case 'n': goto yy340; - case 'r': goto yy341; - case 's': goto yy342; - case 't': goto yy343; + case 'a': goto yy342; + case 'c': goto yy343; + case 'd': goto yy344; + case 'e': goto yy345; + case 'f': goto yy346; + case 'g': goto yy347; + case 'l': goto yy348; + case 'm': goto yy349; + case 'n': goto yy350; + case 'r': goto yy351; + case 's': goto yy352; + case 't': goto yy353; default: goto yy87; } -yy286: +yy292: yych = *++cursor_; switch (yych) { - case 'a': goto yy344; - case 'c': goto yy345; - case 'd': goto yy346; - case 'e': goto yy347; - case 'f': goto yy348; - case 'g': goto yy349; - case 'l': goto yy350; - case 'm': goto yy351; - case 'n': goto yy352; - case 'p': goto yy353; - case 'r': goto yy354; - case 's': goto yy355; - case 't': goto yy356; + case 'a': goto yy354; + case 'c': goto yy355; + case 'd': goto yy356; + case 'e': goto yy357; + case 'f': goto yy358; + case 'g': goto yy359; + case 'l': goto yy360; + case 'm': goto yy361; + case 'n': goto yy362; + case 'p': goto yy363; + case 'r': goto yy364; + case 's': goto yy365; + case 't': goto yy366; default: goto yy87; } -yy287: +yy293: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 436 "src/wast-lexer.cc" { RETURN(FUNC); } -#line 2215 "src/prebuilt/wast-lexer-gen.cc" -yy289: +#line 2237 "src/prebuilt/wast-lexer-gen.cc" +yy295: yych = *++cursor_; - if (yych == 'g') goto yy357; - if (yych == 'l') goto yy358; + if (yych == 'g') goto yy367; + if (yych == 'l') goto yy368; goto yy87; -yy290: +yy296: yych = *++cursor_; - if (yych == 'a') goto yy359; + if (yych == 'a') goto yy369; goto yy87; -yy291: +yy297: yych = *++cursor_; - if (yych == '_') goto yy360; + if (yych == '_') goto yy370; goto yy87; -yy292: +yy298: yych = *++cursor_; switch (yych) { - case 'a': goto yy361; - case 'c': goto yy362; - case 'd': goto yy363; - case 'e': goto yy364; - case 'g': goto yy365; - case 'l': goto yy366; - case 'm': goto yy367; - case 'n': goto yy368; - case 'o': goto yy369; - case 'p': goto yy370; - case 'r': goto yy371; - case 's': goto yy372; - case 't': goto yy373; - case 'w': goto yy374; - case 'x': goto yy375; + case 'a': goto yy371; + case 'c': goto yy372; + case 'd': goto yy373; + case 'e': goto yy374; + case 'g': goto yy375; + case 'l': goto yy376; + case 'm': goto yy377; + case 'n': goto yy378; + case 'o': goto yy379; + case 'p': goto yy380; + case 'r': goto yy381; + case 's': goto yy382; + case 't': goto yy383; + case 'w': goto yy384; + case 'x': goto yy385; default: goto yy87; } -yy293: +yy299: yych = *++cursor_; switch (yych) { - case 'a': goto yy376; - case 'c': goto yy377; - case 'd': goto yy378; - case 'e': goto yy379; - case 'g': goto yy380; - case 'l': goto yy381; - case 'm': goto yy382; - case 'n': goto yy383; - case 'o': goto yy384; - case 'p': goto yy385; - case 'r': goto yy386; - case 's': goto yy387; - case 't': goto yy388; - case 'x': goto yy389; + case 'a': goto yy386; + case 'c': goto yy387; + case 'd': goto yy388; + case 'e': goto yy389; + case 'g': goto yy390; + case 'l': goto yy391; + case 'm': goto yy392; + case 'n': goto yy393; + case 'o': goto yy394; + case 'p': goto yy395; + case 'r': goto yy396; + case 's': goto yy397; + case 't': goto yy398; + case 'x': goto yy399; default: goto yy87; } -yy294: +yy300: yych = *++cursor_; - if (yych == 'r') goto yy390; + if (yych == 'r') goto yy400; goto yy87; -yy295: +yy301: yych = *++cursor_; - if (yych == 'k') goto yy391; + if (yych == 'k') goto yy401; goto yy87; -yy296: +yy302: yych = *++cursor_; - if (yych == 'l') goto yy392; + if (yych == 'l') goto yy402; goto yy87; -yy297: +yy303: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 265 "src/wast-lexer.cc" { RETURN(LOOP); } -#line 2287 "src/prebuilt/wast-lexer-gen.cc" -yy299: +#line 2309 "src/prebuilt/wast-lexer-gen.cc" +yy305: yych = *++cursor_; - if (yych == 'r') goto yy394; + if (yych == 'r') goto yy404; goto yy87; -yy300: +yy306: yych = *++cursor_; - if (yych == 'l') goto yy395; + if (yych == 'l') goto yy405; goto yy87; -yy301: +yy307: yych = *++cursor_; - if (yych == '0') goto yy396; + if (yych == '0') goto yy406; goto yy87; -yy302: +yy308: yych = *++cursor_; - if (yych == 'e') goto yy397; + if (yych == 'e') goto yy407; goto yy87; -yy303: +yy309: yych = *++cursor_; - if (yych == 'm') goto yy398; + if (yych == 'm') goto yy408; goto yy87; -yy304: +yy310: yych = *++cursor_; - if (yych == 's') goto yy400; + if (yych == 's') goto yy410; goto yy87; -yy305: +yy311: yych = *++cursor_; - if (yych == 'l') goto yy401; + if (yych == 'l') goto yy411; goto yy87; -yy306: +yy312: yych = *++cursor_; - if (yych == 'r') goto yy402; + if (yych == 'r') goto yy412; goto yy87; -yy307: +yy313: yych = *++cursor_; - if (yych == 'c') goto yy403; + if (yych == 'r') goto yy413; goto yy87; -yy308: +yy314: yych = *++cursor_; - if (yych == 'g') goto yy404; - if (yych == 'l') goto yy405; + if (yych == 'c') goto yy414; goto yy87; -yy309: +yy315: yych = *++cursor_; - if (yych == 't') goto yy406; + if (yych == 'g') goto yy415; + if (yych == 'l') goto yy416; goto yy87; -yy310: +yy316: yych = *++cursor_; - if (yych == 'e') goto yy408; + if (yych == 't') goto yy417; goto yy87; -yy311: +yy317: yych = *++cursor_; - if (yych == 'l') goto yy410; + if (yych == 'e') goto yy419; goto yy87; -yy312: +yy318: + yych = *++cursor_; + if (yych == 'l') goto yy421; + goto yy87; +yy319: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 263 "src/wast-lexer.cc" { RETURN(THEN); } -#line 2348 "src/prebuilt/wast-lexer-gen.cc" -yy314: +#line 2374 "src/prebuilt/wast-lexer-gen.cc" +yy321: + yych = *++cursor_; + if (yych == 'w') goto yy422; + goto yy87; +yy322: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 435 "src/wast-lexer.cc" { RETURN(TYPE); } -#line 2356 "src/prebuilt/wast-lexer-gen.cc" -yy316: +#line 2386 "src/prebuilt/wast-lexer-gen.cc" +yy324: yych = *++cursor_; - if (yych == 'a') goto yy411; + if (yych == 'a') goto yy424; goto yy87; -yy317: +yy325: yych = *++cursor_; if (yych <= '/') goto yy87; if (yych >= ':') goto yy87; -yy318: +yy326: ++cursor_; if (limit_ <= cursor_) FILL(1); yych = *cursor_; @@ -2369,593 +2399,630 @@ yy318: if (yych <= '!') { if (yych >= '!') goto yy86; } else { - if (yych <= '"') goto yy320; + if (yych <= '"') goto yy328; if (yych <= '\'') goto yy86; } } else { if (yych <= ':') { if (yych <= '/') goto yy86; - if (yych <= '9') goto yy318; + if (yych <= '9') goto yy326; goto yy86; } else { - if (yych <= ';') goto yy320; + if (yych <= ';') goto yy328; if (yych <= '~') goto yy86; } } -yy320: +yy328: #line 238 "src/wast-lexer.cc" { LITERAL(Hexfloat); RETURN(FLOAT); } -#line 2389 "src/prebuilt/wast-lexer-gen.cc" -yy321: +#line 2419 "src/prebuilt/wast-lexer-gen.cc" +yy329: yych = *++cursor_; - if (yych == '=') goto yy412; + if (yych == '=') goto yy425; goto yy87; -yy322: +yy330: yych = *++cursor_; - if (yych == 'n') goto yy413; + if (yych == 'n') goto yy426; goto yy87; -yy323: +yy331: yych = *++cursor_; - if (yych == 't') goto yy414; + if (yych == 't') goto yy427; goto yy87; -yy324: +yy332: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 261 "src/wast-lexer.cc" { RETURN(BLOCK); } -#line 2409 "src/prebuilt/wast-lexer-gen.cc" -yy326: +#line 2439 "src/prebuilt/wast-lexer-gen.cc" +yy334: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 267 "src/wast-lexer.cc" { RETURN(BR_IF); } -#line 2417 "src/prebuilt/wast-lexer-gen.cc" -yy328: +#line 2447 "src/prebuilt/wast-lexer-gen.cc" +yy336: yych = *++cursor_; - if (yych == 'b') goto yy415; + if (yych == 'b') goto yy428; goto yy87; -yy329: +yy337: yych = *++cursor_; - if (yych == 'i') goto yy416; + if (yych == 'i') goto yy429; goto yy87; -yy330: +yy338: + ++cursor_; + if ((yych = *cursor_) <= ')') { + if (yych <= '!') { + if (yych >= '!') goto yy86; + } else { + if (yych <= '"') goto yy339; + if (yych <= '\'') goto yy86; + } + } else { + if (yych <= '^') { + if (yych != ';') goto yy86; + } else { + if (yych <= '_') goto yy430; + if (yych <= '~') goto yy86; + } + } +yy339: +#line 464 "src/wast-lexer.cc" + { RETURN(CATCH); } +#line 2476 "src/prebuilt/wast-lexer-gen.cc" +yy340: yych = *++cursor_; - if (yych == 'n') goto yy417; + if (yych == 'n') goto yy431; goto yy87; -yy331: +yy341: yych = *++cursor_; - if (yych == 't') goto yy418; + if (yych == 't') goto yy432; goto yy87; -yy332: +yy342: yych = *++cursor_; - if (yych == 'b') goto yy420; - if (yych == 'd') goto yy421; + if (yych == 'b') goto yy434; + if (yych == 'd') goto yy435; goto yy87; -yy333: +yy343: yych = *++cursor_; - if (yych == 'e') goto yy422; - if (yych == 'o') goto yy423; + if (yych == 'e') goto yy436; + if (yych == 'o') goto yy437; goto yy87; -yy334: +yy344: yych = *++cursor_; - if (yych == 'e') goto yy424; - if (yych == 'i') goto yy425; + if (yych == 'e') goto yy438; + if (yych == 'i') goto yy439; goto yy87; -yy335: +yy345: yych = *++cursor_; - if (yych == 'q') goto yy426; + if (yych == 'q') goto yy440; goto yy87; -yy336: +yy346: yych = *++cursor_; - if (yych == 'l') goto yy428; + if (yych == 'l') goto yy442; goto yy87; -yy337: +yy347: yych = *++cursor_; - if (yych == 'e') goto yy429; - if (yych == 't') goto yy431; + if (yych == 'e') goto yy443; + if (yych == 't') goto yy445; goto yy87; -yy338: +yy348: yych = *++cursor_; if (yych <= 'n') { - if (yych == 'e') goto yy433; + if (yych == 'e') goto yy447; goto yy87; } else { - if (yych <= 'o') goto yy435; - if (yych == 't') goto yy436; + if (yych <= 'o') goto yy449; + if (yych == 't') goto yy450; goto yy87; } -yy339: +yy349: yych = *++cursor_; if (yych <= 'h') { - if (yych == 'a') goto yy438; + if (yych == 'a') goto yy452; goto yy87; } else { - if (yych <= 'i') goto yy439; - if (yych == 'u') goto yy440; + if (yych <= 'i') goto yy453; + if (yych == 'u') goto yy454; goto yy87; } -yy340: +yy350: yych = *++cursor_; - if (yych == 'e') goto yy441; + if (yych == 'e') goto yy455; goto yy87; -yy341: +yy351: yych = *++cursor_; - if (yych == 'e') goto yy443; + if (yych == 'e') goto yy457; goto yy87; -yy342: +yy352: yych = *++cursor_; if (yych <= 's') { - if (yych == 'q') goto yy444; + if (yych == 'q') goto yy458; goto yy87; } else { - if (yych <= 't') goto yy445; - if (yych <= 'u') goto yy446; + if (yych <= 't') goto yy459; + if (yych <= 'u') goto yy460; goto yy87; } -yy343: +yy353: yych = *++cursor_; - if (yych == 'r') goto yy447; + if (yych == 'r') goto yy461; goto yy87; -yy344: +yy354: yych = *++cursor_; - if (yych == 'b') goto yy448; - if (yych == 'd') goto yy449; + if (yych == 'b') goto yy462; + if (yych == 'd') goto yy463; goto yy87; -yy345: +yy355: yych = *++cursor_; - if (yych == 'e') goto yy450; - if (yych == 'o') goto yy451; + if (yych == 'e') goto yy464; + if (yych == 'o') goto yy465; goto yy87; -yy346: +yy356: yych = *++cursor_; - if (yych == 'i') goto yy452; + if (yych == 'i') goto yy466; goto yy87; -yy347: +yy357: yych = *++cursor_; - if (yych == 'q') goto yy453; + if (yych == 'q') goto yy467; goto yy87; -yy348: +yy358: yych = *++cursor_; - if (yych == 'l') goto yy455; + if (yych == 'l') goto yy469; goto yy87; -yy349: +yy359: yych = *++cursor_; - if (yych == 'e') goto yy456; - if (yych == 't') goto yy458; + if (yych == 'e') goto yy470; + if (yych == 't') goto yy472; goto yy87; -yy350: +yy360: yych = *++cursor_; if (yych <= 'n') { - if (yych == 'e') goto yy460; + if (yych == 'e') goto yy474; goto yy87; } else { - if (yych <= 'o') goto yy462; - if (yych == 't') goto yy463; + if (yych <= 'o') goto yy476; + if (yych == 't') goto yy477; goto yy87; } -yy351: +yy361: yych = *++cursor_; if (yych <= 'h') { - if (yych == 'a') goto yy465; + if (yych == 'a') goto yy479; goto yy87; } else { - if (yych <= 'i') goto yy466; - if (yych == 'u') goto yy467; + if (yych <= 'i') goto yy480; + if (yych == 'u') goto yy481; goto yy87; } -yy352: +yy362: yych = *++cursor_; - if (yych == 'e') goto yy468; + if (yych == 'e') goto yy482; goto yy87; -yy353: +yy363: yych = *++cursor_; - if (yych == 'r') goto yy470; + if (yych == 'r') goto yy484; goto yy87; -yy354: +yy364: yych = *++cursor_; - if (yych == 'e') goto yy471; + if (yych == 'e') goto yy485; goto yy87; -yy355: +yy365: yych = *++cursor_; if (yych <= 's') { - if (yych == 'q') goto yy472; + if (yych == 'q') goto yy486; goto yy87; } else { - if (yych <= 't') goto yy473; - if (yych <= 'u') goto yy474; + if (yych <= 't') goto yy487; + if (yych <= 'u') goto yy488; goto yy87; } -yy356: +yy366: yych = *++cursor_; - if (yych == 'r') goto yy475; + if (yych == 'r') goto yy489; goto yy87; -yy357: +yy367: yych = *++cursor_; - if (yych == 'l') goto yy476; + if (yych == 'l') goto yy490; goto yy87; -yy358: +yy368: yych = *++cursor_; - if (yych == 'o') goto yy477; + if (yych == 'o') goto yy491; goto yy87; -yy359: +yy369: yych = *++cursor_; - if (yych == 'l') goto yy478; + if (yych == 'l') goto yy492; goto yy87; -yy360: +yy370: yych = *++cursor_; - if (yych == 'm') goto yy480; + if (yych == 'm') goto yy494; goto yy87; -yy361: +yy371: yych = *++cursor_; - if (yych == 'd') goto yy481; - if (yych == 'n') goto yy482; + if (yych == 'd') goto yy495; + if (yych == 'n') goto yy496; goto yy87; -yy362: +yy372: yych = *++cursor_; if (yych <= 'n') { - if (yych == 'l') goto yy483; + if (yych == 'l') goto yy497; goto yy87; } else { - if (yych <= 'o') goto yy484; - if (yych == 't') goto yy485; + if (yych <= 'o') goto yy498; + if (yych == 't') goto yy499; goto yy87; } -yy363: +yy373: yych = *++cursor_; - if (yych == 'i') goto yy486; + if (yych == 'i') goto yy500; goto yy87; -yy364: +yy374: yych = *++cursor_; - if (yych == 'q') goto yy487; + if (yych == 'q') goto yy501; goto yy87; -yy365: +yy375: yych = *++cursor_; - if (yych == 'e') goto yy489; - if (yych == 't') goto yy490; + if (yych == 'e') goto yy503; + if (yych == 't') goto yy504; goto yy87; -yy366: +yy376: yych = *++cursor_; if (yych <= 'n') { - if (yych == 'e') goto yy491; + if (yych == 'e') goto yy505; goto yy87; } else { - if (yych <= 'o') goto yy492; - if (yych == 't') goto yy493; + if (yych <= 'o') goto yy506; + if (yych == 't') goto yy507; goto yy87; } -yy367: +yy377: yych = *++cursor_; - if (yych == 'u') goto yy494; + if (yych == 'u') goto yy508; goto yy87; -yy368: +yy378: yych = *++cursor_; - if (yych == 'e') goto yy495; + if (yych == 'e') goto yy509; goto yy87; -yy369: +yy379: yych = *++cursor_; - if (yych == 'r') goto yy497; + if (yych == 'r') goto yy511; goto yy87; -yy370: +yy380: yych = *++cursor_; - if (yych == 'o') goto yy499; + if (yych == 'o') goto yy513; goto yy87; -yy371: +yy381: yych = *++cursor_; - if (yych == 'e') goto yy500; - if (yych == 'o') goto yy501; + if (yych == 'e') goto yy514; + if (yych == 'o') goto yy515; goto yy87; -yy372: +yy382: yych = *++cursor_; if (yych <= 's') { - if (yych == 'h') goto yy502; + if (yych == 'h') goto yy516; goto yy87; } else { - if (yych <= 't') goto yy503; - if (yych <= 'u') goto yy504; + if (yych <= 't') goto yy517; + if (yych <= 'u') goto yy518; goto yy87; } -yy373: +yy383: yych = *++cursor_; - if (yych == 'r') goto yy505; + if (yych == 'r') goto yy519; goto yy87; -yy374: +yy384: yych = *++cursor_; - if (yych == 'r') goto yy506; + if (yych == 'r') goto yy520; goto yy87; -yy375: +yy385: yych = *++cursor_; - if (yych == 'o') goto yy507; + if (yych == 'o') goto yy521; goto yy87; -yy376: +yy386: yych = *++cursor_; - if (yych == 'd') goto yy508; - if (yych == 'n') goto yy509; + if (yych == 'd') goto yy522; + if (yych == 'n') goto yy523; goto yy87; -yy377: +yy387: yych = *++cursor_; if (yych <= 'n') { - if (yych == 'l') goto yy510; + if (yych == 'l') goto yy524; goto yy87; } else { - if (yych <= 'o') goto yy511; - if (yych == 't') goto yy512; + if (yych <= 'o') goto yy525; + if (yych == 't') goto yy526; goto yy87; } -yy378: +yy388: yych = *++cursor_; - if (yych == 'i') goto yy513; + if (yych == 'i') goto yy527; goto yy87; -yy379: +yy389: yych = *++cursor_; - if (yych == 'q') goto yy514; - if (yych == 'x') goto yy516; + if (yych == 'q') goto yy528; + if (yych == 'x') goto yy530; goto yy87; -yy380: +yy390: yych = *++cursor_; - if (yych == 'e') goto yy517; - if (yych == 't') goto yy518; + if (yych == 'e') goto yy531; + if (yych == 't') goto yy532; goto yy87; -yy381: +yy391: yych = *++cursor_; if (yych <= 'n') { - if (yych == 'e') goto yy519; + if (yych == 'e') goto yy533; goto yy87; } else { - if (yych <= 'o') goto yy520; - if (yych == 't') goto yy521; + if (yych <= 'o') goto yy534; + if (yych == 't') goto yy535; goto yy87; } -yy382: +yy392: yych = *++cursor_; - if (yych == 'u') goto yy522; + if (yych == 'u') goto yy536; goto yy87; -yy383: +yy393: yych = *++cursor_; - if (yych == 'e') goto yy523; + if (yych == 'e') goto yy537; goto yy87; -yy384: +yy394: yych = *++cursor_; - if (yych == 'r') goto yy525; + if (yych == 'r') goto yy539; goto yy87; -yy385: +yy395: yych = *++cursor_; - if (yych == 'o') goto yy527; + if (yych == 'o') goto yy541; goto yy87; -yy386: +yy396: yych = *++cursor_; - if (yych == 'e') goto yy528; - if (yych == 'o') goto yy529; + if (yych == 'e') goto yy542; + if (yych == 'o') goto yy543; goto yy87; -yy387: +yy397: yych = *++cursor_; if (yych <= 's') { - if (yych == 'h') goto yy530; + if (yych == 'h') goto yy544; goto yy87; } else { - if (yych <= 't') goto yy531; - if (yych <= 'u') goto yy532; + if (yych <= 't') goto yy545; + if (yych <= 'u') goto yy546; goto yy87; } -yy388: +yy398: yych = *++cursor_; - if (yych == 'r') goto yy533; + if (yych == 'r') goto yy547; goto yy87; -yy389: +yy399: yych = *++cursor_; - if (yych == 'o') goto yy534; + if (yych == 'o') goto yy548; goto yy87; -yy390: +yy400: yych = *++cursor_; - if (yych == 't') goto yy535; + if (yych == 't') goto yy549; goto yy87; -yy391: +yy401: yych = *++cursor_; - if (yych == 'e') goto yy537; + if (yych == 'e') goto yy551; goto yy87; -yy392: +yy402: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 439 "src/wast-lexer.cc" { RETURN(LOCAL); } -#line 2767 "src/prebuilt/wast-lexer-gen.cc" -yy394: +#line 2818 "src/prebuilt/wast-lexer-gen.cc" +yy404: yych = *++cursor_; - if (yych == 'y') goto yy539; + if (yych == 'y') goto yy553; goto yy87; -yy395: +yy405: yych = *++cursor_; - if (yych == 'e') goto yy541; + if (yych == 'e') goto yy555; goto yy87; -yy396: +yy406: yych = *++cursor_; - if (yych == 'x') goto yy543; + if (yych == 'x') goto yy557; goto yy87; -yy397: +yy407: yych = *++cursor_; - if (yych == 't') goto yy544; + if (yych == 't') goto yy558; goto yy87; -yy398: +yy408: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 437 "src/wast-lexer.cc" { RETURN(PARAM); } -#line 2791 "src/prebuilt/wast-lexer-gen.cc" -yy400: +#line 2842 "src/prebuilt/wast-lexer-gen.cc" +yy410: yych = *++cursor_; - if (yych == 't') goto yy546; + if (yych == 't') goto yy560; goto yy87; -yy401: +yy411: yych = *++cursor_; - if (yych == 't') goto yy547; + if (yych == 't') goto yy561; goto yy87; -yy402: +yy412: yych = *++cursor_; - if (yych == 'n') goto yy549; + if (yych == 'o') goto yy563; goto yy87; -yy403: +yy413: yych = *++cursor_; - if (yych == 't') goto yy551; + if (yych == 'n') goto yy564; goto yy87; -yy404: +yy414: yych = *++cursor_; - if (yych == 'l') goto yy553; + if (yych == 't') goto yy566; goto yy87; -yy405: +yy415: yych = *++cursor_; - if (yych == 'o') goto yy554; + if (yych == 'l') goto yy568; goto yy87; -yy406: +yy416: + yych = *++cursor_; + if (yych == 'o') goto yy569; + goto yy87; +yy417: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 444 "src/wast-lexer.cc" { RETURN(START); } -#line 2823 "src/prebuilt/wast-lexer-gen.cc" -yy408: +#line 2878 "src/prebuilt/wast-lexer-gen.cc" +yy419: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 442 "src/wast-lexer.cc" { RETURN(TABLE); } -#line 2831 "src/prebuilt/wast-lexer-gen.cc" -yy410: +#line 2886 "src/prebuilt/wast-lexer-gen.cc" +yy421: yych = *++cursor_; - if (yych == 'o') goto yy555; + if (yych == 'o') goto yy570; goto yy87; -yy411: +yy422: + ++cursor_; + if (yybm[0+(yych = *cursor_)] & 8) { + goto yy86; + } +#line 466 "src/wast-lexer.cc" + { RETURN(THROW); } +#line 2898 "src/prebuilt/wast-lexer-gen.cc" +yy424: yych = *++cursor_; - if (yych == 'c') goto yy556; + if (yych == 'c') goto yy571; goto yy87; -yy412: +yy425: yych = *++cursor_; if (yych <= '/') goto yy87; - if (yych <= '0') goto yy557; - if (yych <= '9') goto yy559; + if (yych <= '0') goto yy572; + if (yych <= '9') goto yy574; goto yy87; -yy413: +yy426: yych = *++cursor_; - if (yych == 'c') goto yy561; + if (yych == 'c') goto yy576; goto yy87; -yy414: +yy427: yych = *++cursor_; - if (yych == '_') goto yy563; + if (yych == '_') goto yy578; goto yy87; -yy415: +yy428: yych = *++cursor_; - if (yych == 'l') goto yy564; + if (yych == 'l') goto yy579; goto yy87; -yy416: +yy429: yych = *++cursor_; - if (yych == 'n') goto yy565; + if (yych == 'n') goto yy580; goto yy87; -yy417: +yy430: yych = *++cursor_; - if (yych == 't') goto yy566; + if (yych == 'a') goto yy581; goto yy87; -yy418: +yy431: + yych = *++cursor_; + if (yych == 't') goto yy582; + goto yy87; +yy432: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 449 "src/wast-lexer.cc" { RETURN(EXPORT); } -#line 2873 "src/prebuilt/wast-lexer-gen.cc" -yy420: +#line 2940 "src/prebuilt/wast-lexer-gen.cc" +yy434: yych = *++cursor_; - if (yych == 's') goto yy567; + if (yych == 's') goto yy583; goto yy87; -yy421: +yy435: yych = *++cursor_; - if (yych == 'd') goto yy569; + if (yych == 'd') goto yy585; goto yy87; -yy422: +yy436: yych = *++cursor_; - if (yych == 'i') goto yy571; + if (yych == 'i') goto yy587; goto yy87; -yy423: +yy437: yych = *++cursor_; - if (yych == 'n') goto yy572; - if (yych == 'p') goto yy573; + if (yych == 'n') goto yy588; + if (yych == 'p') goto yy589; goto yy87; -yy424: +yy438: yych = *++cursor_; - if (yych == 'm') goto yy574; + if (yych == 'm') goto yy590; goto yy87; -yy425: +yy439: yych = *++cursor_; - if (yych == 'v') goto yy575; + if (yych == 'v') goto yy591; goto yy87; -yy426: +yy440: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 394 "src/wast-lexer.cc" { OPCODE(F32Eq); RETURN(COMPARE); } -#line 2906 "src/prebuilt/wast-lexer-gen.cc" -yy428: +#line 2973 "src/prebuilt/wast-lexer-gen.cc" +yy442: yych = *++cursor_; - if (yych == 'o') goto yy577; + if (yych == 'o') goto yy593; goto yy87; -yy429: +yy443: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 404 "src/wast-lexer.cc" { OPCODE(F32Ge); RETURN(COMPARE); } -#line 2918 "src/prebuilt/wast-lexer-gen.cc" -yy431: +#line 2985 "src/prebuilt/wast-lexer-gen.cc" +yy445: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 402 "src/wast-lexer.cc" { OPCODE(F32Gt); RETURN(COMPARE); } -#line 2926 "src/prebuilt/wast-lexer-gen.cc" -yy433: +#line 2993 "src/prebuilt/wast-lexer-gen.cc" +yy447: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 400 "src/wast-lexer.cc" { OPCODE(F32Le); RETURN(COMPARE); } -#line 2934 "src/prebuilt/wast-lexer-gen.cc" -yy435: +#line 3001 "src/prebuilt/wast-lexer-gen.cc" +yy449: yych = *++cursor_; - if (yych == 'a') goto yy578; + if (yych == 'a') goto yy594; goto yy87; -yy436: +yy450: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 398 "src/wast-lexer.cc" { OPCODE(F32Lt); RETURN(COMPARE); } -#line 2946 "src/prebuilt/wast-lexer-gen.cc" -yy438: +#line 3013 "src/prebuilt/wast-lexer-gen.cc" +yy452: yych = *++cursor_; - if (yych == 'x') goto yy579; + if (yych == 'x') goto yy595; goto yy87; -yy439: +yy453: yych = *++cursor_; - if (yych == 'n') goto yy581; + if (yych == 'n') goto yy597; goto yy87; -yy440: +yy454: yych = *++cursor_; - if (yych == 'l') goto yy583; + if (yych == 'l') goto yy599; goto yy87; -yy441: +yy455: ++cursor_; if ((yych = *cursor_) <= ':') { if (yych <= '"') { @@ -2966,120 +3033,120 @@ yy441: } } else { if (yych <= 'a') { - if (yych <= ';') goto yy442; + if (yych <= ';') goto yy456; if (yych <= '`') goto yy86; - goto yy585; + goto yy601; } else { - if (yych == 'g') goto yy586; + if (yych == 'g') goto yy602; if (yych <= '~') goto yy86; } } -yy442: +yy456: #line 396 "src/wast-lexer.cc" { OPCODE(F32Ne); RETURN(COMPARE); } -#line 2981 "src/prebuilt/wast-lexer-gen.cc" -yy443: +#line 3048 "src/prebuilt/wast-lexer-gen.cc" +yy457: yych = *++cursor_; - if (yych == 'i') goto yy588; + if (yych == 'i') goto yy604; goto yy87; -yy444: +yy458: yych = *++cursor_; - if (yych == 'r') goto yy589; + if (yych == 'r') goto yy605; goto yy87; -yy445: +yy459: yych = *++cursor_; - if (yych == 'o') goto yy590; + if (yych == 'o') goto yy606; goto yy87; -yy446: +yy460: yych = *++cursor_; - if (yych == 'b') goto yy591; + if (yych == 'b') goto yy607; goto yy87; -yy447: +yy461: yych = *++cursor_; - if (yych == 'u') goto yy593; + if (yych == 'u') goto yy609; goto yy87; -yy448: +yy462: yych = *++cursor_; - if (yych == 's') goto yy594; + if (yych == 's') goto yy610; goto yy87; -yy449: +yy463: yych = *++cursor_; - if (yych == 'd') goto yy596; + if (yych == 'd') goto yy612; goto yy87; -yy450: +yy464: yych = *++cursor_; - if (yych == 'i') goto yy598; + if (yych == 'i') goto yy614; goto yy87; -yy451: +yy465: yych = *++cursor_; - if (yych == 'n') goto yy599; - if (yych == 'p') goto yy600; + if (yych == 'n') goto yy615; + if (yych == 'p') goto yy616; goto yy87; -yy452: +yy466: yych = *++cursor_; - if (yych == 'v') goto yy601; + if (yych == 'v') goto yy617; goto yy87; -yy453: +yy467: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 395 "src/wast-lexer.cc" { OPCODE(F64Eq); RETURN(COMPARE); } -#line 3030 "src/prebuilt/wast-lexer-gen.cc" -yy455: +#line 3097 "src/prebuilt/wast-lexer-gen.cc" +yy469: yych = *++cursor_; - if (yych == 'o') goto yy603; + if (yych == 'o') goto yy619; goto yy87; -yy456: +yy470: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 405 "src/wast-lexer.cc" { OPCODE(F64Ge); RETURN(COMPARE); } -#line 3042 "src/prebuilt/wast-lexer-gen.cc" -yy458: +#line 3109 "src/prebuilt/wast-lexer-gen.cc" +yy472: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 403 "src/wast-lexer.cc" { OPCODE(F64Gt); RETURN(COMPARE); } -#line 3050 "src/prebuilt/wast-lexer-gen.cc" -yy460: +#line 3117 "src/prebuilt/wast-lexer-gen.cc" +yy474: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 401 "src/wast-lexer.cc" { OPCODE(F64Le); RETURN(COMPARE); } -#line 3058 "src/prebuilt/wast-lexer-gen.cc" -yy462: +#line 3125 "src/prebuilt/wast-lexer-gen.cc" +yy476: yych = *++cursor_; - if (yych == 'a') goto yy604; + if (yych == 'a') goto yy620; goto yy87; -yy463: +yy477: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 399 "src/wast-lexer.cc" { OPCODE(F64Lt); RETURN(COMPARE); } -#line 3070 "src/prebuilt/wast-lexer-gen.cc" -yy465: +#line 3137 "src/prebuilt/wast-lexer-gen.cc" +yy479: yych = *++cursor_; - if (yych == 'x') goto yy605; + if (yych == 'x') goto yy621; goto yy87; -yy466: +yy480: yych = *++cursor_; - if (yych == 'n') goto yy607; + if (yych == 'n') goto yy623; goto yy87; -yy467: +yy481: yych = *++cursor_; - if (yych == 'l') goto yy609; + if (yych == 'l') goto yy625; goto yy87; -yy468: +yy482: ++cursor_; if ((yych = *cursor_) <= ':') { if (yych <= '"') { @@ -3090,418 +3157,422 @@ yy468: } } else { if (yych <= 'a') { - if (yych <= ';') goto yy469; + if (yych <= ';') goto yy483; if (yych <= '`') goto yy86; - goto yy611; + goto yy627; } else { - if (yych == 'g') goto yy612; + if (yych == 'g') goto yy628; if (yych <= '~') goto yy86; } } -yy469: +yy483: #line 397 "src/wast-lexer.cc" { OPCODE(F64Ne); RETURN(COMPARE); } -#line 3105 "src/prebuilt/wast-lexer-gen.cc" -yy470: +#line 3172 "src/prebuilt/wast-lexer-gen.cc" +yy484: yych = *++cursor_; - if (yych == 'o') goto yy614; + if (yych == 'o') goto yy630; goto yy87; -yy471: +yy485: yych = *++cursor_; - if (yych == 'i') goto yy615; + if (yych == 'i') goto yy631; goto yy87; -yy472: +yy486: yych = *++cursor_; - if (yych == 'r') goto yy616; + if (yych == 'r') goto yy632; goto yy87; -yy473: +yy487: yych = *++cursor_; - if (yych == 'o') goto yy617; + if (yych == 'o') goto yy633; goto yy87; -yy474: +yy488: yych = *++cursor_; - if (yych == 'b') goto yy618; + if (yych == 'b') goto yy634; goto yy87; -yy475: +yy489: yych = *++cursor_; - if (yych == 'u') goto yy620; + if (yych == 'u') goto yy636; goto yy87; -yy476: +yy490: yych = *++cursor_; - if (yych == 'o') goto yy621; + if (yych == 'o') goto yy637; goto yy87; -yy477: +yy491: yych = *++cursor_; - if (yych == 'c') goto yy622; + if (yych == 'c') goto yy638; goto yy87; -yy478: +yy492: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 440 "src/wast-lexer.cc" { RETURN(GLOBAL); } -#line 3145 "src/prebuilt/wast-lexer-gen.cc" -yy480: +#line 3212 "src/prebuilt/wast-lexer-gen.cc" +yy494: yych = *++cursor_; - if (yych == 'e') goto yy623; + if (yych == 'e') goto yy639; goto yy87; -yy481: +yy495: yych = *++cursor_; - if (yych == 'd') goto yy624; + if (yych == 'd') goto yy640; goto yy87; -yy482: +yy496: yych = *++cursor_; - if (yych == 'd') goto yy626; + if (yych == 'd') goto yy642; goto yy87; -yy483: +yy497: yych = *++cursor_; - if (yych == 'z') goto yy628; + if (yych == 'z') goto yy644; goto yy87; -yy484: +yy498: yych = *++cursor_; - if (yych == 'n') goto yy630; + if (yych == 'n') goto yy646; goto yy87; -yy485: +yy499: yych = *++cursor_; - if (yych == 'z') goto yy631; + if (yych == 'z') goto yy647; goto yy87; -yy486: +yy500: yych = *++cursor_; - if (yych == 'v') goto yy633; + if (yych == 'v') goto yy649; goto yy87; -yy487: +yy501: ++cursor_; if ((yych = *cursor_) <= ')') { if (yych <= '!') { if (yych >= '!') goto yy86; } else { - if (yych <= '"') goto yy488; + if (yych <= '"') goto yy502; if (yych <= '\'') goto yy86; } } else { if (yych <= 'y') { if (yych != ';') goto yy86; } else { - if (yych <= 'z') goto yy634; + if (yych <= 'z') goto yy650; if (yych <= '~') goto yy86; } } -yy488: +yy502: #line 374 "src/wast-lexer.cc" { OPCODE(I32Eq); RETURN(COMPARE); } -#line 3194 "src/prebuilt/wast-lexer-gen.cc" -yy489: +#line 3261 "src/prebuilt/wast-lexer-gen.cc" +yy503: yych = *++cursor_; - if (yych == '_') goto yy636; + if (yych == '_') goto yy652; goto yy87; -yy490: +yy504: yych = *++cursor_; - if (yych == '_') goto yy637; + if (yych == '_') goto yy653; goto yy87; -yy491: +yy505: yych = *++cursor_; - if (yych == '_') goto yy638; + if (yych == '_') goto yy654; goto yy87; -yy492: +yy506: yych = *++cursor_; - if (yych == 'a') goto yy639; + if (yych == 'a') goto yy655; goto yy87; -yy493: +yy507: yych = *++cursor_; - if (yych == '_') goto yy640; + if (yych == '_') goto yy656; goto yy87; -yy494: +yy508: yych = *++cursor_; - if (yych == 'l') goto yy641; + if (yych == 'l') goto yy657; goto yy87; -yy495: +yy509: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 376 "src/wast-lexer.cc" { OPCODE(I32Ne); RETURN(COMPARE); } -#line 3226 "src/prebuilt/wast-lexer-gen.cc" -yy497: +#line 3293 "src/prebuilt/wast-lexer-gen.cc" +yy511: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 346 "src/wast-lexer.cc" { OPCODE(I32Or); RETURN(BINARY); } -#line 3234 "src/prebuilt/wast-lexer-gen.cc" -yy499: +#line 3301 "src/prebuilt/wast-lexer-gen.cc" +yy513: yych = *++cursor_; - if (yych == 'p') goto yy643; + if (yych == 'p') goto yy659; goto yy87; -yy500: +yy514: yych = *++cursor_; - if (yych == 'i') goto yy644; - if (yych == 'm') goto yy645; + if (yych == 'i') goto yy660; + if (yych == 'm') goto yy661; goto yy87; -yy501: +yy515: yych = *++cursor_; - if (yych == 't') goto yy646; + if (yych == 't') goto yy662; goto yy87; -yy502: +yy516: yych = *++cursor_; - if (yych == 'l') goto yy647; - if (yych == 'r') goto yy649; + if (yych == 'l') goto yy663; + if (yych == 'r') goto yy665; goto yy87; -yy503: +yy517: yych = *++cursor_; - if (yych == 'o') goto yy650; + if (yych == 'o') goto yy666; goto yy87; -yy504: +yy518: yych = *++cursor_; - if (yych == 'b') goto yy651; + if (yych == 'b') goto yy667; goto yy87; -yy505: +yy519: yych = *++cursor_; - if (yych == 'u') goto yy653; + if (yych == 'u') goto yy669; goto yy87; -yy506: +yy520: yych = *++cursor_; - if (yych == 'a') goto yy654; + if (yych == 'a') goto yy670; goto yy87; -yy507: +yy521: yych = *++cursor_; - if (yych == 'r') goto yy655; + if (yych == 'r') goto yy671; goto yy87; -yy508: +yy522: yych = *++cursor_; - if (yych == 'd') goto yy657; + if (yych == 'd') goto yy673; goto yy87; -yy509: +yy523: yych = *++cursor_; - if (yych == 'd') goto yy659; + if (yych == 'd') goto yy675; goto yy87; -yy510: +yy524: yych = *++cursor_; - if (yych == 'z') goto yy661; + if (yych == 'z') goto yy677; goto yy87; -yy511: +yy525: yych = *++cursor_; - if (yych == 'n') goto yy663; + if (yych == 'n') goto yy679; goto yy87; -yy512: +yy526: yych = *++cursor_; - if (yych == 'z') goto yy664; + if (yych == 'z') goto yy680; goto yy87; -yy513: +yy527: yych = *++cursor_; - if (yych == 'v') goto yy666; + if (yych == 'v') goto yy682; goto yy87; -yy514: +yy528: ++cursor_; if ((yych = *cursor_) <= ')') { if (yych <= '!') { if (yych >= '!') goto yy86; } else { - if (yych <= '"') goto yy515; + if (yych <= '"') goto yy529; if (yych <= '\'') goto yy86; } } else { if (yych <= 'y') { if (yych != ';') goto yy86; } else { - if (yych <= 'z') goto yy667; + if (yych <= 'z') goto yy683; if (yych <= '~') goto yy86; } } -yy515: +yy529: #line 375 "src/wast-lexer.cc" { OPCODE(I64Eq); RETURN(COMPARE); } -#line 3317 "src/prebuilt/wast-lexer-gen.cc" -yy516: +#line 3384 "src/prebuilt/wast-lexer-gen.cc" +yy530: yych = *++cursor_; - if (yych == 't') goto yy669; + if (yych == 't') goto yy685; goto yy87; -yy517: +yy531: yych = *++cursor_; - if (yych == '_') goto yy670; + if (yych == '_') goto yy686; goto yy87; -yy518: +yy532: yych = *++cursor_; - if (yych == '_') goto yy671; + if (yych == '_') goto yy687; goto yy87; -yy519: +yy533: yych = *++cursor_; - if (yych == '_') goto yy672; + if (yych == '_') goto yy688; goto yy87; -yy520: +yy534: yych = *++cursor_; - if (yych == 'a') goto yy673; + if (yych == 'a') goto yy689; goto yy87; -yy521: +yy535: yych = *++cursor_; - if (yych == '_') goto yy674; + if (yych == '_') goto yy690; goto yy87; -yy522: +yy536: yych = *++cursor_; - if (yych == 'l') goto yy675; + if (yych == 'l') goto yy691; goto yy87; -yy523: +yy537: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 377 "src/wast-lexer.cc" { OPCODE(I64Ne); RETURN(COMPARE); } -#line 3353 "src/prebuilt/wast-lexer-gen.cc" -yy525: +#line 3420 "src/prebuilt/wast-lexer-gen.cc" +yy539: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 347 "src/wast-lexer.cc" { OPCODE(I64Or); RETURN(BINARY); } -#line 3361 "src/prebuilt/wast-lexer-gen.cc" -yy527: +#line 3428 "src/prebuilt/wast-lexer-gen.cc" +yy541: yych = *++cursor_; - if (yych == 'p') goto yy677; + if (yych == 'p') goto yy693; goto yy87; -yy528: +yy542: yych = *++cursor_; - if (yych == 'i') goto yy678; - if (yych == 'm') goto yy679; + if (yych == 'i') goto yy694; + if (yych == 'm') goto yy695; goto yy87; -yy529: +yy543: yych = *++cursor_; - if (yych == 't') goto yy680; + if (yych == 't') goto yy696; goto yy87; -yy530: +yy544: yych = *++cursor_; - if (yych == 'l') goto yy681; - if (yych == 'r') goto yy683; + if (yych == 'l') goto yy697; + if (yych == 'r') goto yy699; goto yy87; -yy531: +yy545: yych = *++cursor_; - if (yych == 'o') goto yy684; + if (yych == 'o') goto yy700; goto yy87; -yy532: +yy546: yych = *++cursor_; - if (yych == 'b') goto yy685; + if (yych == 'b') goto yy701; goto yy87; -yy533: +yy547: yych = *++cursor_; - if (yych == 'u') goto yy687; + if (yych == 'u') goto yy703; goto yy87; -yy534: +yy548: yych = *++cursor_; - if (yych == 'r') goto yy688; + if (yych == 'r') goto yy704; goto yy87; -yy535: +yy549: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 448 "src/wast-lexer.cc" { RETURN(IMPORT); } -#line 3403 "src/prebuilt/wast-lexer-gen.cc" -yy537: +#line 3470 "src/prebuilt/wast-lexer-gen.cc" +yy551: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 451 "src/wast-lexer.cc" { RETURN(INVOKE); } -#line 3411 "src/prebuilt/wast-lexer-gen.cc" -yy539: +#line 3478 "src/prebuilt/wast-lexer-gen.cc" +yy553: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 443 "src/wast-lexer.cc" { RETURN(MEMORY); } -#line 3419 "src/prebuilt/wast-lexer-gen.cc" -yy541: +#line 3486 "src/prebuilt/wast-lexer-gen.cc" +yy555: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 441 "src/wast-lexer.cc" { RETURN(MODULE); } -#line 3427 "src/prebuilt/wast-lexer-gen.cc" -yy543: +#line 3494 "src/prebuilt/wast-lexer-gen.cc" +yy557: yych = *++cursor_; if (yych <= '@') { if (yych <= '/') goto yy87; - if (yych <= '9') goto yy690; + if (yych <= '9') goto yy706; goto yy87; } else { - if (yych <= 'F') goto yy690; + if (yych <= 'F') goto yy706; if (yych <= '`') goto yy87; - if (yych <= 'f') goto yy690; + if (yych <= 'f') goto yy706; goto yy87; } -yy544: +yy558: ++cursor_; if ((yych = *cursor_) <= ')') { if (yych <= '!') { if (yych >= '!') goto yy86; } else { - if (yych <= '"') goto yy545; + if (yych <= '"') goto yy559; if (yych <= '\'') goto yy86; } } else { if (yych <= '<') { if (yych != ';') goto yy86; } else { - if (yych <= '=') goto yy692; + if (yych <= '=') goto yy708; if (yych <= '~') goto yy86; } } -yy545: +yy559: #line 447 "src/wast-lexer.cc" { RETURN(OFFSET); } -#line 3460 "src/prebuilt/wast-lexer-gen.cc" -yy546: +#line 3527 "src/prebuilt/wast-lexer-gen.cc" +yy560: yych = *++cursor_; - if (yych == 'e') goto yy693; + if (yych == 'e') goto yy709; goto yy87; -yy547: +yy561: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 438 "src/wast-lexer.cc" { RETURN(RESULT); } -#line 3472 "src/prebuilt/wast-lexer-gen.cc" -yy549: +#line 3539 "src/prebuilt/wast-lexer-gen.cc" +yy563: + yych = *++cursor_; + if (yych == 'w') goto yy710; + goto yy87; +yy564: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 273 "src/wast-lexer.cc" { RETURN(RETURN); } -#line 3480 "src/prebuilt/wast-lexer-gen.cc" -yy551: +#line 3551 "src/prebuilt/wast-lexer-gen.cc" +yy566: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 431 "src/wast-lexer.cc" { RETURN(SELECT); } -#line 3488 "src/prebuilt/wast-lexer-gen.cc" -yy553: +#line 3559 "src/prebuilt/wast-lexer-gen.cc" +yy568: yych = *++cursor_; - if (yych == 'o') goto yy694; + if (yych == 'o') goto yy712; goto yy87; -yy554: +yy569: yych = *++cursor_; - if (yych == 'c') goto yy695; + if (yych == 'c') goto yy713; goto yy87; -yy555: +yy570: yych = *++cursor_; - if (yych == 'c') goto yy696; + if (yych == 'c') goto yy714; goto yy87; -yy556: +yy571: yych = *++cursor_; - if (yych == 'h') goto yy697; + if (yych == 'h') goto yy715; goto yy87; -yy557: +yy572: ++cursor_; if ((yych = *cursor_) <= '/') { if (yych <= '"') { @@ -3512,870 +3583,886 @@ yy557: } } else { if (yych <= ';') { - if (yych <= '9') goto yy559; + if (yych <= '9') goto yy574; if (yych <= ':') goto yy86; } else { - if (yych == 'x') goto yy698; + if (yych == 'x') goto yy716; if (yych <= '~') goto yy86; } } -yy558: +yy573: #line 303 "src/wast-lexer.cc" { TEXT_AT(6); RETURN(ALIGN_EQ_NAT); } -#line 3526 "src/prebuilt/wast-lexer-gen.cc" -yy559: +#line 3597 "src/prebuilt/wast-lexer-gen.cc" +yy574: ++cursor_; if (limit_ <= cursor_) FILL(1); yych = *cursor_; if (yych <= ')') { if (yych <= '!') { - if (yych <= ' ') goto yy558; + if (yych <= ' ') goto yy573; goto yy86; } else { - if (yych <= '"') goto yy558; + if (yych <= '"') goto yy573; if (yych <= '\'') goto yy86; - goto yy558; + goto yy573; } } else { if (yych <= ':') { if (yych <= '/') goto yy86; - if (yych <= '9') goto yy559; + if (yych <= '9') goto yy574; goto yy86; } else { - if (yych <= ';') goto yy558; + if (yych <= ';') goto yy573; if (yych <= '~') goto yy86; - goto yy558; + goto yy573; } } -yy561: +yy576: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 258 "src/wast-lexer.cc" { RETURN(ANYFUNC); } -#line 3558 "src/prebuilt/wast-lexer-gen.cc" -yy563: +#line 3629 "src/prebuilt/wast-lexer-gen.cc" +yy578: yych = *++cursor_; switch (yych) { - case 'e': goto yy699; - case 'i': goto yy700; - case 'm': goto yy701; - case 'r': goto yy702; - case 't': goto yy703; - case 'u': goto yy704; + case 'e': goto yy717; + case 'i': goto yy718; + case 'm': goto yy719; + case 'r': goto yy720; + case 't': goto yy721; + case 'u': goto yy722; default: goto yy87; } -yy564: +yy579: yych = *++cursor_; - if (yych == 'e') goto yy705; + if (yych == 'e') goto yy723; goto yy87; -yy565: +yy580: yych = *++cursor_; - if (yych == 'd') goto yy707; + if (yych == 'd') goto yy725; goto yy87; -yy566: +yy581: yych = *++cursor_; - if (yych == '_') goto yy708; + if (yych == 'l') goto yy726; goto yy87; -yy567: +yy582: + yych = *++cursor_; + if (yych == '_') goto yy727; + goto yy87; +yy583: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 318 "src/wast-lexer.cc" { OPCODE(F32Abs); RETURN(UNARY); } -#line 3589 "src/prebuilt/wast-lexer-gen.cc" -yy569: +#line 3664 "src/prebuilt/wast-lexer-gen.cc" +yy585: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 360 "src/wast-lexer.cc" { OPCODE(F32Add); RETURN(BINARY); } -#line 3597 "src/prebuilt/wast-lexer-gen.cc" -yy571: +#line 3672 "src/prebuilt/wast-lexer-gen.cc" +yy587: yych = *++cursor_; - if (yych == 'l') goto yy709; + if (yych == 'l') goto yy728; goto yy87; -yy572: +yy588: yych = *++cursor_; - if (yych == 's') goto yy711; - if (yych == 'v') goto yy712; + if (yych == 's') goto yy730; + if (yych == 'v') goto yy731; goto yy87; -yy573: +yy589: yych = *++cursor_; - if (yych == 'y') goto yy713; + if (yych == 'y') goto yy732; goto yy87; -yy574: +yy590: yych = *++cursor_; - if (yych == 'o') goto yy714; + if (yych == 'o') goto yy733; goto yy87; -yy575: +yy591: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 366 "src/wast-lexer.cc" { OPCODE(F32Div); RETURN(BINARY); } -#line 3622 "src/prebuilt/wast-lexer-gen.cc" -yy577: +#line 3697 "src/prebuilt/wast-lexer-gen.cc" +yy593: yych = *++cursor_; - if (yych == 'o') goto yy715; + if (yych == 'o') goto yy734; goto yy87; -yy578: +yy594: yych = *++cursor_; - if (yych == 'd') goto yy716; + if (yych == 'd') goto yy735; goto yy87; -yy579: +yy595: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 370 "src/wast-lexer.cc" { OPCODE(F32Max); RETURN(BINARY); } -#line 3638 "src/prebuilt/wast-lexer-gen.cc" -yy581: +#line 3713 "src/prebuilt/wast-lexer-gen.cc" +yy597: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 368 "src/wast-lexer.cc" { OPCODE(F32Min); RETURN(BINARY); } -#line 3646 "src/prebuilt/wast-lexer-gen.cc" -yy583: +#line 3721 "src/prebuilt/wast-lexer-gen.cc" +yy599: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 364 "src/wast-lexer.cc" { OPCODE(F32Mul); RETURN(BINARY); } -#line 3654 "src/prebuilt/wast-lexer-gen.cc" -yy585: +#line 3729 "src/prebuilt/wast-lexer-gen.cc" +yy601: yych = *++cursor_; - if (yych == 'r') goto yy718; + if (yych == 'r') goto yy737; goto yy87; -yy586: +yy602: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 316 "src/wast-lexer.cc" { OPCODE(F32Neg); RETURN(UNARY); } -#line 3666 "src/prebuilt/wast-lexer-gen.cc" -yy588: +#line 3741 "src/prebuilt/wast-lexer-gen.cc" +yy604: yych = *++cursor_; - if (yych == 'n') goto yy719; + if (yych == 'n') goto yy738; goto yy87; -yy589: +yy605: yych = *++cursor_; - if (yych == 't') goto yy720; + if (yych == 't') goto yy739; goto yy87; -yy590: +yy606: yych = *++cursor_; - if (yych == 'r') goto yy722; + if (yych == 'r') goto yy741; goto yy87; -yy591: +yy607: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 362 "src/wast-lexer.cc" { OPCODE(F32Sub); RETURN(BINARY); } -#line 3686 "src/prebuilt/wast-lexer-gen.cc" -yy593: +#line 3761 "src/prebuilt/wast-lexer-gen.cc" +yy609: yych = *++cursor_; - if (yych == 'n') goto yy723; + if (yych == 'n') goto yy742; goto yy87; -yy594: +yy610: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 319 "src/wast-lexer.cc" { OPCODE(F64Abs); RETURN(UNARY); } -#line 3698 "src/prebuilt/wast-lexer-gen.cc" -yy596: +#line 3773 "src/prebuilt/wast-lexer-gen.cc" +yy612: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 361 "src/wast-lexer.cc" { OPCODE(F64Add); RETURN(BINARY); } -#line 3706 "src/prebuilt/wast-lexer-gen.cc" -yy598: +#line 3781 "src/prebuilt/wast-lexer-gen.cc" +yy614: yych = *++cursor_; - if (yych == 'l') goto yy724; + if (yych == 'l') goto yy743; goto yy87; -yy599: +yy615: yych = *++cursor_; - if (yych == 's') goto yy726; - if (yych == 'v') goto yy727; + if (yych == 's') goto yy745; + if (yych == 'v') goto yy746; goto yy87; -yy600: +yy616: yych = *++cursor_; - if (yych == 'y') goto yy728; + if (yych == 'y') goto yy747; goto yy87; -yy601: +yy617: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 367 "src/wast-lexer.cc" { OPCODE(F64Div); RETURN(BINARY); } -#line 3727 "src/prebuilt/wast-lexer-gen.cc" -yy603: +#line 3802 "src/prebuilt/wast-lexer-gen.cc" +yy619: yych = *++cursor_; - if (yych == 'o') goto yy729; + if (yych == 'o') goto yy748; goto yy87; -yy604: +yy620: yych = *++cursor_; - if (yych == 'd') goto yy730; + if (yych == 'd') goto yy749; goto yy87; -yy605: +yy621: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 371 "src/wast-lexer.cc" { OPCODE(F64Max); RETURN(BINARY); } -#line 3743 "src/prebuilt/wast-lexer-gen.cc" -yy607: +#line 3818 "src/prebuilt/wast-lexer-gen.cc" +yy623: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 369 "src/wast-lexer.cc" { OPCODE(F64Min); RETURN(BINARY); } -#line 3751 "src/prebuilt/wast-lexer-gen.cc" -yy609: +#line 3826 "src/prebuilt/wast-lexer-gen.cc" +yy625: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 365 "src/wast-lexer.cc" { OPCODE(F64Mul); RETURN(BINARY); } -#line 3759 "src/prebuilt/wast-lexer-gen.cc" -yy611: +#line 3834 "src/prebuilt/wast-lexer-gen.cc" +yy627: yych = *++cursor_; - if (yych == 'r') goto yy732; + if (yych == 'r') goto yy751; goto yy87; -yy612: +yy628: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 317 "src/wast-lexer.cc" { OPCODE(F64Neg); RETURN(UNARY); } -#line 3771 "src/prebuilt/wast-lexer-gen.cc" -yy614: +#line 3846 "src/prebuilt/wast-lexer-gen.cc" +yy630: yych = *++cursor_; - if (yych == 'm') goto yy733; + if (yych == 'm') goto yy752; goto yy87; -yy615: +yy631: yych = *++cursor_; - if (yych == 'n') goto yy734; + if (yych == 'n') goto yy753; goto yy87; -yy616: +yy632: yych = *++cursor_; - if (yych == 't') goto yy735; + if (yych == 't') goto yy754; goto yy87; -yy617: +yy633: yych = *++cursor_; - if (yych == 'r') goto yy737; + if (yych == 'r') goto yy756; goto yy87; -yy618: +yy634: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 363 "src/wast-lexer.cc" { OPCODE(F64Sub); RETURN(BINARY); } -#line 3795 "src/prebuilt/wast-lexer-gen.cc" -yy620: +#line 3870 "src/prebuilt/wast-lexer-gen.cc" +yy636: yych = *++cursor_; - if (yych == 'n') goto yy738; + if (yych == 'n') goto yy757; goto yy87; -yy621: +yy637: yych = *++cursor_; - if (yych == 'b') goto yy739; + if (yych == 'b') goto yy758; goto yy87; -yy622: +yy638: yych = *++cursor_; - if (yych == 'a') goto yy740; + if (yych == 'a') goto yy759; goto yy87; -yy623: +yy639: yych = *++cursor_; - if (yych == 'm') goto yy741; + if (yych == 'm') goto yy760; goto yy87; -yy624: +yy640: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 330 "src/wast-lexer.cc" { OPCODE(I32Add); RETURN(BINARY); } -#line 3819 "src/prebuilt/wast-lexer-gen.cc" -yy626: +#line 3894 "src/prebuilt/wast-lexer-gen.cc" +yy642: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 344 "src/wast-lexer.cc" { OPCODE(I32And); RETURN(BINARY); } -#line 3827 "src/prebuilt/wast-lexer-gen.cc" -yy628: +#line 3902 "src/prebuilt/wast-lexer-gen.cc" +yy644: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 310 "src/wast-lexer.cc" { OPCODE(I32Clz); RETURN(UNARY); } -#line 3835 "src/prebuilt/wast-lexer-gen.cc" -yy630: +#line 3910 "src/prebuilt/wast-lexer-gen.cc" +yy646: yych = *++cursor_; - if (yych == 's') goto yy742; + if (yych == 's') goto yy761; goto yy87; -yy631: +yy647: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 312 "src/wast-lexer.cc" { OPCODE(I32Ctz); RETURN(UNARY); } -#line 3847 "src/prebuilt/wast-lexer-gen.cc" -yy633: +#line 3922 "src/prebuilt/wast-lexer-gen.cc" +yy649: yych = *++cursor_; - if (yych == '_') goto yy743; + if (yych == '_') goto yy762; goto yy87; -yy634: +yy650: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 308 "src/wast-lexer.cc" { OPCODE(I32Eqz); RETURN(CONVERT); } -#line 3859 "src/prebuilt/wast-lexer-gen.cc" -yy636: +#line 3934 "src/prebuilt/wast-lexer-gen.cc" +yy652: yych = *++cursor_; - if (yych == 's') goto yy744; - if (yych == 'u') goto yy746; + if (yych == 's') goto yy763; + if (yych == 'u') goto yy765; goto yy87; -yy637: +yy653: yych = *++cursor_; - if (yych == 's') goto yy748; - if (yych == 'u') goto yy750; + if (yych == 's') goto yy767; + if (yych == 'u') goto yy769; goto yy87; -yy638: +yy654: yych = *++cursor_; - if (yych == 's') goto yy752; - if (yych == 'u') goto yy754; + if (yych == 's') goto yy771; + if (yych == 'u') goto yy773; goto yy87; -yy639: +yy655: yych = *++cursor_; - if (yych == 'd') goto yy756; + if (yych == 'd') goto yy775; goto yy87; -yy640: +yy656: yych = *++cursor_; - if (yych == 's') goto yy758; - if (yych == 'u') goto yy760; + if (yych == 's') goto yy777; + if (yych == 'u') goto yy779; goto yy87; -yy641: +yy657: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 334 "src/wast-lexer.cc" { OPCODE(I32Mul); RETURN(BINARY); } -#line 3891 "src/prebuilt/wast-lexer-gen.cc" -yy643: +#line 3966 "src/prebuilt/wast-lexer-gen.cc" +yy659: yych = *++cursor_; - if (yych == 'c') goto yy762; + if (yych == 'c') goto yy781; goto yy87; -yy644: +yy660: yych = *++cursor_; - if (yych == 'n') goto yy763; + if (yych == 'n') goto yy782; goto yy87; -yy645: +yy661: yych = *++cursor_; - if (yych == '_') goto yy764; + if (yych == '_') goto yy783; goto yy87; -yy646: +yy662: yych = *++cursor_; - if (yych == 'l') goto yy765; - if (yych == 'r') goto yy767; + if (yych == 'l') goto yy784; + if (yych == 'r') goto yy786; goto yy87; -yy647: +yy663: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 350 "src/wast-lexer.cc" { OPCODE(I32Shl); RETURN(BINARY); } -#line 3916 "src/prebuilt/wast-lexer-gen.cc" -yy649: +#line 3991 "src/prebuilt/wast-lexer-gen.cc" +yy665: yych = *++cursor_; - if (yych == '_') goto yy769; + if (yych == '_') goto yy788; goto yy87; -yy650: +yy666: yych = *++cursor_; - if (yych == 'r') goto yy770; + if (yych == 'r') goto yy789; goto yy87; -yy651: +yy667: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 332 "src/wast-lexer.cc" { OPCODE(I32Sub); RETURN(BINARY); } -#line 3932 "src/prebuilt/wast-lexer-gen.cc" -yy653: +#line 4007 "src/prebuilt/wast-lexer-gen.cc" +yy669: yych = *++cursor_; - if (yych == 'n') goto yy771; + if (yych == 'n') goto yy790; goto yy87; -yy654: +yy670: yych = *++cursor_; - if (yych == 'p') goto yy772; + if (yych == 'p') goto yy791; goto yy87; -yy655: +yy671: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 348 "src/wast-lexer.cc" { OPCODE(I32Xor); RETURN(BINARY); } -#line 3948 "src/prebuilt/wast-lexer-gen.cc" -yy657: +#line 4023 "src/prebuilt/wast-lexer-gen.cc" +yy673: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 331 "src/wast-lexer.cc" { OPCODE(I64Add); RETURN(BINARY); } -#line 3956 "src/prebuilt/wast-lexer-gen.cc" -yy659: +#line 4031 "src/prebuilt/wast-lexer-gen.cc" +yy675: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 345 "src/wast-lexer.cc" { OPCODE(I64And); RETURN(BINARY); } -#line 3964 "src/prebuilt/wast-lexer-gen.cc" -yy661: +#line 4039 "src/prebuilt/wast-lexer-gen.cc" +yy677: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 311 "src/wast-lexer.cc" { OPCODE(I64Clz); RETURN(UNARY); } -#line 3972 "src/prebuilt/wast-lexer-gen.cc" -yy663: +#line 4047 "src/prebuilt/wast-lexer-gen.cc" +yy679: yych = *++cursor_; - if (yych == 's') goto yy773; + if (yych == 's') goto yy792; goto yy87; -yy664: +yy680: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 313 "src/wast-lexer.cc" { OPCODE(I64Ctz); RETURN(UNARY); } -#line 3984 "src/prebuilt/wast-lexer-gen.cc" -yy666: +#line 4059 "src/prebuilt/wast-lexer-gen.cc" +yy682: yych = *++cursor_; - if (yych == '_') goto yy774; + if (yych == '_') goto yy793; goto yy87; -yy667: +yy683: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 309 "src/wast-lexer.cc" { OPCODE(I64Eqz); RETURN(CONVERT); } -#line 3996 "src/prebuilt/wast-lexer-gen.cc" -yy669: +#line 4071 "src/prebuilt/wast-lexer-gen.cc" +yy685: yych = *++cursor_; - if (yych == 'e') goto yy775; + if (yych == 'e') goto yy794; goto yy87; -yy670: +yy686: yych = *++cursor_; - if (yych == 's') goto yy776; - if (yych == 'u') goto yy778; + if (yych == 's') goto yy795; + if (yych == 'u') goto yy797; goto yy87; -yy671: +yy687: yych = *++cursor_; - if (yych == 's') goto yy780; - if (yych == 'u') goto yy782; + if (yych == 's') goto yy799; + if (yych == 'u') goto yy801; goto yy87; -yy672: +yy688: yych = *++cursor_; - if (yych == 's') goto yy784; - if (yych == 'u') goto yy786; + if (yych == 's') goto yy803; + if (yych == 'u') goto yy805; goto yy87; -yy673: +yy689: yych = *++cursor_; - if (yych == 'd') goto yy788; + if (yych == 'd') goto yy807; goto yy87; -yy674: +yy690: yych = *++cursor_; - if (yych == 's') goto yy790; - if (yych == 'u') goto yy792; + if (yych == 's') goto yy809; + if (yych == 'u') goto yy811; goto yy87; -yy675: +yy691: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 335 "src/wast-lexer.cc" { OPCODE(I64Mul); RETURN(BINARY); } -#line 4032 "src/prebuilt/wast-lexer-gen.cc" -yy677: +#line 4107 "src/prebuilt/wast-lexer-gen.cc" +yy693: yych = *++cursor_; - if (yych == 'c') goto yy794; + if (yych == 'c') goto yy813; goto yy87; -yy678: +yy694: yych = *++cursor_; - if (yych == 'n') goto yy795; + if (yych == 'n') goto yy814; goto yy87; -yy679: +yy695: yych = *++cursor_; - if (yych == '_') goto yy796; + if (yych == '_') goto yy815; goto yy87; -yy680: +yy696: yych = *++cursor_; - if (yych == 'l') goto yy797; - if (yych == 'r') goto yy799; + if (yych == 'l') goto yy816; + if (yych == 'r') goto yy818; goto yy87; -yy681: +yy697: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 351 "src/wast-lexer.cc" { OPCODE(I64Shl); RETURN(BINARY); } -#line 4057 "src/prebuilt/wast-lexer-gen.cc" -yy683: +#line 4132 "src/prebuilt/wast-lexer-gen.cc" +yy699: yych = *++cursor_; - if (yych == '_') goto yy801; + if (yych == '_') goto yy820; goto yy87; -yy684: +yy700: yych = *++cursor_; - if (yych == 'r') goto yy802; + if (yych == 'r') goto yy821; goto yy87; -yy685: +yy701: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 333 "src/wast-lexer.cc" { OPCODE(I64Sub); RETURN(BINARY); } -#line 4073 "src/prebuilt/wast-lexer-gen.cc" -yy687: +#line 4148 "src/prebuilt/wast-lexer-gen.cc" +yy703: yych = *++cursor_; - if (yych == 'n') goto yy803; + if (yych == 'n') goto yy822; goto yy87; -yy688: +yy704: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 349 "src/wast-lexer.cc" { OPCODE(I64Xor); RETURN(BINARY); } -#line 4085 "src/prebuilt/wast-lexer-gen.cc" -yy690: +#line 4160 "src/prebuilt/wast-lexer-gen.cc" +yy706: ++cursor_; if (limit_ <= cursor_) FILL(1); yych = *cursor_; if (yych <= '9') { if (yych <= '"') { if (yych == '!') goto yy86; - goto yy246; + goto yy248; } else { if (yych <= '\'') goto yy86; - if (yych <= ')') goto yy246; + if (yych <= ')') goto yy248; if (yych <= '/') goto yy86; - goto yy690; + goto yy706; } } else { if (yych <= 'F') { - if (yych == ';') goto yy246; + if (yych == ';') goto yy248; if (yych <= '@') goto yy86; - goto yy690; + goto yy706; } else { if (yych <= '`') goto yy86; - if (yych <= 'f') goto yy690; + if (yych <= 'f') goto yy706; if (yych <= '~') goto yy86; - goto yy246; + goto yy248; } } -yy692: +yy708: yych = *++cursor_; if (yych <= '/') goto yy87; - if (yych <= '0') goto yy804; - if (yych <= '9') goto yy806; + if (yych <= '0') goto yy823; + if (yych <= '9') goto yy825; goto yy87; -yy693: +yy709: yych = *++cursor_; - if (yych == 'r') goto yy808; + if (yych == 'r') goto yy827; goto yy87; -yy694: +yy710: + ++cursor_; + if (yybm[0+(yych = *cursor_)] & 8) { + goto yy86; + } +#line 467 "src/wast-lexer.cc" + { RETURN(RETHROW); } +#line 4204 "src/prebuilt/wast-lexer-gen.cc" +yy712: yych = *++cursor_; - if (yych == 'b') goto yy810; + if (yych == 'b') goto yy829; goto yy87; -yy695: +yy713: yych = *++cursor_; - if (yych == 'a') goto yy811; + if (yych == 'a') goto yy830; goto yy87; -yy696: +yy714: yych = *++cursor_; - if (yych == 'a') goto yy812; + if (yych == 'a') goto yy831; goto yy87; -yy697: +yy715: yych = *++cursor_; - if (yych == 'a') goto yy813; + if (yych == 'a') goto yy832; goto yy87; -yy698: +yy716: yych = *++cursor_; if (yych <= '@') { if (yych <= '/') goto yy87; - if (yych <= '9') goto yy814; + if (yych <= '9') goto yy833; goto yy87; } else { - if (yych <= 'F') goto yy814; + if (yych <= 'F') goto yy833; if (yych <= '`') goto yy87; - if (yych <= 'f') goto yy814; + if (yych <= 'f') goto yy833; goto yy87; } -yy699: +yy717: yych = *++cursor_; - if (yych == 'x') goto yy816; + if (yych == 'x') goto yy835; goto yy87; -yy700: +yy718: yych = *++cursor_; - if (yych == 'n') goto yy817; + if (yych == 'n') goto yy836; goto yy87; -yy701: +yy719: yych = *++cursor_; - if (yych == 'a') goto yy818; + if (yych == 'a') goto yy837; goto yy87; -yy702: +yy720: yych = *++cursor_; - if (yych == 'e') goto yy819; + if (yych == 'e') goto yy838; goto yy87; -yy703: +yy721: yych = *++cursor_; - if (yych == 'r') goto yy820; + if (yych == 'r') goto yy839; goto yy87; -yy704: +yy722: yych = *++cursor_; - if (yych == 'n') goto yy821; + if (yych == 'n') goto yy840; goto yy87; -yy705: +yy723: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 268 "src/wast-lexer.cc" { RETURN(BR_TABLE); } -#line 4181 "src/prebuilt/wast-lexer-gen.cc" -yy707: +#line 4264 "src/prebuilt/wast-lexer-gen.cc" +yy725: yych = *++cursor_; - if (yych == 'i') goto yy822; + if (yych == 'i') goto yy841; goto yy87; -yy708: +yy726: yych = *++cursor_; - if (yych == 'm') goto yy823; + if (yych == 'l') goto yy842; goto yy87; -yy709: +yy727: + yych = *++cursor_; + if (yych == 'm') goto yy844; + goto yy87; +yy728: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 322 "src/wast-lexer.cc" { OPCODE(F32Ceil); RETURN(UNARY); } -#line 4197 "src/prebuilt/wast-lexer-gen.cc" -yy711: +#line 4284 "src/prebuilt/wast-lexer-gen.cc" +yy730: yych = *++cursor_; - if (yych == 't') goto yy824; + if (yych == 't') goto yy845; goto yy87; -yy712: +yy731: yych = *++cursor_; - if (yych == 'e') goto yy826; + if (yych == 'e') goto yy847; goto yy87; -yy713: +yy732: yych = *++cursor_; - if (yych == 's') goto yy827; + if (yych == 's') goto yy848; goto yy87; -yy714: +yy733: yych = *++cursor_; - if (yych == 't') goto yy828; + if (yych == 't') goto yy849; goto yy87; -yy715: +yy734: yych = *++cursor_; - if (yych == 'r') goto yy829; + if (yych == 'r') goto yy850; goto yy87; -yy716: +yy735: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 281 "src/wast-lexer.cc" { OPCODE(F32Load); RETURN(LOAD); } -#line 4225 "src/prebuilt/wast-lexer-gen.cc" -yy718: +#line 4312 "src/prebuilt/wast-lexer-gen.cc" +yy737: yych = *++cursor_; - if (yych == 'e') goto yy831; + if (yych == 'e') goto yy852; goto yy87; -yy719: +yy738: yych = *++cursor_; - if (yych == 't') goto yy832; + if (yych == 't') goto yy853; goto yy87; -yy720: +yy739: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 320 "src/wast-lexer.cc" { OPCODE(F32Sqrt); RETURN(UNARY); } -#line 4241 "src/prebuilt/wast-lexer-gen.cc" -yy722: +#line 4328 "src/prebuilt/wast-lexer-gen.cc" +yy741: yych = *++cursor_; - if (yych == 'e') goto yy833; + if (yych == 'e') goto yy854; goto yy87; -yy723: +yy742: yych = *++cursor_; - if (yych == 'c') goto yy835; + if (yych == 'c') goto yy856; goto yy87; -yy724: +yy743: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 323 "src/wast-lexer.cc" { OPCODE(F64Ceil); RETURN(UNARY); } -#line 4257 "src/prebuilt/wast-lexer-gen.cc" -yy726: +#line 4344 "src/prebuilt/wast-lexer-gen.cc" +yy745: yych = *++cursor_; - if (yych == 't') goto yy837; + if (yych == 't') goto yy858; goto yy87; -yy727: +yy746: yych = *++cursor_; - if (yych == 'e') goto yy839; + if (yych == 'e') goto yy860; goto yy87; -yy728: +yy747: yych = *++cursor_; - if (yych == 's') goto yy840; + if (yych == 's') goto yy861; goto yy87; -yy729: +yy748: yych = *++cursor_; - if (yych == 'r') goto yy841; + if (yych == 'r') goto yy862; goto yy87; -yy730: +yy749: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 282 "src/wast-lexer.cc" { OPCODE(F64Load); RETURN(LOAD); } -#line 4281 "src/prebuilt/wast-lexer-gen.cc" -yy732: +#line 4368 "src/prebuilt/wast-lexer-gen.cc" +yy751: yych = *++cursor_; - if (yych == 'e') goto yy843; + if (yych == 'e') goto yy864; goto yy87; -yy733: +yy752: yych = *++cursor_; - if (yych == 'o') goto yy844; + if (yych == 'o') goto yy865; goto yy87; -yy734: +yy753: yych = *++cursor_; - if (yych == 't') goto yy845; + if (yych == 't') goto yy866; goto yy87; -yy735: +yy754: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 321 "src/wast-lexer.cc" { OPCODE(F64Sqrt); RETURN(UNARY); } -#line 4301 "src/prebuilt/wast-lexer-gen.cc" -yy737: +#line 4388 "src/prebuilt/wast-lexer-gen.cc" +yy756: yych = *++cursor_; - if (yych == 'e') goto yy846; + if (yych == 'e') goto yy867; goto yy87; -yy738: +yy757: yych = *++cursor_; - if (yych == 'c') goto yy848; + if (yych == 'c') goto yy869; goto yy87; -yy739: +yy758: yych = *++cursor_; - if (yych == 'a') goto yy850; + if (yych == 'a') goto yy871; goto yy87; -yy740: +yy759: yych = *++cursor_; - if (yych == 'l') goto yy851; + if (yych == 'l') goto yy872; goto yy87; -yy741: +yy760: yych = *++cursor_; - if (yych == 'o') goto yy853; + if (yych == 'o') goto yy874; goto yy87; -yy742: +yy761: yych = *++cursor_; - if (yych == 't') goto yy854; + if (yych == 't') goto yy875; goto yy87; -yy743: +yy762: yych = *++cursor_; - if (yych == 's') goto yy856; - if (yych == 'u') goto yy858; + if (yych == 's') goto yy877; + if (yych == 'u') goto yy879; goto yy87; -yy744: +yy763: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 390 "src/wast-lexer.cc" { OPCODE(I32GeS); RETURN(COMPARE); } -#line 4338 "src/prebuilt/wast-lexer-gen.cc" -yy746: +#line 4425 "src/prebuilt/wast-lexer-gen.cc" +yy765: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 392 "src/wast-lexer.cc" { OPCODE(I32GeU); RETURN(COMPARE); } -#line 4346 "src/prebuilt/wast-lexer-gen.cc" -yy748: +#line 4433 "src/prebuilt/wast-lexer-gen.cc" +yy767: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 386 "src/wast-lexer.cc" { OPCODE(I32GtS); RETURN(COMPARE); } -#line 4354 "src/prebuilt/wast-lexer-gen.cc" -yy750: +#line 4441 "src/prebuilt/wast-lexer-gen.cc" +yy769: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 388 "src/wast-lexer.cc" { OPCODE(I32GtU); RETURN(COMPARE); } -#line 4362 "src/prebuilt/wast-lexer-gen.cc" -yy752: +#line 4449 "src/prebuilt/wast-lexer-gen.cc" +yy771: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 382 "src/wast-lexer.cc" { OPCODE(I32LeS); RETURN(COMPARE); } -#line 4370 "src/prebuilt/wast-lexer-gen.cc" -yy754: +#line 4457 "src/prebuilt/wast-lexer-gen.cc" +yy773: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 384 "src/wast-lexer.cc" { OPCODE(I32LeU); RETURN(COMPARE); } -#line 4378 "src/prebuilt/wast-lexer-gen.cc" -yy756: +#line 4465 "src/prebuilt/wast-lexer-gen.cc" +yy775: ++cursor_; if ((yych = *cursor_) <= '0') { if (yych <= '"') { @@ -4386,225 +4473,225 @@ yy756: } } else { if (yych <= '8') { - if (yych <= '1') goto yy860; + if (yych <= '1') goto yy881; if (yych <= '7') goto yy86; - goto yy861; + goto yy882; } else { - if (yych == ';') goto yy757; + if (yych == ';') goto yy776; if (yych <= '~') goto yy86; } } -yy757: +yy776: #line 279 "src/wast-lexer.cc" { OPCODE(I32Load); RETURN(LOAD); } -#line 4401 "src/prebuilt/wast-lexer-gen.cc" -yy758: +#line 4488 "src/prebuilt/wast-lexer-gen.cc" +yy777: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 378 "src/wast-lexer.cc" { OPCODE(I32LtS); RETURN(COMPARE); } -#line 4409 "src/prebuilt/wast-lexer-gen.cc" -yy760: +#line 4496 "src/prebuilt/wast-lexer-gen.cc" +yy779: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 380 "src/wast-lexer.cc" { OPCODE(I32LtU); RETURN(COMPARE); } -#line 4417 "src/prebuilt/wast-lexer-gen.cc" -yy762: +#line 4504 "src/prebuilt/wast-lexer-gen.cc" +yy781: yych = *++cursor_; - if (yych == 'n') goto yy862; + if (yych == 'n') goto yy883; goto yy87; -yy763: +yy782: yych = *++cursor_; - if (yych == 't') goto yy863; + if (yych == 't') goto yy884; goto yy87; -yy764: +yy783: yych = *++cursor_; - if (yych == 's') goto yy864; - if (yych == 'u') goto yy866; + if (yych == 's') goto yy885; + if (yych == 'u') goto yy887; goto yy87; -yy765: +yy784: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 356 "src/wast-lexer.cc" { OPCODE(I32Rotl); RETURN(BINARY); } -#line 4438 "src/prebuilt/wast-lexer-gen.cc" -yy767: +#line 4525 "src/prebuilt/wast-lexer-gen.cc" +yy786: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 358 "src/wast-lexer.cc" { OPCODE(I32Rotr); RETURN(BINARY); } -#line 4446 "src/prebuilt/wast-lexer-gen.cc" -yy769: +#line 4533 "src/prebuilt/wast-lexer-gen.cc" +yy788: yych = *++cursor_; - if (yych == 's') goto yy868; - if (yych == 'u') goto yy870; + if (yych == 's') goto yy889; + if (yych == 'u') goto yy891; goto yy87; -yy770: +yy789: yych = *++cursor_; - if (yych == 'e') goto yy872; + if (yych == 'e') goto yy893; goto yy87; -yy771: +yy790: yych = *++cursor_; - if (yych == 'c') goto yy874; + if (yych == 'c') goto yy895; goto yy87; -yy772: +yy791: yych = *++cursor_; - if (yych == '/') goto yy875; + if (yych == '/') goto yy896; goto yy87; -yy773: +yy792: yych = *++cursor_; - if (yych == 't') goto yy876; + if (yych == 't') goto yy897; goto yy87; -yy774: +yy793: yych = *++cursor_; - if (yych == 's') goto yy878; - if (yych == 'u') goto yy880; + if (yych == 's') goto yy899; + if (yych == 'u') goto yy901; goto yy87; -yy775: +yy794: yych = *++cursor_; - if (yych == 'n') goto yy882; + if (yych == 'n') goto yy903; goto yy87; -yy776: +yy795: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 391 "src/wast-lexer.cc" { OPCODE(I64GeS); RETURN(COMPARE); } -#line 4484 "src/prebuilt/wast-lexer-gen.cc" -yy778: +#line 4571 "src/prebuilt/wast-lexer-gen.cc" +yy797: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 393 "src/wast-lexer.cc" { OPCODE(I64GeU); RETURN(COMPARE); } -#line 4492 "src/prebuilt/wast-lexer-gen.cc" -yy780: +#line 4579 "src/prebuilt/wast-lexer-gen.cc" +yy799: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 387 "src/wast-lexer.cc" { OPCODE(I64GtS); RETURN(COMPARE); } -#line 4500 "src/prebuilt/wast-lexer-gen.cc" -yy782: +#line 4587 "src/prebuilt/wast-lexer-gen.cc" +yy801: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 389 "src/wast-lexer.cc" { OPCODE(I64GtU); RETURN(COMPARE); } -#line 4508 "src/prebuilt/wast-lexer-gen.cc" -yy784: +#line 4595 "src/prebuilt/wast-lexer-gen.cc" +yy803: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 383 "src/wast-lexer.cc" { OPCODE(I64LeS); RETURN(COMPARE); } -#line 4516 "src/prebuilt/wast-lexer-gen.cc" -yy786: +#line 4603 "src/prebuilt/wast-lexer-gen.cc" +yy805: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 385 "src/wast-lexer.cc" { OPCODE(I64LeU); RETURN(COMPARE); } -#line 4524 "src/prebuilt/wast-lexer-gen.cc" -yy788: +#line 4611 "src/prebuilt/wast-lexer-gen.cc" +yy807: ++cursor_; if ((yych = *cursor_) <= '1') { if (yych <= '"') { if (yych == '!') goto yy86; } else { if (yych <= '\'') goto yy86; - if (yych <= ')') goto yy789; + if (yych <= ')') goto yy808; if (yych <= '0') goto yy86; - goto yy883; + goto yy904; } } else { if (yych <= '8') { - if (yych == '3') goto yy884; + if (yych == '3') goto yy905; if (yych <= '7') goto yy86; - goto yy885; + goto yy906; } else { - if (yych == ';') goto yy789; + if (yych == ';') goto yy808; if (yych <= '~') goto yy86; } } -yy789: +yy808: #line 280 "src/wast-lexer.cc" { OPCODE(I64Load); RETURN(LOAD); } -#line 4549 "src/prebuilt/wast-lexer-gen.cc" -yy790: +#line 4636 "src/prebuilt/wast-lexer-gen.cc" +yy809: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 379 "src/wast-lexer.cc" { OPCODE(I64LtS); RETURN(COMPARE); } -#line 4557 "src/prebuilt/wast-lexer-gen.cc" -yy792: +#line 4644 "src/prebuilt/wast-lexer-gen.cc" +yy811: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 381 "src/wast-lexer.cc" { OPCODE(I64LtU); RETURN(COMPARE); } -#line 4565 "src/prebuilt/wast-lexer-gen.cc" -yy794: +#line 4652 "src/prebuilt/wast-lexer-gen.cc" +yy813: yych = *++cursor_; - if (yych == 'n') goto yy886; + if (yych == 'n') goto yy907; goto yy87; -yy795: +yy814: yych = *++cursor_; - if (yych == 't') goto yy887; + if (yych == 't') goto yy908; goto yy87; -yy796: +yy815: yych = *++cursor_; - if (yych == 's') goto yy888; - if (yych == 'u') goto yy890; + if (yych == 's') goto yy909; + if (yych == 'u') goto yy911; goto yy87; -yy797: +yy816: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 357 "src/wast-lexer.cc" { OPCODE(I64Rotl); RETURN(BINARY); } -#line 4586 "src/prebuilt/wast-lexer-gen.cc" -yy799: +#line 4673 "src/prebuilt/wast-lexer-gen.cc" +yy818: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 359 "src/wast-lexer.cc" { OPCODE(I64Rotr); RETURN(BINARY); } -#line 4594 "src/prebuilt/wast-lexer-gen.cc" -yy801: +#line 4681 "src/prebuilt/wast-lexer-gen.cc" +yy820: yych = *++cursor_; - if (yych == 's') goto yy892; - if (yych == 'u') goto yy894; + if (yych == 's') goto yy913; + if (yych == 'u') goto yy915; goto yy87; -yy802: +yy821: yych = *++cursor_; - if (yych == 'e') goto yy896; + if (yych == 'e') goto yy917; goto yy87; -yy803: +yy822: yych = *++cursor_; - if (yych == 'c') goto yy898; + if (yych == 'c') goto yy919; goto yy87; -yy804: +yy823: ++cursor_; if ((yych = *cursor_) <= '/') { if (yych <= '"') { @@ -4615,316 +4702,324 @@ yy804: } } else { if (yych <= ';') { - if (yych <= '9') goto yy806; + if (yych <= '9') goto yy825; if (yych <= ':') goto yy86; } else { - if (yych == 'x') goto yy899; + if (yych == 'x') goto yy920; if (yych <= '~') goto yy86; } } -yy805: +yy824: #line 302 "src/wast-lexer.cc" { TEXT_AT(7); RETURN(OFFSET_EQ_NAT); } -#line 4629 "src/prebuilt/wast-lexer-gen.cc" -yy806: +#line 4716 "src/prebuilt/wast-lexer-gen.cc" +yy825: ++cursor_; if (limit_ <= cursor_) FILL(1); yych = *cursor_; if (yych <= ')') { if (yych <= '!') { - if (yych <= ' ') goto yy805; + if (yych <= ' ') goto yy824; goto yy86; } else { - if (yych <= '"') goto yy805; + if (yych <= '"') goto yy824; if (yych <= '\'') goto yy86; - goto yy805; + goto yy824; } } else { if (yych <= ':') { if (yych <= '/') goto yy86; - if (yych <= '9') goto yy806; + if (yych <= '9') goto yy825; goto yy86; } else { - if (yych <= ';') goto yy805; + if (yych <= ';') goto yy824; if (yych <= '~') goto yy86; - goto yy805; + goto yy824; } } -yy808: +yy827: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 450 "src/wast-lexer.cc" { RETURN(REGISTER); } -#line 4661 "src/prebuilt/wast-lexer-gen.cc" -yy810: +#line 4748 "src/prebuilt/wast-lexer-gen.cc" +yy829: yych = *++cursor_; - if (yych == 'a') goto yy900; + if (yych == 'a') goto yy921; goto yy87; -yy811: +yy830: yych = *++cursor_; - if (yych == 'l') goto yy901; + if (yych == 'l') goto yy922; goto yy87; -yy812: +yy831: yych = *++cursor_; - if (yych == 'l') goto yy903; + if (yych == 'l') goto yy924; goto yy87; -yy813: +yy832: yych = *++cursor_; - if (yych == 'b') goto yy905; + if (yych == 'b') goto yy926; goto yy87; -yy814: +yy833: ++cursor_; if (limit_ <= cursor_) FILL(1); yych = *cursor_; if (yych <= '9') { if (yych <= '"') { if (yych == '!') goto yy86; - goto yy558; + goto yy573; } else { if (yych <= '\'') goto yy86; - if (yych <= ')') goto yy558; + if (yych <= ')') goto yy573; if (yych <= '/') goto yy86; - goto yy814; + goto yy833; } } else { if (yych <= 'F') { - if (yych == ';') goto yy558; + if (yych == ';') goto yy573; if (yych <= '@') goto yy86; - goto yy814; + goto yy833; } else { if (yych <= '`') goto yy86; - if (yych <= 'f') goto yy814; + if (yych <= 'f') goto yy833; if (yych <= '~') goto yy86; - goto yy558; + goto yy573; } } -yy816: +yy835: yych = *++cursor_; - if (yych == 'h') goto yy906; + if (yych == 'h') goto yy927; goto yy87; -yy817: +yy836: yych = *++cursor_; - if (yych == 'v') goto yy907; + if (yych == 'v') goto yy928; goto yy87; -yy818: +yy837: yych = *++cursor_; - if (yych == 'l') goto yy908; + if (yych == 'l') goto yy929; goto yy87; -yy819: +yy838: yych = *++cursor_; - if (yych == 't') goto yy909; + if (yych == 't') goto yy930; goto yy87; -yy820: +yy839: yych = *++cursor_; - if (yych == 'a') goto yy910; + if (yych == 'a') goto yy931; goto yy87; -yy821: +yy840: yych = *++cursor_; - if (yych == 'l') goto yy911; + if (yych == 'l') goto yy932; goto yy87; -yy822: +yy841: yych = *++cursor_; - if (yych == 'r') goto yy912; + if (yych == 'r') goto yy933; goto yy87; -yy823: +yy842: + ++cursor_; + if (yybm[0+(yych = *cursor_)] & 8) { + goto yy86; + } +#line 465 "src/wast-lexer.cc" + { RETURN(CATCH_ALL); } +#line 4826 "src/prebuilt/wast-lexer-gen.cc" +yy844: yych = *++cursor_; - if (yych == 'e') goto yy913; + if (yych == 'e') goto yy934; goto yy87; -yy824: +yy845: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 306 "src/wast-lexer.cc" { TYPE(F32); RETURN(CONST); } -#line 4743 "src/prebuilt/wast-lexer-gen.cc" -yy826: +#line 4838 "src/prebuilt/wast-lexer-gen.cc" +yy847: yych = *++cursor_; - if (yych == 'r') goto yy914; + if (yych == 'r') goto yy935; goto yy87; -yy827: +yy848: yych = *++cursor_; - if (yych == 'i') goto yy915; + if (yych == 'i') goto yy936; goto yy87; -yy828: +yy849: yych = *++cursor_; - if (yych == 'e') goto yy916; + if (yych == 'e') goto yy937; goto yy87; -yy829: +yy850: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 324 "src/wast-lexer.cc" { OPCODE(F32Floor); RETURN(UNARY); } -#line 4763 "src/prebuilt/wast-lexer-gen.cc" -yy831: +#line 4858 "src/prebuilt/wast-lexer-gen.cc" +yy852: yych = *++cursor_; - if (yych == 's') goto yy917; + if (yych == 's') goto yy938; goto yy87; -yy832: +yy853: yych = *++cursor_; - if (yych == 'e') goto yy918; + if (yych == 'e') goto yy939; goto yy87; -yy833: +yy854: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 285 "src/wast-lexer.cc" { OPCODE(F32Store); RETURN(STORE); } -#line 4779 "src/prebuilt/wast-lexer-gen.cc" -yy835: +#line 4874 "src/prebuilt/wast-lexer-gen.cc" +yy856: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 326 "src/wast-lexer.cc" { OPCODE(F32Trunc); RETURN(UNARY); } -#line 4787 "src/prebuilt/wast-lexer-gen.cc" -yy837: +#line 4882 "src/prebuilt/wast-lexer-gen.cc" +yy858: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 307 "src/wast-lexer.cc" { TYPE(F64); RETURN(CONST); } -#line 4795 "src/prebuilt/wast-lexer-gen.cc" -yy839: +#line 4890 "src/prebuilt/wast-lexer-gen.cc" +yy860: yych = *++cursor_; - if (yych == 'r') goto yy919; + if (yych == 'r') goto yy940; goto yy87; -yy840: +yy861: yych = *++cursor_; - if (yych == 'i') goto yy920; + if (yych == 'i') goto yy941; goto yy87; -yy841: +yy862: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 325 "src/wast-lexer.cc" { OPCODE(F64Floor); RETURN(UNARY); } -#line 4811 "src/prebuilt/wast-lexer-gen.cc" -yy843: +#line 4906 "src/prebuilt/wast-lexer-gen.cc" +yy864: yych = *++cursor_; - if (yych == 's') goto yy921; + if (yych == 's') goto yy942; goto yy87; -yy844: +yy865: yych = *++cursor_; - if (yych == 't') goto yy922; + if (yych == 't') goto yy943; goto yy87; -yy845: +yy866: yych = *++cursor_; - if (yych == 'e') goto yy923; + if (yych == 'e') goto yy944; goto yy87; -yy846: +yy867: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 286 "src/wast-lexer.cc" { OPCODE(F64Store); RETURN(STORE); } -#line 4831 "src/prebuilt/wast-lexer-gen.cc" -yy848: +#line 4926 "src/prebuilt/wast-lexer-gen.cc" +yy869: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 327 "src/wast-lexer.cc" { OPCODE(F64Trunc); RETURN(UNARY); } -#line 4839 "src/prebuilt/wast-lexer-gen.cc" -yy850: +#line 4934 "src/prebuilt/wast-lexer-gen.cc" +yy871: yych = *++cursor_; - if (yych == 'l') goto yy924; + if (yych == 'l') goto yy945; goto yy87; -yy851: +yy872: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 274 "src/wast-lexer.cc" { RETURN(GET_LOCAL); } -#line 4851 "src/prebuilt/wast-lexer-gen.cc" -yy853: +#line 4946 "src/prebuilt/wast-lexer-gen.cc" +yy874: yych = *++cursor_; - if (yych == 'r') goto yy926; + if (yych == 'r') goto yy947; goto yy87; -yy854: +yy875: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 304 "src/wast-lexer.cc" { TYPE(I32); RETURN(CONST); } -#line 4863 "src/prebuilt/wast-lexer-gen.cc" -yy856: +#line 4958 "src/prebuilt/wast-lexer-gen.cc" +yy877: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 336 "src/wast-lexer.cc" { OPCODE(I32DivS); RETURN(BINARY); } -#line 4871 "src/prebuilt/wast-lexer-gen.cc" -yy858: +#line 4966 "src/prebuilt/wast-lexer-gen.cc" +yy879: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 338 "src/wast-lexer.cc" { OPCODE(I32DivU); RETURN(BINARY); } -#line 4879 "src/prebuilt/wast-lexer-gen.cc" -yy860: +#line 4974 "src/prebuilt/wast-lexer-gen.cc" +yy881: yych = *++cursor_; - if (yych == '6') goto yy927; + if (yych == '6') goto yy948; goto yy87; -yy861: +yy882: yych = *++cursor_; - if (yych == '_') goto yy928; + if (yych == '_') goto yy949; goto yy87; -yy862: +yy883: yych = *++cursor_; - if (yych == 't') goto yy929; + if (yych == 't') goto yy950; goto yy87; -yy863: +yy884: yych = *++cursor_; - if (yych == 'e') goto yy931; + if (yych == 'e') goto yy952; goto yy87; -yy864: +yy885: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 340 "src/wast-lexer.cc" { OPCODE(I32RemS); RETURN(BINARY); } -#line 4903 "src/prebuilt/wast-lexer-gen.cc" -yy866: +#line 4998 "src/prebuilt/wast-lexer-gen.cc" +yy887: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 342 "src/wast-lexer.cc" { OPCODE(I32RemU); RETURN(BINARY); } -#line 4911 "src/prebuilt/wast-lexer-gen.cc" -yy868: +#line 5006 "src/prebuilt/wast-lexer-gen.cc" +yy889: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 352 "src/wast-lexer.cc" { OPCODE(I32ShrS); RETURN(BINARY); } -#line 4919 "src/prebuilt/wast-lexer-gen.cc" -yy870: +#line 5014 "src/prebuilt/wast-lexer-gen.cc" +yy891: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 354 "src/wast-lexer.cc" { OPCODE(I32ShrU); RETURN(BINARY); } -#line 4927 "src/prebuilt/wast-lexer-gen.cc" -yy872: +#line 5022 "src/prebuilt/wast-lexer-gen.cc" +yy893: ++cursor_; if ((yych = *cursor_) <= '0') { if (yych <= '"') { @@ -4935,1434 +5030,1434 @@ yy872: } } else { if (yych <= '8') { - if (yych <= '1') goto yy932; + if (yych <= '1') goto yy953; if (yych <= '7') goto yy86; - goto yy933; + goto yy954; } else { - if (yych == ';') goto yy873; + if (yych == ';') goto yy894; if (yych <= '~') goto yy86; } } -yy873: +yy894: #line 283 "src/wast-lexer.cc" { OPCODE(I32Store); RETURN(STORE); } -#line 4950 "src/prebuilt/wast-lexer-gen.cc" -yy874: +#line 5045 "src/prebuilt/wast-lexer-gen.cc" +yy895: yych = *++cursor_; - if (yych == '_') goto yy935; + if (yych == '_') goto yy956; goto yy87; -yy875: +yy896: yych = *++cursor_; - if (yych == 'i') goto yy936; + if (yych == 'i') goto yy957; goto yy87; -yy876: +yy897: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 305 "src/wast-lexer.cc" { TYPE(I64); RETURN(CONST); } -#line 4966 "src/prebuilt/wast-lexer-gen.cc" -yy878: +#line 5061 "src/prebuilt/wast-lexer-gen.cc" +yy899: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 337 "src/wast-lexer.cc" { OPCODE(I64DivS); RETURN(BINARY); } -#line 4974 "src/prebuilt/wast-lexer-gen.cc" -yy880: +#line 5069 "src/prebuilt/wast-lexer-gen.cc" +yy901: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 339 "src/wast-lexer.cc" { OPCODE(I64DivU); RETURN(BINARY); } -#line 4982 "src/prebuilt/wast-lexer-gen.cc" -yy882: +#line 5077 "src/prebuilt/wast-lexer-gen.cc" +yy903: yych = *++cursor_; - if (yych == 'd') goto yy937; + if (yych == 'd') goto yy958; goto yy87; -yy883: +yy904: yych = *++cursor_; - if (yych == '6') goto yy938; + if (yych == '6') goto yy959; goto yy87; -yy884: +yy905: yych = *++cursor_; - if (yych == '2') goto yy939; + if (yych == '2') goto yy960; goto yy87; -yy885: +yy906: yych = *++cursor_; - if (yych == '_') goto yy940; + if (yych == '_') goto yy961; goto yy87; -yy886: +yy907: yych = *++cursor_; - if (yych == 't') goto yy941; + if (yych == 't') goto yy962; goto yy87; -yy887: +yy908: yych = *++cursor_; - if (yych == 'e') goto yy943; + if (yych == 'e') goto yy964; goto yy87; -yy888: +yy909: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 341 "src/wast-lexer.cc" { OPCODE(I64RemS); RETURN(BINARY); } -#line 5014 "src/prebuilt/wast-lexer-gen.cc" -yy890: +#line 5109 "src/prebuilt/wast-lexer-gen.cc" +yy911: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 343 "src/wast-lexer.cc" { OPCODE(I64RemU); RETURN(BINARY); } -#line 5022 "src/prebuilt/wast-lexer-gen.cc" -yy892: +#line 5117 "src/prebuilt/wast-lexer-gen.cc" +yy913: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 353 "src/wast-lexer.cc" { OPCODE(I64ShrS); RETURN(BINARY); } -#line 5030 "src/prebuilt/wast-lexer-gen.cc" -yy894: +#line 5125 "src/prebuilt/wast-lexer-gen.cc" +yy915: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 355 "src/wast-lexer.cc" { OPCODE(I64ShrU); RETURN(BINARY); } -#line 5038 "src/prebuilt/wast-lexer-gen.cc" -yy896: +#line 5133 "src/prebuilt/wast-lexer-gen.cc" +yy917: ++cursor_; if ((yych = *cursor_) <= '1') { if (yych <= '"') { if (yych == '!') goto yy86; } else { if (yych <= '\'') goto yy86; - if (yych <= ')') goto yy897; + if (yych <= ')') goto yy918; if (yych <= '0') goto yy86; - goto yy944; + goto yy965; } } else { if (yych <= '8') { - if (yych == '3') goto yy945; + if (yych == '3') goto yy966; if (yych <= '7') goto yy86; - goto yy946; + goto yy967; } else { - if (yych == ';') goto yy897; + if (yych == ';') goto yy918; if (yych <= '~') goto yy86; } } -yy897: +yy918: #line 284 "src/wast-lexer.cc" { OPCODE(I64Store); RETURN(STORE); } -#line 5063 "src/prebuilt/wast-lexer-gen.cc" -yy898: +#line 5158 "src/prebuilt/wast-lexer-gen.cc" +yy919: yych = *++cursor_; - if (yych == '_') goto yy948; + if (yych == '_') goto yy969; goto yy87; -yy899: +yy920: yych = *++cursor_; if (yych <= '@') { if (yych <= '/') goto yy87; - if (yych <= '9') goto yy949; + if (yych <= '9') goto yy970; goto yy87; } else { - if (yych <= 'F') goto yy949; + if (yych <= 'F') goto yy970; if (yych <= '`') goto yy87; - if (yych <= 'f') goto yy949; + if (yych <= 'f') goto yy970; goto yy87; } -yy900: +yy921: yych = *++cursor_; - if (yych == 'l') goto yy951; + if (yych == 'l') goto yy972; goto yy87; -yy901: +yy922: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 275 "src/wast-lexer.cc" { RETURN(SET_LOCAL); } -#line 5091 "src/prebuilt/wast-lexer-gen.cc" -yy903: +#line 5186 "src/prebuilt/wast-lexer-gen.cc" +yy924: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 276 "src/wast-lexer.cc" { RETURN(TEE_LOCAL); } -#line 5099 "src/prebuilt/wast-lexer-gen.cc" -yy905: +#line 5194 "src/prebuilt/wast-lexer-gen.cc" +yy926: yych = *++cursor_; - if (yych == 'l') goto yy953; + if (yych == 'l') goto yy974; goto yy87; -yy906: +yy927: yych = *++cursor_; - if (yych == 'a') goto yy954; + if (yych == 'a') goto yy975; goto yy87; -yy907: +yy928: yych = *++cursor_; - if (yych == 'a') goto yy955; + if (yych == 'a') goto yy976; goto yy87; -yy908: +yy929: yych = *++cursor_; - if (yych == 'f') goto yy956; + if (yych == 'f') goto yy977; goto yy87; -yy909: +yy930: yych = *++cursor_; - if (yych == 'u') goto yy957; + if (yych == 'u') goto yy978; goto yy87; -yy910: +yy931: yych = *++cursor_; - if (yych == 'p') goto yy958; + if (yych == 'p') goto yy979; goto yy87; -yy911: +yy932: yych = *++cursor_; - if (yych == 'i') goto yy960; + if (yych == 'i') goto yy981; goto yy87; -yy912: +yy933: yych = *++cursor_; - if (yych == 'e') goto yy961; + if (yych == 'e') goto yy982; goto yy87; -yy913: +yy934: yych = *++cursor_; - if (yych == 'm') goto yy962; + if (yych == 'm') goto yy983; goto yy87; -yy914: +yy935: yych = *++cursor_; - if (yych == 't') goto yy963; + if (yych == 't') goto yy984; goto yy87; -yy915: +yy936: yych = *++cursor_; - if (yych == 'g') goto yy964; + if (yych == 'g') goto yy985; goto yy87; -yy916: +yy937: yych = *++cursor_; - if (yych == '/') goto yy965; + if (yych == '/') goto yy986; goto yy87; -yy917: +yy938: yych = *++cursor_; - if (yych == 't') goto yy966; + if (yych == 't') goto yy987; goto yy87; -yy918: +yy939: yych = *++cursor_; - if (yych == 'r') goto yy968; + if (yych == 'r') goto yy989; goto yy87; -yy919: +yy940: yych = *++cursor_; - if (yych == 't') goto yy969; + if (yych == 't') goto yy990; goto yy87; -yy920: +yy941: yych = *++cursor_; - if (yych == 'g') goto yy970; + if (yych == 'g') goto yy991; goto yy87; -yy921: +yy942: yych = *++cursor_; - if (yych == 't') goto yy971; + if (yych == 't') goto yy992; goto yy87; -yy922: +yy943: yych = *++cursor_; - if (yych == 'e') goto yy973; + if (yych == 'e') goto yy994; goto yy87; -yy923: +yy944: yych = *++cursor_; - if (yych == 'r') goto yy974; + if (yych == 'r') goto yy995; goto yy87; -yy924: +yy945: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 277 "src/wast-lexer.cc" { RETURN(GET_GLOBAL); } -#line 5183 "src/prebuilt/wast-lexer-gen.cc" -yy926: +#line 5278 "src/prebuilt/wast-lexer-gen.cc" +yy947: yych = *++cursor_; - if (yych == 'y') goto yy975; + if (yych == 'y') goto yy996; goto yy87; -yy927: +yy948: yych = *++cursor_; - if (yych == '_') goto yy977; + if (yych == '_') goto yy998; goto yy87; -yy928: +yy949: yych = *++cursor_; - if (yych == 's') goto yy978; - if (yych == 'u') goto yy980; + if (yych == 's') goto yy999; + if (yych == 'u') goto yy1001; goto yy87; -yy929: +yy950: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 314 "src/wast-lexer.cc" { OPCODE(I32Popcnt); RETURN(UNARY); } -#line 5204 "src/prebuilt/wast-lexer-gen.cc" -yy931: +#line 5299 "src/prebuilt/wast-lexer-gen.cc" +yy952: yych = *++cursor_; - if (yych == 'r') goto yy982; + if (yych == 'r') goto yy1003; goto yy87; -yy932: +yy953: yych = *++cursor_; - if (yych == '6') goto yy983; + if (yych == '6') goto yy1004; goto yy87; -yy933: +yy954: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 297 "src/wast-lexer.cc" { OPCODE(I32Store8); RETURN(STORE); } -#line 5220 "src/prebuilt/wast-lexer-gen.cc" -yy935: +#line 5315 "src/prebuilt/wast-lexer-gen.cc" +yy956: yych = *++cursor_; - if (yych == 's') goto yy985; - if (yych == 'u') goto yy986; + if (yych == 's') goto yy1006; + if (yych == 'u') goto yy1007; goto yy87; -yy936: +yy957: yych = *++cursor_; - if (yych == '6') goto yy987; + if (yych == '6') goto yy1008; goto yy87; -yy937: +yy958: yych = *++cursor_; - if (yych == '_') goto yy988; + if (yych == '_') goto yy1009; goto yy87; -yy938: +yy959: yych = *++cursor_; - if (yych == '_') goto yy989; + if (yych == '_') goto yy1010; goto yy87; -yy939: +yy960: yych = *++cursor_; - if (yych == '_') goto yy990; + if (yych == '_') goto yy1011; goto yy87; -yy940: +yy961: yych = *++cursor_; - if (yych == 's') goto yy991; - if (yych == 'u') goto yy993; + if (yych == 's') goto yy1012; + if (yych == 'u') goto yy1014; goto yy87; -yy941: +yy962: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 315 "src/wast-lexer.cc" { OPCODE(I64Popcnt); RETURN(UNARY); } -#line 5254 "src/prebuilt/wast-lexer-gen.cc" -yy943: +#line 5349 "src/prebuilt/wast-lexer-gen.cc" +yy964: yych = *++cursor_; - if (yych == 'r') goto yy995; + if (yych == 'r') goto yy1016; goto yy87; -yy944: +yy965: yych = *++cursor_; - if (yych == '6') goto yy996; + if (yych == '6') goto yy1017; goto yy87; -yy945: +yy966: yych = *++cursor_; - if (yych == '2') goto yy998; + if (yych == '2') goto yy1019; goto yy87; -yy946: +yy967: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 298 "src/wast-lexer.cc" { OPCODE(I64Store8); RETURN(STORE); } -#line 5274 "src/prebuilt/wast-lexer-gen.cc" -yy948: +#line 5369 "src/prebuilt/wast-lexer-gen.cc" +yy969: yych = *++cursor_; - if (yych == 's') goto yy1000; - if (yych == 'u') goto yy1001; + if (yych == 's') goto yy1021; + if (yych == 'u') goto yy1022; goto yy87; -yy949: +yy970: ++cursor_; if (limit_ <= cursor_) FILL(1); yych = *cursor_; if (yych <= '9') { if (yych <= '"') { if (yych == '!') goto yy86; - goto yy805; + goto yy824; } else { if (yych <= '\'') goto yy86; - if (yych <= ')') goto yy805; + if (yych <= ')') goto yy824; if (yych <= '/') goto yy86; - goto yy949; + goto yy970; } } else { if (yych <= 'F') { - if (yych == ';') goto yy805; + if (yych == ';') goto yy824; if (yych <= '@') goto yy86; - goto yy949; + goto yy970; } else { if (yych <= '`') goto yy86; - if (yych <= 'f') goto yy949; + if (yych <= 'f') goto yy970; if (yych <= '~') goto yy86; - goto yy805; + goto yy824; } } -yy951: +yy972: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 278 "src/wast-lexer.cc" { RETURN(SET_GLOBAL); } -#line 5313 "src/prebuilt/wast-lexer-gen.cc" -yy953: +#line 5408 "src/prebuilt/wast-lexer-gen.cc" +yy974: yych = *++cursor_; - if (yych == 'e') goto yy1002; + if (yych == 'e') goto yy1023; goto yy87; -yy954: +yy975: yych = *++cursor_; - if (yych == 'u') goto yy1004; + if (yych == 'u') goto yy1025; goto yy87; -yy955: +yy976: yych = *++cursor_; - if (yych == 'l') goto yy1005; + if (yych == 'l') goto yy1026; goto yy87; -yy956: +yy977: yych = *++cursor_; - if (yych == 'o') goto yy1006; + if (yych == 'o') goto yy1027; goto yy87; -yy957: +yy978: yych = *++cursor_; - if (yych == 'r') goto yy1007; + if (yych == 'r') goto yy1028; goto yy87; -yy958: +yy979: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 461 "src/wast-lexer.cc" { RETURN(ASSERT_TRAP); } -#line 5341 "src/prebuilt/wast-lexer-gen.cc" -yy960: +#line 5436 "src/prebuilt/wast-lexer-gen.cc" +yy981: yych = *++cursor_; - if (yych == 'n') goto yy1008; + if (yych == 'n') goto yy1029; goto yy87; -yy961: +yy982: yych = *++cursor_; - if (yych == 'c') goto yy1009; + if (yych == 'c') goto yy1030; goto yy87; -yy962: +yy983: yych = *++cursor_; - if (yych == 'o') goto yy1010; + if (yych == 'o') goto yy1031; goto yy87; -yy963: +yy984: yych = *++cursor_; - if (yych == '_') goto yy1011; + if (yych == '_') goto yy1032; goto yy87; -yy964: +yy985: yych = *++cursor_; - if (yych == 'n') goto yy1012; + if (yych == 'n') goto yy1033; goto yy87; -yy965: +yy986: yych = *++cursor_; - if (yych == 'f') goto yy1014; + if (yych == 'f') goto yy1035; goto yy87; -yy966: +yy987: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 328 "src/wast-lexer.cc" { OPCODE(F32Nearest); RETURN(UNARY); } -#line 5373 "src/prebuilt/wast-lexer-gen.cc" -yy968: +#line 5468 "src/prebuilt/wast-lexer-gen.cc" +yy989: yych = *++cursor_; - if (yych == 'p') goto yy1015; + if (yych == 'p') goto yy1036; goto yy87; -yy969: +yy990: yych = *++cursor_; - if (yych == '_') goto yy1016; + if (yych == '_') goto yy1037; goto yy87; -yy970: +yy991: yych = *++cursor_; - if (yych == 'n') goto yy1017; + if (yych == 'n') goto yy1038; goto yy87; -yy971: +yy992: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 329 "src/wast-lexer.cc" { OPCODE(F64Nearest); RETURN(UNARY); } -#line 5393 "src/prebuilt/wast-lexer-gen.cc" -yy973: +#line 5488 "src/prebuilt/wast-lexer-gen.cc" +yy994: yych = *++cursor_; - if (yych == '/') goto yy1019; + if (yych == '/') goto yy1040; goto yy87; -yy974: +yy995: yych = *++cursor_; - if (yych == 'p') goto yy1020; + if (yych == 'p') goto yy1041; goto yy87; -yy975: +yy996: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 434 "src/wast-lexer.cc" { RETURN(GROW_MEMORY); } -#line 5409 "src/prebuilt/wast-lexer-gen.cc" -yy977: +#line 5504 "src/prebuilt/wast-lexer-gen.cc" +yy998: yych = *++cursor_; - if (yych == 's') goto yy1021; - if (yych == 'u') goto yy1023; + if (yych == 's') goto yy1042; + if (yych == 'u') goto yy1044; goto yy87; -yy978: +yy999: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 287 "src/wast-lexer.cc" { OPCODE(I32Load8S); RETURN(LOAD); } -#line 5422 "src/prebuilt/wast-lexer-gen.cc" -yy980: +#line 5517 "src/prebuilt/wast-lexer-gen.cc" +yy1001: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 289 "src/wast-lexer.cc" { OPCODE(I32Load8U); RETURN(LOAD); } -#line 5430 "src/prebuilt/wast-lexer-gen.cc" -yy982: +#line 5525 "src/prebuilt/wast-lexer-gen.cc" +yy1003: yych = *++cursor_; - if (yych == 'p') goto yy1025; + if (yych == 'p') goto yy1046; goto yy87; -yy983: +yy1004: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 299 "src/wast-lexer.cc" { OPCODE(I32Store16); RETURN(STORE); } -#line 5442 "src/prebuilt/wast-lexer-gen.cc" -yy985: +#line 5537 "src/prebuilt/wast-lexer-gen.cc" +yy1006: yych = *++cursor_; - if (yych == '/') goto yy1026; + if (yych == '/') goto yy1047; goto yy87; -yy986: +yy1007: yych = *++cursor_; - if (yych == '/') goto yy1027; + if (yych == '/') goto yy1048; goto yy87; -yy987: +yy1008: yych = *++cursor_; - if (yych == '4') goto yy1028; + if (yych == '4') goto yy1049; goto yy87; -yy988: +yy1009: yych = *++cursor_; - if (yych == 's') goto yy1030; - if (yych == 'u') goto yy1031; + if (yych == 's') goto yy1051; + if (yych == 'u') goto yy1052; goto yy87; -yy989: +yy1010: yych = *++cursor_; - if (yych == 's') goto yy1032; - if (yych == 'u') goto yy1034; + if (yych == 's') goto yy1053; + if (yych == 'u') goto yy1055; goto yy87; -yy990: +yy1011: yych = *++cursor_; - if (yych == 's') goto yy1036; - if (yych == 'u') goto yy1038; + if (yych == 's') goto yy1057; + if (yych == 'u') goto yy1059; goto yy87; -yy991: +yy1012: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 288 "src/wast-lexer.cc" { OPCODE(I64Load8S); RETURN(LOAD); } -#line 5477 "src/prebuilt/wast-lexer-gen.cc" -yy993: +#line 5572 "src/prebuilt/wast-lexer-gen.cc" +yy1014: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 290 "src/wast-lexer.cc" { OPCODE(I64Load8U); RETURN(LOAD); } -#line 5485 "src/prebuilt/wast-lexer-gen.cc" -yy995: +#line 5580 "src/prebuilt/wast-lexer-gen.cc" +yy1016: yych = *++cursor_; - if (yych == 'p') goto yy1040; + if (yych == 'p') goto yy1061; goto yy87; -yy996: +yy1017: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 300 "src/wast-lexer.cc" { OPCODE(I64Store16); RETURN(STORE); } -#line 5497 "src/prebuilt/wast-lexer-gen.cc" -yy998: +#line 5592 "src/prebuilt/wast-lexer-gen.cc" +yy1019: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 301 "src/wast-lexer.cc" { OPCODE(I64Store32); RETURN(STORE); } -#line 5505 "src/prebuilt/wast-lexer-gen.cc" -yy1000: +#line 5600 "src/prebuilt/wast-lexer-gen.cc" +yy1021: yych = *++cursor_; - if (yych == '/') goto yy1041; + if (yych == '/') goto yy1062; goto yy87; -yy1001: +yy1022: yych = *++cursor_; - if (yych == '/') goto yy1042; + if (yych == '/') goto yy1063; goto yy87; -yy1002: +yy1023: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 432 "src/wast-lexer.cc" { RETURN(UNREACHABLE); } -#line 5521 "src/prebuilt/wast-lexer-gen.cc" -yy1004: +#line 5616 "src/prebuilt/wast-lexer-gen.cc" +yy1025: yych = *++cursor_; - if (yych == 's') goto yy1043; + if (yych == 's') goto yy1064; goto yy87; -yy1005: +yy1026: yych = *++cursor_; - if (yych == 'i') goto yy1044; + if (yych == 'i') goto yy1065; goto yy87; -yy1006: +yy1027: yych = *++cursor_; - if (yych == 'r') goto yy1045; + if (yych == 'r') goto yy1066; goto yy87; -yy1007: +yy1028: yych = *++cursor_; - if (yych == 'n') goto yy1046; + if (yych == 'n') goto yy1067; goto yy87; -yy1008: +yy1029: yych = *++cursor_; - if (yych == 'k') goto yy1048; + if (yych == 'k') goto yy1069; goto yy87; -yy1009: +yy1030: yych = *++cursor_; - if (yych == 't') goto yy1049; + if (yych == 't') goto yy1070; goto yy87; -yy1010: +yy1031: yych = *++cursor_; - if (yych == 'r') goto yy1051; + if (yych == 'r') goto yy1072; goto yy87; -yy1011: +yy1032: yych = *++cursor_; - if (yych == 's') goto yy1052; - if (yych == 'u') goto yy1053; + if (yych == 's') goto yy1073; + if (yych == 'u') goto yy1074; goto yy87; -yy1012: +yy1033: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 372 "src/wast-lexer.cc" { OPCODE(F32Copysign); RETURN(BINARY); } -#line 5562 "src/prebuilt/wast-lexer-gen.cc" -yy1014: +#line 5657 "src/prebuilt/wast-lexer-gen.cc" +yy1035: yych = *++cursor_; - if (yych == '6') goto yy1054; + if (yych == '6') goto yy1075; goto yy87; -yy1015: +yy1036: yych = *++cursor_; - if (yych == 'r') goto yy1055; + if (yych == 'r') goto yy1076; goto yy87; -yy1016: +yy1037: yych = *++cursor_; - if (yych == 's') goto yy1056; - if (yych == 'u') goto yy1057; + if (yych == 's') goto yy1077; + if (yych == 'u') goto yy1078; goto yy87; -yy1017: +yy1038: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 373 "src/wast-lexer.cc" { OPCODE(F64Copysign); RETURN(BINARY); } -#line 5583 "src/prebuilt/wast-lexer-gen.cc" -yy1019: +#line 5678 "src/prebuilt/wast-lexer-gen.cc" +yy1040: yych = *++cursor_; - if (yych == 'f') goto yy1058; + if (yych == 'f') goto yy1079; goto yy87; -yy1020: +yy1041: yych = *++cursor_; - if (yych == 'r') goto yy1059; + if (yych == 'r') goto yy1080; goto yy87; -yy1021: +yy1042: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 291 "src/wast-lexer.cc" { OPCODE(I32Load16S); RETURN(LOAD); } -#line 5599 "src/prebuilt/wast-lexer-gen.cc" -yy1023: +#line 5694 "src/prebuilt/wast-lexer-gen.cc" +yy1044: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 293 "src/wast-lexer.cc" { OPCODE(I32Load16U); RETURN(LOAD); } -#line 5607 "src/prebuilt/wast-lexer-gen.cc" -yy1025: +#line 5702 "src/prebuilt/wast-lexer-gen.cc" +yy1046: yych = *++cursor_; - if (yych == 'r') goto yy1060; + if (yych == 'r') goto yy1081; goto yy87; -yy1026: +yy1047: yych = *++cursor_; - if (yych == 'f') goto yy1061; + if (yych == 'f') goto yy1082; goto yy87; -yy1027: +yy1048: yych = *++cursor_; - if (yych == 'f') goto yy1062; + if (yych == 'f') goto yy1083; goto yy87; -yy1028: +yy1049: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 408 "src/wast-lexer.cc" { OPCODE(I32WrapI64); RETURN(CONVERT); } -#line 5627 "src/prebuilt/wast-lexer-gen.cc" -yy1030: +#line 5722 "src/prebuilt/wast-lexer-gen.cc" +yy1051: yych = *++cursor_; - if (yych == '/') goto yy1063; + if (yych == '/') goto yy1084; goto yy87; -yy1031: +yy1052: yych = *++cursor_; - if (yych == '/') goto yy1064; + if (yych == '/') goto yy1085; goto yy87; -yy1032: +yy1053: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 292 "src/wast-lexer.cc" { OPCODE(I64Load16S); RETURN(LOAD); } -#line 5643 "src/prebuilt/wast-lexer-gen.cc" -yy1034: +#line 5738 "src/prebuilt/wast-lexer-gen.cc" +yy1055: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 294 "src/wast-lexer.cc" { OPCODE(I64Load16U); RETURN(LOAD); } -#line 5651 "src/prebuilt/wast-lexer-gen.cc" -yy1036: +#line 5746 "src/prebuilt/wast-lexer-gen.cc" +yy1057: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 295 "src/wast-lexer.cc" { OPCODE(I64Load32S); RETURN(LOAD); } -#line 5659 "src/prebuilt/wast-lexer-gen.cc" -yy1038: +#line 5754 "src/prebuilt/wast-lexer-gen.cc" +yy1059: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 296 "src/wast-lexer.cc" { OPCODE(I64Load32U); RETURN(LOAD); } -#line 5667 "src/prebuilt/wast-lexer-gen.cc" -yy1040: +#line 5762 "src/prebuilt/wast-lexer-gen.cc" +yy1061: yych = *++cursor_; - if (yych == 'r') goto yy1065; + if (yych == 'r') goto yy1086; goto yy87; -yy1041: +yy1062: yych = *++cursor_; - if (yych == 'f') goto yy1066; + if (yych == 'f') goto yy1087; goto yy87; -yy1042: +yy1063: yych = *++cursor_; - if (yych == 'f') goto yy1067; + if (yych == 'f') goto yy1088; goto yy87; -yy1043: +yy1064: yych = *++cursor_; - if (yych == 't') goto yy1068; + if (yych == 't') goto yy1089; goto yy87; -yy1044: +yy1065: yych = *++cursor_; - if (yych == 'd') goto yy1069; + if (yych == 'd') goto yy1090; goto yy87; -yy1045: +yy1066: yych = *++cursor_; - if (yych == 'm') goto yy1071; + if (yych == 'm') goto yy1092; goto yy87; -yy1046: +yy1067: ++cursor_; if ((yych = *cursor_) <= ')') { if (yych <= '!') { if (yych >= '!') goto yy86; } else { - if (yych <= '"') goto yy1047; + if (yych <= '"') goto yy1068; if (yych <= '\'') goto yy86; } } else { if (yych <= '^') { if (yych != ';') goto yy86; } else { - if (yych <= '_') goto yy1072; + if (yych <= '_') goto yy1093; if (yych <= '~') goto yy86; } } -yy1047: +yy1068: #line 456 "src/wast-lexer.cc" { RETURN(ASSERT_RETURN); } -#line 5712 "src/prebuilt/wast-lexer-gen.cc" -yy1048: +#line 5807 "src/prebuilt/wast-lexer-gen.cc" +yy1069: yych = *++cursor_; - if (yych == 'a') goto yy1073; + if (yych == 'a') goto yy1094; goto yy87; -yy1049: +yy1070: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 270 "src/wast-lexer.cc" { RETURN(CALL_INDIRECT); } -#line 5724 "src/prebuilt/wast-lexer-gen.cc" -yy1051: +#line 5819 "src/prebuilt/wast-lexer-gen.cc" +yy1072: yych = *++cursor_; - if (yych == 'y') goto yy1074; + if (yych == 'y') goto yy1095; goto yy87; -yy1052: +yy1073: yych = *++cursor_; - if (yych == '/') goto yy1076; + if (yych == '/') goto yy1097; goto yy87; -yy1053: +yy1074: yych = *++cursor_; - if (yych == '/') goto yy1077; + if (yych == '/') goto yy1098; goto yy87; -yy1054: +yy1075: yych = *++cursor_; - if (yych == '4') goto yy1078; + if (yych == '4') goto yy1099; goto yy87; -yy1055: +yy1076: yych = *++cursor_; - if (yych == 'e') goto yy1080; + if (yych == 'e') goto yy1101; goto yy87; -yy1056: +yy1077: yych = *++cursor_; - if (yych == '/') goto yy1081; + if (yych == '/') goto yy1102; goto yy87; -yy1057: +yy1078: yych = *++cursor_; - if (yych == '/') goto yy1082; + if (yych == '/') goto yy1103; goto yy87; -yy1058: +yy1079: yych = *++cursor_; - if (yych == '3') goto yy1083; + if (yych == '3') goto yy1104; goto yy87; -yy1059: +yy1080: yych = *++cursor_; - if (yych == 'e') goto yy1084; + if (yych == 'e') goto yy1105; goto yy87; -yy1060: +yy1081: yych = *++cursor_; - if (yych == 'e') goto yy1085; + if (yych == 'e') goto yy1106; goto yy87; -yy1061: +yy1082: yych = *++cursor_; - if (yych == '3') goto yy1086; - if (yych == '6') goto yy1087; + if (yych == '3') goto yy1107; + if (yych == '6') goto yy1108; goto yy87; -yy1062: +yy1083: yych = *++cursor_; - if (yych == '3') goto yy1088; - if (yych == '6') goto yy1089; + if (yych == '3') goto yy1109; + if (yych == '6') goto yy1110; goto yy87; -yy1063: +yy1084: yych = *++cursor_; - if (yych == 'i') goto yy1090; + if (yych == 'i') goto yy1111; goto yy87; -yy1064: +yy1085: yych = *++cursor_; - if (yych == 'i') goto yy1091; + if (yych == 'i') goto yy1112; goto yy87; -yy1065: +yy1086: yych = *++cursor_; - if (yych == 'e') goto yy1092; + if (yych == 'e') goto yy1113; goto yy87; -yy1066: +yy1087: yych = *++cursor_; - if (yych == '3') goto yy1093; - if (yych == '6') goto yy1094; + if (yych == '3') goto yy1114; + if (yych == '6') goto yy1115; goto yy87; -yy1067: +yy1088: yych = *++cursor_; - if (yych == '3') goto yy1095; - if (yych == '6') goto yy1096; + if (yych == '3') goto yy1116; + if (yych == '6') goto yy1117; goto yy87; -yy1068: +yy1089: yych = *++cursor_; - if (yych == 'i') goto yy1097; + if (yych == 'i') goto yy1118; goto yy87; -yy1069: +yy1090: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 454 "src/wast-lexer.cc" { RETURN(ASSERT_INVALID); } -#line 5808 "src/prebuilt/wast-lexer-gen.cc" -yy1071: +#line 5903 "src/prebuilt/wast-lexer-gen.cc" +yy1092: yych = *++cursor_; - if (yych == 'e') goto yy1098; + if (yych == 'e') goto yy1119; goto yy87; -yy1072: +yy1093: yych = *++cursor_; - if (yych == 'a') goto yy1099; - if (yych == 'c') goto yy1100; + if (yych == 'a') goto yy1120; + if (yych == 'c') goto yy1121; goto yy87; -yy1073: +yy1094: yych = *++cursor_; - if (yych == 'b') goto yy1101; + if (yych == 'b') goto yy1122; goto yy87; -yy1074: +yy1095: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 433 "src/wast-lexer.cc" { RETURN(CURRENT_MEMORY); } -#line 5829 "src/prebuilt/wast-lexer-gen.cc" -yy1076: +#line 5924 "src/prebuilt/wast-lexer-gen.cc" +yy1097: yych = *++cursor_; - if (yych == 'i') goto yy1102; + if (yych == 'i') goto yy1123; goto yy87; -yy1077: +yy1098: yych = *++cursor_; - if (yych == 'i') goto yy1103; + if (yych == 'i') goto yy1124; goto yy87; -yy1078: +yy1099: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 426 "src/wast-lexer.cc" { OPCODE(F32DemoteF64); RETURN(CONVERT); } -#line 5845 "src/prebuilt/wast-lexer-gen.cc" -yy1080: +#line 5940 "src/prebuilt/wast-lexer-gen.cc" +yy1101: yych = *++cursor_; - if (yych == 't') goto yy1104; + if (yych == 't') goto yy1125; goto yy87; -yy1081: +yy1102: yych = *++cursor_; - if (yych == 'i') goto yy1105; + if (yych == 'i') goto yy1126; goto yy87; -yy1082: +yy1103: yych = *++cursor_; - if (yych == 'i') goto yy1106; + if (yych == 'i') goto yy1127; goto yy87; -yy1083: +yy1104: yych = *++cursor_; - if (yych == '2') goto yy1107; + if (yych == '2') goto yy1128; goto yy87; -yy1084: +yy1105: yych = *++cursor_; - if (yych == 't') goto yy1109; + if (yych == 't') goto yy1130; goto yy87; -yy1085: +yy1106: yych = *++cursor_; - if (yych == 't') goto yy1110; + if (yych == 't') goto yy1131; goto yy87; -yy1086: +yy1107: yych = *++cursor_; - if (yych == '2') goto yy1111; + if (yych == '2') goto yy1132; goto yy87; -yy1087: +yy1108: yych = *++cursor_; - if (yych == '4') goto yy1113; + if (yych == '4') goto yy1134; goto yy87; -yy1088: +yy1109: yych = *++cursor_; - if (yych == '2') goto yy1115; + if (yych == '2') goto yy1136; goto yy87; -yy1089: +yy1110: yych = *++cursor_; - if (yych == '4') goto yy1117; + if (yych == '4') goto yy1138; goto yy87; -yy1090: +yy1111: yych = *++cursor_; - if (yych == '3') goto yy1119; + if (yych == '3') goto yy1140; goto yy87; -yy1091: +yy1112: yych = *++cursor_; - if (yych == '3') goto yy1120; + if (yych == '3') goto yy1141; goto yy87; -yy1092: +yy1113: yych = *++cursor_; - if (yych == 't') goto yy1121; + if (yych == 't') goto yy1142; goto yy87; -yy1093: +yy1114: yych = *++cursor_; - if (yych == '2') goto yy1122; + if (yych == '2') goto yy1143; goto yy87; -yy1094: +yy1115: yych = *++cursor_; - if (yych == '4') goto yy1124; + if (yych == '4') goto yy1145; goto yy87; -yy1095: +yy1116: yych = *++cursor_; - if (yych == '2') goto yy1126; + if (yych == '2') goto yy1147; goto yy87; -yy1096: +yy1117: yych = *++cursor_; - if (yych == '4') goto yy1128; + if (yych == '4') goto yy1149; goto yy87; -yy1097: +yy1118: yych = *++cursor_; - if (yych == 'o') goto yy1130; + if (yych == 'o') goto yy1151; goto yy87; -yy1098: +yy1119: yych = *++cursor_; - if (yych == 'd') goto yy1131; + if (yych == 'd') goto yy1152; goto yy87; -yy1099: +yy1120: yych = *++cursor_; - if (yych == 'r') goto yy1133; + if (yych == 'r') goto yy1154; goto yy87; -yy1100: +yy1121: yych = *++cursor_; - if (yych == 'a') goto yy1134; + if (yych == 'a') goto yy1155; goto yy87; -yy1101: +yy1122: yych = *++cursor_; - if (yych == 'l') goto yy1135; + if (yych == 'l') goto yy1156; goto yy87; -yy1102: +yy1123: yych = *++cursor_; - if (yych == '3') goto yy1136; - if (yych == '6') goto yy1137; + if (yych == '3') goto yy1157; + if (yych == '6') goto yy1158; goto yy87; -yy1103: +yy1124: yych = *++cursor_; - if (yych == '3') goto yy1138; - if (yych == '6') goto yy1139; + if (yych == '3') goto yy1159; + if (yych == '6') goto yy1160; goto yy87; -yy1104: +yy1125: yych = *++cursor_; - if (yych == '/') goto yy1140; + if (yych == '/') goto yy1161; goto yy87; -yy1105: +yy1126: yych = *++cursor_; - if (yych == '3') goto yy1141; - if (yych == '6') goto yy1142; + if (yych == '3') goto yy1162; + if (yych == '6') goto yy1163; goto yy87; -yy1106: +yy1127: yych = *++cursor_; - if (yych == '3') goto yy1143; - if (yych == '6') goto yy1144; + if (yych == '3') goto yy1164; + if (yych == '6') goto yy1165; goto yy87; -yy1107: +yy1128: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 425 "src/wast-lexer.cc" { OPCODE(F64PromoteF32); RETURN(CONVERT); } -#line 5965 "src/prebuilt/wast-lexer-gen.cc" -yy1109: +#line 6060 "src/prebuilt/wast-lexer-gen.cc" +yy1130: yych = *++cursor_; - if (yych == '/') goto yy1145; + if (yych == '/') goto yy1166; goto yy87; -yy1110: +yy1131: yych = *++cursor_; - if (yych == '/') goto yy1146; + if (yych == '/') goto yy1167; goto yy87; -yy1111: +yy1132: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 409 "src/wast-lexer.cc" { OPCODE(I32TruncSF32); RETURN(CONVERT); } -#line 5981 "src/prebuilt/wast-lexer-gen.cc" -yy1113: +#line 6076 "src/prebuilt/wast-lexer-gen.cc" +yy1134: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 411 "src/wast-lexer.cc" { OPCODE(I32TruncSF64); RETURN(CONVERT); } -#line 5989 "src/prebuilt/wast-lexer-gen.cc" -yy1115: +#line 6084 "src/prebuilt/wast-lexer-gen.cc" +yy1136: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 413 "src/wast-lexer.cc" { OPCODE(I32TruncUF32); RETURN(CONVERT); } -#line 5997 "src/prebuilt/wast-lexer-gen.cc" -yy1117: +#line 6092 "src/prebuilt/wast-lexer-gen.cc" +yy1138: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 415 "src/wast-lexer.cc" { OPCODE(I32TruncUF64); RETURN(CONVERT); } -#line 6005 "src/prebuilt/wast-lexer-gen.cc" -yy1119: +#line 6100 "src/prebuilt/wast-lexer-gen.cc" +yy1140: yych = *++cursor_; - if (yych == '2') goto yy1147; + if (yych == '2') goto yy1168; goto yy87; -yy1120: +yy1141: yych = *++cursor_; - if (yych == '2') goto yy1149; + if (yych == '2') goto yy1170; goto yy87; -yy1121: +yy1142: yych = *++cursor_; - if (yych == '/') goto yy1151; + if (yych == '/') goto yy1172; goto yy87; -yy1122: +yy1143: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 410 "src/wast-lexer.cc" { OPCODE(I64TruncSF32); RETURN(CONVERT); } -#line 6025 "src/prebuilt/wast-lexer-gen.cc" -yy1124: +#line 6120 "src/prebuilt/wast-lexer-gen.cc" +yy1145: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 412 "src/wast-lexer.cc" { OPCODE(I64TruncSF64); RETURN(CONVERT); } -#line 6033 "src/prebuilt/wast-lexer-gen.cc" -yy1126: +#line 6128 "src/prebuilt/wast-lexer-gen.cc" +yy1147: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 414 "src/wast-lexer.cc" { OPCODE(I64TruncUF32); RETURN(CONVERT); } -#line 6041 "src/prebuilt/wast-lexer-gen.cc" -yy1128: +#line 6136 "src/prebuilt/wast-lexer-gen.cc" +yy1149: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 416 "src/wast-lexer.cc" { OPCODE(I64TruncUF64); RETURN(CONVERT); } -#line 6049 "src/prebuilt/wast-lexer-gen.cc" -yy1130: +#line 6144 "src/prebuilt/wast-lexer-gen.cc" +yy1151: yych = *++cursor_; - if (yych == 'n') goto yy1152; + if (yych == 'n') goto yy1173; goto yy87; -yy1131: +yy1152: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 453 "src/wast-lexer.cc" { RETURN(ASSERT_MALFORMED); } -#line 6061 "src/prebuilt/wast-lexer-gen.cc" -yy1133: +#line 6156 "src/prebuilt/wast-lexer-gen.cc" +yy1154: yych = *++cursor_; - if (yych == 'i') goto yy1154; + if (yych == 'i') goto yy1175; goto yy87; -yy1134: +yy1155: yych = *++cursor_; - if (yych == 'n') goto yy1155; + if (yych == 'n') goto yy1176; goto yy87; -yy1135: +yy1156: yych = *++cursor_; - if (yych == 'e') goto yy1156; + if (yych == 'e') goto yy1177; goto yy87; -yy1136: +yy1157: yych = *++cursor_; - if (yych == '2') goto yy1158; + if (yych == '2') goto yy1179; goto yy87; -yy1137: +yy1158: yych = *++cursor_; - if (yych == '4') goto yy1160; + if (yych == '4') goto yy1181; goto yy87; -yy1138: +yy1159: yych = *++cursor_; - if (yych == '2') goto yy1162; + if (yych == '2') goto yy1183; goto yy87; -yy1139: +yy1160: yych = *++cursor_; - if (yych == '4') goto yy1164; + if (yych == '4') goto yy1185; goto yy87; -yy1140: +yy1161: yych = *++cursor_; - if (yych == 'i') goto yy1166; + if (yych == 'i') goto yy1187; goto yy87; -yy1141: +yy1162: yych = *++cursor_; - if (yych == '2') goto yy1167; + if (yych == '2') goto yy1188; goto yy87; -yy1142: +yy1163: yych = *++cursor_; - if (yych == '4') goto yy1169; + if (yych == '4') goto yy1190; goto yy87; -yy1143: +yy1164: yych = *++cursor_; - if (yych == '2') goto yy1171; + if (yych == '2') goto yy1192; goto yy87; -yy1144: +yy1165: yych = *++cursor_; - if (yych == '4') goto yy1173; + if (yych == '4') goto yy1194; goto yy87; -yy1145: +yy1166: yych = *++cursor_; - if (yych == 'i') goto yy1175; + if (yych == 'i') goto yy1196; goto yy87; -yy1146: +yy1167: yych = *++cursor_; - if (yych == 'f') goto yy1176; + if (yych == 'f') goto yy1197; goto yy87; -yy1147: +yy1168: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 406 "src/wast-lexer.cc" { OPCODE(I64ExtendSI32); RETURN(CONVERT); } -#line 6125 "src/prebuilt/wast-lexer-gen.cc" -yy1149: +#line 6220 "src/prebuilt/wast-lexer-gen.cc" +yy1170: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 407 "src/wast-lexer.cc" { OPCODE(I64ExtendUI32); RETURN(CONVERT); } -#line 6133 "src/prebuilt/wast-lexer-gen.cc" -yy1151: +#line 6228 "src/prebuilt/wast-lexer-gen.cc" +yy1172: yych = *++cursor_; - if (yych == 'f') goto yy1177; + if (yych == 'f') goto yy1198; goto yy87; -yy1152: +yy1173: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 462 "src/wast-lexer.cc" { RETURN(ASSERT_EXHAUSTION); } -#line 6145 "src/prebuilt/wast-lexer-gen.cc" -yy1154: +#line 6240 "src/prebuilt/wast-lexer-gen.cc" +yy1175: yych = *++cursor_; - if (yych == 't') goto yy1178; + if (yych == 't') goto yy1199; goto yy87; -yy1155: +yy1176: yych = *++cursor_; - if (yych == 'o') goto yy1179; + if (yych == 'o') goto yy1200; goto yy87; -yy1156: +yy1177: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 455 "src/wast-lexer.cc" { RETURN(ASSERT_UNLINKABLE); } -#line 6161 "src/prebuilt/wast-lexer-gen.cc" -yy1158: +#line 6256 "src/prebuilt/wast-lexer-gen.cc" +yy1179: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 417 "src/wast-lexer.cc" { OPCODE(F32ConvertSI32); RETURN(CONVERT); } -#line 6169 "src/prebuilt/wast-lexer-gen.cc" -yy1160: +#line 6264 "src/prebuilt/wast-lexer-gen.cc" +yy1181: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 419 "src/wast-lexer.cc" { OPCODE(F32ConvertSI64); RETURN(CONVERT); } -#line 6177 "src/prebuilt/wast-lexer-gen.cc" -yy1162: +#line 6272 "src/prebuilt/wast-lexer-gen.cc" +yy1183: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 421 "src/wast-lexer.cc" { OPCODE(F32ConvertUI32); RETURN(CONVERT); } -#line 6185 "src/prebuilt/wast-lexer-gen.cc" -yy1164: +#line 6280 "src/prebuilt/wast-lexer-gen.cc" +yy1185: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 423 "src/wast-lexer.cc" { OPCODE(F32ConvertUI64); RETURN(CONVERT); } -#line 6193 "src/prebuilt/wast-lexer-gen.cc" -yy1166: +#line 6288 "src/prebuilt/wast-lexer-gen.cc" +yy1187: yych = *++cursor_; - if (yych == '3') goto yy1180; + if (yych == '3') goto yy1201; goto yy87; -yy1167: +yy1188: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 418 "src/wast-lexer.cc" { OPCODE(F64ConvertSI32); RETURN(CONVERT); } -#line 6205 "src/prebuilt/wast-lexer-gen.cc" -yy1169: +#line 6300 "src/prebuilt/wast-lexer-gen.cc" +yy1190: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 420 "src/wast-lexer.cc" { OPCODE(F64ConvertSI64); RETURN(CONVERT); } -#line 6213 "src/prebuilt/wast-lexer-gen.cc" -yy1171: +#line 6308 "src/prebuilt/wast-lexer-gen.cc" +yy1192: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 422 "src/wast-lexer.cc" { OPCODE(F64ConvertUI32); RETURN(CONVERT); } -#line 6221 "src/prebuilt/wast-lexer-gen.cc" -yy1173: +#line 6316 "src/prebuilt/wast-lexer-gen.cc" +yy1194: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 424 "src/wast-lexer.cc" { OPCODE(F64ConvertUI64); RETURN(CONVERT); } -#line 6229 "src/prebuilt/wast-lexer-gen.cc" -yy1175: +#line 6324 "src/prebuilt/wast-lexer-gen.cc" +yy1196: yych = *++cursor_; - if (yych == '6') goto yy1181; + if (yych == '6') goto yy1202; goto yy87; -yy1176: +yy1197: yych = *++cursor_; - if (yych == '3') goto yy1182; + if (yych == '3') goto yy1203; goto yy87; -yy1177: +yy1198: yych = *++cursor_; - if (yych == '6') goto yy1183; + if (yych == '6') goto yy1204; goto yy87; -yy1178: +yy1199: yych = *++cursor_; - if (yych == 'h') goto yy1184; + if (yych == 'h') goto yy1205; goto yy87; -yy1179: +yy1200: yych = *++cursor_; - if (yych == 'n') goto yy1185; + if (yych == 'n') goto yy1206; goto yy87; -yy1180: +yy1201: yych = *++cursor_; - if (yych == '2') goto yy1186; + if (yych == '2') goto yy1207; goto yy87; -yy1181: +yy1202: yych = *++cursor_; - if (yych == '4') goto yy1188; + if (yych == '4') goto yy1209; goto yy87; -yy1182: +yy1203: yych = *++cursor_; - if (yych == '2') goto yy1190; + if (yych == '2') goto yy1211; goto yy87; -yy1183: +yy1204: yych = *++cursor_; - if (yych == '4') goto yy1192; + if (yych == '4') goto yy1213; goto yy87; -yy1184: +yy1205: yych = *++cursor_; - if (yych == 'm') goto yy1194; + if (yych == 'm') goto yy1215; goto yy87; -yy1185: +yy1206: yych = *++cursor_; - if (yych == 'i') goto yy1195; + if (yych == 'i') goto yy1216; goto yy87; -yy1186: +yy1207: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 427 "src/wast-lexer.cc" { OPCODE(F32ReinterpretI32); RETURN(CONVERT); } -#line 6281 "src/prebuilt/wast-lexer-gen.cc" -yy1188: +#line 6376 "src/prebuilt/wast-lexer-gen.cc" +yy1209: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 429 "src/wast-lexer.cc" { OPCODE(F64ReinterpretI64); RETURN(CONVERT); } -#line 6289 "src/prebuilt/wast-lexer-gen.cc" -yy1190: +#line 6384 "src/prebuilt/wast-lexer-gen.cc" +yy1211: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 428 "src/wast-lexer.cc" { OPCODE(I32ReinterpretF32); RETURN(CONVERT); } -#line 6297 "src/prebuilt/wast-lexer-gen.cc" -yy1192: +#line 6392 "src/prebuilt/wast-lexer-gen.cc" +yy1213: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; } #line 430 "src/wast-lexer.cc" { OPCODE(I64ReinterpretF64); RETURN(CONVERT); } -#line 6305 "src/prebuilt/wast-lexer-gen.cc" -yy1194: +#line 6400 "src/prebuilt/wast-lexer-gen.cc" +yy1215: yych = *++cursor_; - if (yych == 'e') goto yy1196; + if (yych == 'e') goto yy1217; goto yy87; -yy1195: +yy1216: yych = *++cursor_; - if (yych == 'c') goto yy1197; + if (yych == 'c') goto yy1218; goto yy87; -yy1196: +yy1217: yych = *++cursor_; - if (yych == 't') goto yy1198; + if (yych == 't') goto yy1219; goto yy87; -yy1197: +yy1218: yych = *++cursor_; - if (yych == 'a') goto yy1199; + if (yych == 'a') goto yy1220; goto yy87; -yy1198: +yy1219: yych = *++cursor_; - if (yych == 'i') goto yy1200; + if (yych == 'i') goto yy1221; goto yy87; -yy1199: +yy1220: yych = *++cursor_; - if (yych == 'l') goto yy1201; + if (yych == 'l') goto yy1222; goto yy87; -yy1200: +yy1221: yych = *++cursor_; - if (yych == 'c') goto yy1202; + if (yych == 'c') goto yy1223; goto yy87; -yy1201: +yy1222: yych = *++cursor_; - if (yych == '_') goto yy1203; + if (yych == '_') goto yy1224; goto yy87; -yy1202: +yy1223: yych = *++cursor_; - if (yych == '_') goto yy1204; + if (yych == '_') goto yy1225; goto yy87; -yy1203: +yy1224: yych = *++cursor_; - if (yych == 'n') goto yy1205; + if (yych == 'n') goto yy1226; goto yy87; -yy1204: +yy1225: yych = *++cursor_; - if (yych == 'n') goto yy1206; + if (yych == 'n') goto yy1227; goto yy87; -yy1205: +yy1226: yych = *++cursor_; - if (yych == 'a') goto yy1207; + if (yych == 'a') goto yy1228; goto yy87; -yy1206: +yy1227: yych = *++cursor_; - if (yych == 'a') goto yy1208; + if (yych == 'a') goto yy1229; goto yy87; -yy1207: +yy1228: yych = *++cursor_; - if (yych == 'n') goto yy1209; + if (yych == 'n') goto yy1230; goto yy87; -yy1208: +yy1229: yych = *++cursor_; - if (yych == 'n') goto yy1211; + if (yych == 'n') goto yy1232; goto yy87; -yy1209: +yy1230: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; @@ -6370,8 +6465,8 @@ yy1209: #line 457 "src/wast-lexer.cc" { RETURN(ASSERT_RETURN_CANONICAL_NAN); } -#line 6374 "src/prebuilt/wast-lexer-gen.cc" -yy1211: +#line 6469 "src/prebuilt/wast-lexer-gen.cc" +yy1232: ++cursor_; if (yybm[0+(yych = *cursor_)] & 8) { goto yy86; @@ -6379,10 +6474,10 @@ yy1211: #line 459 "src/wast-lexer.cc" { RETURN(ASSERT_RETURN_ARITHMETIC_NAN); } -#line 6383 "src/prebuilt/wast-lexer-gen.cc" +#line 6478 "src/prebuilt/wast-lexer-gen.cc" } } -#line 483 "src/wast-lexer.cc" +#line 488 "src/wast-lexer.cc" } } diff --git a/src/prebuilt/wast-parser-gen.cc b/src/prebuilt/wast-parser-gen.cc index 1c48e33a..e447ae48 100644 --- a/src/prebuilt/wast-parser-gen.cc +++ b/src/prebuilt/wast-parser-gen.cc @@ -86,6 +86,8 @@ #include "wast-parser.h" #include "wast-parser-lexer-shared.h" +#define YYDEBUG 1 + #define RELOCATE_STACK(type, array, stack_base, old_size, new_size) \ do { \ type* new_stack = new type[new_size](); \ @@ -150,6 +152,14 @@ } \ } while (0) +#define CHECK_ALLOW_EXCEPTIONS(loc, opcode_name) \ + do { \ + if (!parser->options->allow_exceptions) { \ + wast_parser_error(loc, lexer, parser, "opcode not allowed: %s", \ + opcode_name); \ + } \ + } while (0) + #define YYMALLOC(size) new char [size] #define YYFREE(p) delete [] (p) @@ -159,6 +169,7 @@ namespace wabt { static ExprList join_exprs1(Location* loc, Expr* expr1); static ExprList join_exprs2(Location* loc, ExprList* expr1, Expr* expr2); +static ExprList join_expr_lists(ExprList* expr1, ExprList* expr2); static Result parse_const(Type type, LiteralType literal_type, @@ -195,7 +206,7 @@ class BinaryErrorHandlerModule : public BinaryErrorHandler { #define wabt_wast_parser_error wast_parser_error -#line 199 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:339 */ +#line 210 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -260,54 +271,59 @@ extern int wabt_wast_parser_debug; WABT_TOKEN_TYPE_BR = 276, WABT_TOKEN_TYPE_BR_IF = 277, WABT_TOKEN_TYPE_BR_TABLE = 278, - WABT_TOKEN_TYPE_CALL = 279, - WABT_TOKEN_TYPE_CALL_INDIRECT = 280, - WABT_TOKEN_TYPE_RETURN = 281, - WABT_TOKEN_TYPE_GET_LOCAL = 282, - WABT_TOKEN_TYPE_SET_LOCAL = 283, - WABT_TOKEN_TYPE_TEE_LOCAL = 284, - WABT_TOKEN_TYPE_GET_GLOBAL = 285, - WABT_TOKEN_TYPE_SET_GLOBAL = 286, - WABT_TOKEN_TYPE_LOAD = 287, - WABT_TOKEN_TYPE_STORE = 288, - WABT_TOKEN_TYPE_OFFSET_EQ_NAT = 289, - WABT_TOKEN_TYPE_ALIGN_EQ_NAT = 290, - WABT_TOKEN_TYPE_CONST = 291, - WABT_TOKEN_TYPE_UNARY = 292, - WABT_TOKEN_TYPE_BINARY = 293, - WABT_TOKEN_TYPE_COMPARE = 294, - WABT_TOKEN_TYPE_CONVERT = 295, - WABT_TOKEN_TYPE_SELECT = 296, - WABT_TOKEN_TYPE_UNREACHABLE = 297, - WABT_TOKEN_TYPE_CURRENT_MEMORY = 298, - WABT_TOKEN_TYPE_GROW_MEMORY = 299, - WABT_TOKEN_TYPE_FUNC = 300, - WABT_TOKEN_TYPE_START = 301, - WABT_TOKEN_TYPE_TYPE = 302, - WABT_TOKEN_TYPE_PARAM = 303, - WABT_TOKEN_TYPE_RESULT = 304, - WABT_TOKEN_TYPE_LOCAL = 305, - WABT_TOKEN_TYPE_GLOBAL = 306, - WABT_TOKEN_TYPE_MODULE = 307, - WABT_TOKEN_TYPE_TABLE = 308, - WABT_TOKEN_TYPE_ELEM = 309, - WABT_TOKEN_TYPE_MEMORY = 310, - WABT_TOKEN_TYPE_DATA = 311, - WABT_TOKEN_TYPE_OFFSET = 312, - WABT_TOKEN_TYPE_IMPORT = 313, - WABT_TOKEN_TYPE_EXPORT = 314, - WABT_TOKEN_TYPE_REGISTER = 315, - WABT_TOKEN_TYPE_INVOKE = 316, - WABT_TOKEN_TYPE_GET = 317, - WABT_TOKEN_TYPE_ASSERT_MALFORMED = 318, - WABT_TOKEN_TYPE_ASSERT_INVALID = 319, - WABT_TOKEN_TYPE_ASSERT_UNLINKABLE = 320, - WABT_TOKEN_TYPE_ASSERT_RETURN = 321, - WABT_TOKEN_TYPE_ASSERT_RETURN_CANONICAL_NAN = 322, - WABT_TOKEN_TYPE_ASSERT_RETURN_ARITHMETIC_NAN = 323, - WABT_TOKEN_TYPE_ASSERT_TRAP = 324, - WABT_TOKEN_TYPE_ASSERT_EXHAUSTION = 325, - WABT_TOKEN_TYPE_LOW = 326 + WABT_TOKEN_TYPE_TRY = 279, + WABT_TOKEN_TYPE_CATCH = 280, + WABT_TOKEN_TYPE_CATCH_ALL = 281, + WABT_TOKEN_TYPE_THROW = 282, + WABT_TOKEN_TYPE_RETHROW = 283, + WABT_TOKEN_TYPE_CALL = 284, + WABT_TOKEN_TYPE_CALL_INDIRECT = 285, + WABT_TOKEN_TYPE_RETURN = 286, + WABT_TOKEN_TYPE_GET_LOCAL = 287, + WABT_TOKEN_TYPE_SET_LOCAL = 288, + WABT_TOKEN_TYPE_TEE_LOCAL = 289, + WABT_TOKEN_TYPE_GET_GLOBAL = 290, + WABT_TOKEN_TYPE_SET_GLOBAL = 291, + WABT_TOKEN_TYPE_LOAD = 292, + WABT_TOKEN_TYPE_STORE = 293, + WABT_TOKEN_TYPE_OFFSET_EQ_NAT = 294, + WABT_TOKEN_TYPE_ALIGN_EQ_NAT = 295, + WABT_TOKEN_TYPE_CONST = 296, + WABT_TOKEN_TYPE_UNARY = 297, + WABT_TOKEN_TYPE_BINARY = 298, + WABT_TOKEN_TYPE_COMPARE = 299, + WABT_TOKEN_TYPE_CONVERT = 300, + WABT_TOKEN_TYPE_SELECT = 301, + WABT_TOKEN_TYPE_UNREACHABLE = 302, + WABT_TOKEN_TYPE_CURRENT_MEMORY = 303, + WABT_TOKEN_TYPE_GROW_MEMORY = 304, + WABT_TOKEN_TYPE_FUNC = 305, + WABT_TOKEN_TYPE_START = 306, + WABT_TOKEN_TYPE_TYPE = 307, + WABT_TOKEN_TYPE_PARAM = 308, + WABT_TOKEN_TYPE_RESULT = 309, + WABT_TOKEN_TYPE_LOCAL = 310, + WABT_TOKEN_TYPE_GLOBAL = 311, + WABT_TOKEN_TYPE_MODULE = 312, + WABT_TOKEN_TYPE_TABLE = 313, + WABT_TOKEN_TYPE_ELEM = 314, + WABT_TOKEN_TYPE_MEMORY = 315, + WABT_TOKEN_TYPE_DATA = 316, + WABT_TOKEN_TYPE_OFFSET = 317, + WABT_TOKEN_TYPE_IMPORT = 318, + WABT_TOKEN_TYPE_EXPORT = 319, + WABT_TOKEN_TYPE_REGISTER = 320, + WABT_TOKEN_TYPE_INVOKE = 321, + WABT_TOKEN_TYPE_GET = 322, + WABT_TOKEN_TYPE_ASSERT_MALFORMED = 323, + WABT_TOKEN_TYPE_ASSERT_INVALID = 324, + WABT_TOKEN_TYPE_ASSERT_UNLINKABLE = 325, + WABT_TOKEN_TYPE_ASSERT_RETURN = 326, + WABT_TOKEN_TYPE_ASSERT_RETURN_CANONICAL_NAN = 327, + WABT_TOKEN_TYPE_ASSERT_RETURN_ARITHMETIC_NAN = 328, + WABT_TOKEN_TYPE_ASSERT_TRAP = 329, + WABT_TOKEN_TYPE_ASSERT_EXHAUSTION = 330, + WABT_TOKEN_TYPE_LOW = 331 }; #endif @@ -340,7 +356,7 @@ int wabt_wast_parser_parse (::wabt::WastLexer* lexer, ::wabt::WastParser* parser /* Copy the second part of user declarations. */ -#line 344 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:358 */ +#line 360 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:358 */ #ifdef short # undef short @@ -584,21 +600,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 49 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 823 +#define YYLAST 886 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 72 +#define YYNTOKENS 77 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 74 +#define YYNNTS 80 /* YYNRULES -- Number of rules. */ -#define YYNRULES 190 +#define YYNRULES 203 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 419 +#define YYNSTATES 451 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 326 +#define YYMAXUTOK 331 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -639,33 +655,35 @@ static const yytype_uint8 yytranslate[] = 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71 + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76 }; #if WABT_WAST_PARSER_DEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 241, 241, 247, 257, 258, 262, 280, 281, 287, - 290, 295, 302, 305, 306, 311, 318, 326, 332, 338, - 343, 350, 356, 367, 371, 375, 382, 387, 394, 395, - 401, 402, 405, 409, 410, 414, 415, 425, 426, 437, - 438, 439, 442, 445, 448, 451, 454, 457, 460, 463, - 466, 469, 472, 475, 478, 481, 484, 487, 490, 493, - 506, 509, 512, 515, 518, 521, 526, 531, 536, 541, - 549, 552, 557, 564, 568, 571, 576, 581, 589, 597, - 600, 604, 608, 612, 616, 620, 627, 628, 636, 637, - 645, 650, 664, 671, 676, 686, 694, 705, 712, 713, - 718, 724, 734, 741, 742, 747, 753, 763, 770, 774, - 779, 791, 794, 798, 807, 821, 835, 841, 849, 857, - 876, 885, 899, 913, 918, 926, 934, 957, 971, 977, - 985, 998, 1006, 1014, 1020, 1026, 1035, 1045, 1053, 1058, - 1063, 1068, 1075, 1084, 1094, 1101, 1112, 1120, 1121, 1122, - 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1133, 1134, 1138, - 1143, 1151, 1171, 1182, 1202, 1209, 1214, 1222, 1232, 1242, - 1248, 1254, 1260, 1266, 1272, 1277, 1282, 1288, 1297, 1302, - 1303, 1308, 1317, 1321, 1328, 1340, 1341, 1348, 1351, 1411, - 1423 + 0, 254, 254, 260, 270, 271, 275, 293, 294, 300, + 303, 308, 315, 318, 319, 324, 331, 339, 345, 351, + 356, 363, 369, 380, 384, 388, 395, 400, 407, 408, + 414, 415, 418, 422, 423, 427, 428, 438, 439, 450, + 451, 452, 456, 459, 462, 465, 468, 471, 474, 477, + 480, 483, 486, 489, 492, 495, 498, 501, 504, 507, + 520, 523, 526, 529, 532, 535, 538, 541, 547, 552, + 557, 562, 568, 576, 579, 584, 591, 595, 602, 603, + 609, 613, 616, 621, 626, 632, 640, 643, 649, 657, + 660, 664, 668, 672, 676, 680, 687, 692, 698, 704, + 705, 713, 714, 722, 727, 741, 748, 753, 763, 771, + 782, 789, 790, 795, 801, 811, 818, 819, 824, 830, + 840, 847, 851, 856, 868, 871, 875, 884, 898, 912, + 918, 926, 934, 953, 962, 976, 990, 995, 1003, 1011, + 1034, 1048, 1054, 1062, 1075, 1083, 1091, 1097, 1103, 1112, + 1122, 1130, 1135, 1140, 1145, 1152, 1161, 1171, 1178, 1189, + 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 1210, 1211, 1215, 1220, 1228, 1248, 1259, 1279, 1286, 1291, + 1299, 1309, 1319, 1325, 1331, 1337, 1343, 1349, 1354, 1359, + 1365, 1374, 1379, 1380, 1385, 1394, 1398, 1405, 1417, 1418, + 1425, 1428, 1488, 1500 }; #endif @@ -677,27 +695,29 @@ static const char *const yytname[] = "\"EOF\"", "error", "$undefined", "\"(\"", "\")\"", "NAT", "INT", "FLOAT", "TEXT", "VAR", "VALUE_TYPE", "ANYFUNC", "MUT", "NOP", "DROP", "BLOCK", "END", "IF", "THEN", "ELSE", "LOOP", "BR", "BR_IF", "BR_TABLE", - "CALL", "CALL_INDIRECT", "RETURN", "GET_LOCAL", "SET_LOCAL", "TEE_LOCAL", - "GET_GLOBAL", "SET_GLOBAL", "LOAD", "STORE", "OFFSET_EQ_NAT", - "ALIGN_EQ_NAT", "CONST", "UNARY", "BINARY", "COMPARE", "CONVERT", - "SELECT", "UNREACHABLE", "CURRENT_MEMORY", "GROW_MEMORY", "FUNC", - "START", "TYPE", "PARAM", "RESULT", "LOCAL", "GLOBAL", "MODULE", "TABLE", - "ELEM", "MEMORY", "DATA", "OFFSET", "IMPORT", "EXPORT", "REGISTER", - "INVOKE", "GET", "ASSERT_MALFORMED", "ASSERT_INVALID", - "ASSERT_UNLINKABLE", "ASSERT_RETURN", "ASSERT_RETURN_CANONICAL_NAN", + "TRY", "CATCH", "CATCH_ALL", "THROW", "RETHROW", "CALL", "CALL_INDIRECT", + "RETURN", "GET_LOCAL", "SET_LOCAL", "TEE_LOCAL", "GET_GLOBAL", + "SET_GLOBAL", "LOAD", "STORE", "OFFSET_EQ_NAT", "ALIGN_EQ_NAT", "CONST", + "UNARY", "BINARY", "COMPARE", "CONVERT", "SELECT", "UNREACHABLE", + "CURRENT_MEMORY", "GROW_MEMORY", "FUNC", "START", "TYPE", "PARAM", + "RESULT", "LOCAL", "GLOBAL", "MODULE", "TABLE", "ELEM", "MEMORY", "DATA", + "OFFSET", "IMPORT", "EXPORT", "REGISTER", "INVOKE", "GET", + "ASSERT_MALFORMED", "ASSERT_INVALID", "ASSERT_UNLINKABLE", + "ASSERT_RETURN", "ASSERT_RETURN_CANONICAL_NAN", "ASSERT_RETURN_ARITHMETIC_NAN", "ASSERT_TRAP", "ASSERT_EXHAUSTION", "LOW", "$accept", "text_list", "text_list_opt", "quoted_text", "value_type_list", "elem_type", "global_type", "func_type", "func_sig", "table_sig", "memory_sig", "limits", "type_use", "nat", "literal", "var", "var_list", "bind_var_opt", "bind_var", "labeling_opt", "offset_opt", "align_opt", "instr", "plain_instr", "block_instr", "block_sig", "block", - "expr", "expr1", "if_block", "if_", "instr_list", "expr_list", - "const_expr", "func", "func_fields", "func_fields_import", - "func_fields_import1", "func_fields_body", "func_fields_body1", - "func_body", "func_body1", "offset", "elem", "table", "table_fields", - "data", "memory", "memory_fields", "global", "global_fields", - "import_desc", "import", "inline_import", "export_desc", "export", - "inline_export", "type_def", "start", "module_field", + "catch_instr", "catch_instr_list", "expr", "expr1", "catch_list", + "if_block", "if_", "rethrow_check", "throw_check", "try_check", + "instr_list", "expr_list", "const_expr", "func", "func_fields", + "func_fields_import", "func_fields_import1", "func_fields_body", + "func_fields_body1", "func_body", "func_body1", "offset", "elem", + "table", "table_fields", "data", "memory", "memory_fields", "global", + "global_fields", "import_desc", "import", "inline_import", "export_desc", + "export", "inline_export", "type_def", "start", "module_field", "module_fields_opt", "module_fields", "raw_module", "module", "inline_module", "script_var_opt", "action", "assertion", "cmd", "cmd_list", "const", "const_list", "script", "script_start", YY_NULLPTR @@ -716,14 +736,14 @@ static const yytype_uint16 yytoknum[] = 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326 + 325, 326, 327, 328, 329, 330, 331 }; # endif -#define YYPACT_NINF -339 +#define YYPACT_NINF -379 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-339))) + (!!((Yystate) == (-379))) #define YYTABLE_NINF -30 @@ -734,48 +754,52 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 43, 753, -339, -339, -339, -339, -339, -339, -339, -339, - -339, -339, -339, 122, -339, -339, -339, -339, -339, -339, - 140, -339, 153, 152, 232, 67, 152, 152, 152, 157, - 152, 157, 159, 159, 159, 160, 160, 184, 184, 184, - 226, 226, 226, 237, 226, 148, -339, 34, -339, -339, - -339, 422, -339, -339, -339, -339, 215, 193, 249, 242, - 56, 197, 66, 377, 265, -339, -339, 241, 265, 262, - -339, 159, 268, 160, -339, 159, 159, 221, 159, 159, - 159, 17, -339, 270, 271, 6, 159, 159, 159, 337, - -339, -339, 152, 152, 152, 232, 232, -339, 232, 232, - -339, 232, 232, 232, 232, 232, 244, 244, 84, -339, - -339, -339, -339, -339, -339, -339, -339, 454, 486, -339, - -339, -339, -339, 275, -339, -339, -339, -339, 277, 422, - -339, 278, -339, 281, 25, -339, 486, 282, 120, 56, - -339, 235, 283, 122, 55, -339, 279, -339, 280, 284, - 286, 284, 66, 152, 152, 152, 486, 289, 290, -339, - 130, 68, -339, -339, 291, 284, 241, 262, 285, 292, - 294, 103, 297, 304, -339, 305, 306, 309, 311, 206, - -339, -339, 312, 317, 319, 232, 152, -339, 152, 159, - 159, -339, 518, 518, 518, -339, -339, 232, -339, -339, - -339, -339, -339, -339, -339, -339, 263, 263, -339, -339, - -339, -339, 582, -339, 752, -339, -339, 149, 321, -339, - -339, -339, 210, 322, -339, 315, -339, -339, -339, 316, - -339, -339, -339, -339, -339, 273, -339, -339, -339, -339, - -339, 518, 326, 518, 327, 289, -339, -339, 175, -339, - -339, 262, -339, -339, -339, 328, -339, 104, 329, 232, - 232, 232, 232, -339, -339, 261, -339, -339, -339, -339, - 298, -339, -339, -339, -339, -339, 331, 102, 320, 161, - 164, 330, 159, 332, 687, 518, 323, -339, 238, 325, - 246, -339, -339, -339, 152, -339, 218, -339, -339, -339, - -339, 333, -339, -339, 654, 326, 335, -339, -339, -339, - -339, -339, -339, 338, -339, 152, 152, 152, 152, -339, - 339, 340, 341, 349, -339, 84, -339, 454, -339, 351, - 550, 550, 352, 367, -339, -339, -339, 152, 152, 152, - 152, 166, 362, 168, 204, 208, -339, 219, 486, -339, - 720, 289, -339, 379, 120, 284, 284, -339, -339, -339, - -339, 384, -339, 454, 620, -339, -339, 550, -339, 216, - -339, -339, 486, -339, 321, 385, -339, 380, -339, -339, - 389, 486, -339, 214, 407, 408, 418, 419, 420, -339, - -339, -339, -339, 410, -339, 321, 378, 425, 426, -339, - -339, -339, -339, -339, 152, -339, -339, 412, 429, -339, - 217, 486, 414, -339, 434, 486, -339, 436, -339 + 65, 811, -379, -379, -379, -379, -379, -379, -379, -379, + -379, -379, -379, 89, -379, -379, -379, -379, -379, -379, + 103, -379, 109, 108, 173, 124, 108, 108, 108, 163, + 108, 163, 120, 120, 120, 158, 158, 189, 189, 189, + 226, 226, 226, 232, 226, 157, -379, 131, -379, -379, + -379, 430, -379, -379, -379, -379, 234, 193, 241, 249, + 87, 88, 90, 393, 253, -379, -379, 282, 253, 257, + -379, 120, 276, 158, -379, 120, 120, 229, 120, 120, + 120, -18, -379, 286, 295, -4, 120, 120, 120, 348, + -379, -379, 108, 108, 108, 173, 173, -379, -379, -379, + -379, 173, 173, -379, 173, 173, 173, 173, 173, 261, + 261, 205, -379, -379, -379, -379, -379, -379, -379, -379, + 467, 504, -379, -379, -379, 173, 173, 108, -379, 297, + -379, -379, -379, -379, 299, 430, -379, 300, -379, 302, + 11, -379, 504, 303, 102, 87, -379, 186, 304, 89, + 73, -379, 301, -379, 305, 306, 308, 306, 90, 108, + 108, 108, 504, 307, 309, 311, -379, 42, 203, -379, + -379, 314, 306, 282, 257, 312, 315, 318, -22, 321, + 325, -379, 326, 330, 333, 336, 143, -379, -379, 342, + 343, 344, 173, 108, -379, 108, 120, 120, -379, 541, + 541, 541, -379, -379, 173, -379, -379, -379, -379, -379, + -379, -379, -379, 275, 275, -379, -379, -379, -379, 615, + -379, 810, -379, -379, -379, 541, -379, 230, 319, -379, + -379, -379, 101, 345, -379, 340, -379, -379, -379, 339, + -379, -379, -379, -379, -379, 293, -379, -379, -379, -379, + -379, 541, 350, 541, 351, 307, -379, -379, 341, 227, + -379, -379, 257, -379, -379, -379, 360, -379, 82, 362, + 173, 173, 173, 173, -379, -379, 266, -379, -379, -379, + -379, 313, -379, -379, -379, -379, -379, 363, 147, 364, + 166, 169, 377, 120, 369, 735, 541, 372, -379, 146, + 382, 237, -379, -379, -379, 270, 108, -379, 244, -379, + -379, -379, -379, 395, -379, -379, 697, 350, 401, -379, + -379, -379, -379, -379, 108, -379, 405, -379, 108, 108, + 108, 108, -379, 414, 415, 428, 442, -379, 205, -379, + 467, -379, 444, 578, 578, 445, 452, -379, -379, -379, + 108, 108, 108, 108, 173, 173, 270, 389, 170, 459, + 179, 181, 183, -379, 250, 504, -379, 773, 307, 541, + -379, 480, 102, 306, 306, -379, -379, -379, -379, 481, + -379, 467, 658, -379, -379, 578, -379, 215, -379, -379, + 504, -379, 504, 504, -379, 108, 319, 482, -379, 489, + -379, -379, 502, 504, -379, 516, 240, 518, 519, 525, + 526, 539, -379, -379, -379, -379, 477, -379, -379, -379, + -379, 319, 503, 556, 562, 557, -379, -379, -379, -379, + -379, 108, -379, -379, 548, 577, 270, -379, -379, 223, + 504, 575, 592, -379, 593, 504, 557, -379, 599, -379, + -379 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -783,74 +807,78 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 187, 0, 151, 152, 149, 153, 150, 148, 155, 156, - 147, 154, 159, 164, 163, 180, 189, 178, 179, 182, - 188, 190, 0, 30, 0, 0, 30, 30, 30, 0, - 30, 0, 0, 0, 0, 165, 165, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 160, 0, 183, 1, - 32, 86, 31, 22, 27, 26, 0, 0, 0, 0, - 0, 157, 0, 0, 0, 112, 28, 0, 0, 4, - 6, 0, 0, 165, 166, 0, 0, 0, 0, 0, - 0, 0, 185, 0, 0, 0, 0, 0, 0, 0, - 43, 44, 33, 33, 33, 0, 0, 28, 0, 0, - 49, 0, 0, 0, 0, 0, 35, 35, 0, 60, - 61, 62, 63, 45, 42, 64, 65, 86, 86, 39, - 40, 41, 108, 0, 93, 102, 103, 107, 98, 86, - 146, 13, 144, 0, 0, 10, 86, 0, 0, 0, - 2, 0, 0, 158, 0, 9, 0, 116, 0, 19, - 0, 0, 0, 33, 33, 33, 86, 88, 0, 28, - 0, 0, 123, 18, 0, 0, 0, 4, 5, 0, - 0, 0, 0, 0, 185, 0, 0, 0, 0, 0, - 174, 175, 0, 0, 0, 0, 7, 7, 7, 0, - 0, 34, 86, 86, 86, 46, 47, 0, 50, 51, - 52, 53, 54, 55, 56, 36, 37, 37, 23, 24, - 25, 59, 0, 92, 0, 87, 91, 0, 98, 95, - 97, 96, 0, 0, 145, 0, 90, 128, 127, 0, - 129, 130, 162, 3, 161, 0, 17, 20, 115, 117, - 118, 86, 0, 86, 0, 88, 74, 73, 0, 114, - 29, 4, 122, 124, 125, 0, 121, 0, 0, 0, - 0, 0, 0, 142, 181, 0, 168, 169, 170, 171, - 0, 173, 186, 172, 176, 177, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 86, 0, 72, 0, 0, - 48, 38, 57, 58, 7, 7, 0, 94, 7, 7, - 12, 0, 28, 75, 0, 0, 0, 77, 79, 76, - 111, 89, 113, 0, 120, 30, 30, 30, 30, 136, - 0, 0, 0, 0, 167, 0, 21, 86, 8, 0, - 86, 86, 0, 0, 143, 7, 71, 33, 33, 33, - 33, 0, 0, 0, 0, 0, 11, 0, 86, 78, - 0, 85, 126, 13, 0, 0, 0, 138, 141, 139, - 140, 0, 105, 86, 0, 104, 109, 86, 137, 0, - 66, 68, 86, 67, 98, 0, 99, 14, 16, 119, - 0, 86, 84, 0, 0, 0, 0, 0, 0, 184, - 106, 110, 70, 0, 100, 98, 0, 81, 0, 132, - 131, 135, 133, 134, 33, 101, 7, 0, 83, 69, - 0, 86, 0, 15, 0, 86, 80, 0, 82 + 200, 0, 164, 165, 162, 166, 163, 161, 168, 169, + 160, 167, 172, 177, 176, 193, 202, 191, 192, 195, + 201, 203, 0, 30, 0, 0, 30, 30, 30, 0, + 30, 0, 0, 0, 0, 178, 178, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 173, 0, 196, 1, + 32, 99, 31, 22, 27, 26, 0, 0, 0, 0, + 0, 170, 0, 0, 0, 125, 28, 0, 0, 4, + 6, 0, 0, 178, 179, 0, 0, 0, 0, 0, + 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, + 43, 44, 33, 33, 33, 0, 0, 28, 98, 97, + 96, 0, 0, 49, 0, 0, 0, 0, 0, 35, + 35, 0, 60, 61, 62, 63, 45, 42, 64, 65, + 99, 99, 39, 40, 41, 0, 0, 33, 121, 0, + 106, 115, 116, 120, 111, 99, 159, 13, 157, 0, + 0, 10, 99, 0, 0, 0, 2, 0, 0, 171, + 0, 9, 0, 129, 0, 19, 0, 0, 0, 33, + 33, 33, 99, 101, 0, 0, 28, 0, 0, 136, + 18, 0, 0, 0, 4, 5, 0, 0, 0, 0, + 0, 198, 0, 0, 0, 0, 0, 187, 188, 0, + 0, 0, 0, 7, 7, 7, 0, 0, 34, 99, + 99, 99, 46, 47, 0, 50, 51, 52, 53, 54, + 55, 56, 36, 37, 37, 23, 24, 25, 59, 0, + 105, 0, 100, 67, 66, 99, 104, 0, 111, 108, + 110, 109, 0, 0, 158, 0, 103, 141, 140, 0, + 142, 143, 175, 3, 174, 0, 17, 20, 128, 130, + 131, 99, 0, 99, 0, 101, 81, 80, 0, 0, + 127, 29, 4, 135, 137, 138, 0, 134, 0, 0, + 0, 0, 0, 0, 155, 194, 0, 181, 182, 183, + 184, 0, 186, 199, 185, 189, 190, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 99, 0, 75, 0, + 0, 48, 38, 57, 58, 0, 7, 7, 0, 107, + 7, 7, 12, 0, 28, 82, 0, 0, 0, 84, + 89, 83, 124, 102, 33, 126, 0, 133, 30, 30, + 30, 30, 149, 0, 0, 0, 0, 180, 0, 21, + 99, 8, 0, 99, 99, 0, 0, 156, 7, 74, + 33, 33, 33, 33, 0, 0, 78, 0, 0, 0, + 0, 0, 0, 11, 0, 99, 88, 0, 95, 99, + 139, 13, 0, 0, 0, 151, 154, 152, 153, 0, + 118, 99, 0, 117, 122, 99, 150, 0, 68, 70, + 99, 69, 99, 99, 79, 33, 111, 0, 112, 14, + 16, 132, 0, 99, 94, 0, 0, 0, 0, 0, + 0, 0, 197, 119, 123, 73, 0, 76, 77, 72, + 113, 111, 0, 91, 0, 0, 145, 144, 148, 146, + 147, 33, 114, 7, 0, 93, 0, 85, 71, 0, + 99, 0, 0, 15, 0, 99, 86, 90, 0, 87, + 92 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -339, 368, -136, -26, -154, 293, -129, 397, 117, -138, - -145, -56, -123, -44, 147, 87, -87, 2, -11, -90, - 366, 295, -339, -62, -339, -220, -168, -29, -339, 183, - -339, -112, 259, 364, -339, 376, 318, -338, 417, -289, - 207, -280, 24, -339, -339, 400, -339, -339, 402, -339, - 427, -339, -339, -20, -339, -339, -19, -339, -339, 8, - -339, 508, 99, -339, -339, 20, 191, -339, 564, -339, - -339, 411, -339, -339 + -379, 543, -158, 43, -162, 463, -131, 559, 260, -143, + -160, -57, -127, -47, 296, -23, -86, 14, 29, -90, + 523, 426, -379, -58, -379, -231, -101, 218, 285, -29, + -379, 209, 349, -379, -379, -379, -44, -112, 410, 505, + -379, 542, 446, -378, 563, -315, 354, -318, 30, -379, + -379, 540, -379, -379, 511, -379, 531, -379, -379, -38, + -379, -379, -2, -379, -379, 4, -379, 647, 121, -379, + -379, -9, 233, -379, 689, -379, -379, 535, -379, -379 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 168, 169, 71, 277, 146, 136, 58, 223, 147, - 162, 148, 117, 55, 211, 250, 160, 51, 191, 192, - 206, 292, 118, 119, 120, 285, 286, 121, 158, 307, - 308, 122, 246, 227, 2, 123, 219, 220, 124, 125, - 126, 127, 66, 3, 4, 150, 5, 6, 164, 7, - 137, 258, 8, 128, 172, 9, 129, 10, 11, 12, - 142, 13, 14, 15, 16, 75, 17, 18, 19, 20, - 272, 179, 21, 22 + -1, 175, 176, 71, 288, 152, 142, 58, 233, 153, + 169, 154, 120, 55, 218, 261, 167, 51, 198, 199, + 213, 303, 121, 122, 123, 296, 297, 356, 357, 124, + 164, 437, 319, 320, 125, 126, 127, 128, 256, 237, + 2, 129, 229, 230, 130, 131, 132, 133, 66, 3, + 4, 156, 5, 6, 171, 7, 143, 269, 8, 134, + 179, 9, 135, 10, 11, 12, 148, 13, 14, 15, + 16, 75, 17, 18, 19, 20, 283, 186, 21, 22 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -858,249 +886,266 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 65, 157, 65, 193, 194, 218, 215, 72, 73, 230, - 197, 163, 52, 239, 59, 52, 52, 52, 149, 52, - 253, 46, 305, 149, 226, 288, 289, 157, 60, 61, - 62, 255, 67, 279, 280, 65, 394, 225, 362, 65, - 138, 139, 151, 152, 226, 170, 1, 165, 166, 174, - 175, 366, 176, 177, 178, 69, 76, 405, 27, 134, - 182, 183, 184, 241, 242, 243, 135, 35, 36, 144, - 57, 53, 248, 303, 390, 309, 50, 145, 35, 36, - 287, 287, 287, 189, 190, 305, 27, 391, 159, 208, - 209, 210, 167, 173, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 237, 327, 149, 149, 163, - 163, 56, 328, 189, 190, 313, 64, 336, 68, 138, - 139, 149, 149, 229, 251, 45, 189, 190, 245, 287, - 135, 287, 151, 152, 249, 53, 78, 79, 80, 54, - 341, 343, 86, 47, 344, 345, 165, 166, 259, 315, - 157, 46, 157, 49, 260, 316, 261, 317, 262, 318, - 63, 50, 53, 282, 283, 330, 54, 70, 331, 74, - 374, 328, 376, 287, 328, 278, 328, 281, 328, 312, - 53, 369, 195, 196, 54, 198, 199, 77, 200, 201, - 202, 203, 204, 23, 24, 25, 185, 294, 295, 26, - 45, 28, 29, 30, 31, 140, 32, 33, 377, 270, - 271, 388, 378, 306, 328, 347, 245, 387, 328, 130, - 392, 413, 157, 379, 53, 386, 328, 328, 54, 81, - 385, 82, 83, 84, 87, 88, 380, 53, 131, 232, - 85, 54, 157, 233, 161, 57, 53, 370, 371, 372, - 373, -29, 410, 132, 338, -29, 333, 339, 298, 299, - 393, 185, 298, 299, 270, 324, 294, 295, 63, 398, - 140, 171, 276, 27, 180, 181, 306, 351, 205, 216, - 217, 222, 235, 342, 290, 224, 228, 234, 157, 53, - 238, 145, 214, 233, 247, 252, 256, 257, 291, 414, - 163, 263, 157, 417, 52, 52, 52, 52, 264, 266, - 267, 149, 149, 268, 409, 269, 273, 353, 354, 355, - 356, 274, 382, 275, 296, 301, 300, 302, 225, 304, - 329, 310, 314, 319, 325, 326, 334, 346, 350, 337, - 332, 340, 352, 357, 358, 359, 320, 321, 322, 323, - 90, 91, 153, 360, 154, 363, 367, 155, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 368, 375, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 383, 396, 185, 186, 187, 188, 389, 395, - 90, 91, 153, 397, 154, 189, 190, 155, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 399, 400, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 401, 402, 403, 89, 404, 406, 407, 141, - 408, 411, 412, 415, 156, 90, 91, 92, 416, 93, - 418, 236, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 133, 212, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 90, 91, 92, - 384, 93, 361, 207, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 349, 214, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 90, - 91, 92, 293, 93, 311, 221, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 244, 284, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 90, 91, 92, 213, 93, 297, 365, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 240, 364, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 90, 91, 92, 231, 93, 254, 143, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 48, 265, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 90, 91, 153, 0, 154, - 0, 0, 155, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 0, 0, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 0, 0, 0, - 186, 187, 188, 90, 91, 153, 0, 154, 0, 0, - 155, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 0, 0, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 0, 0, 90, 91, 153, - 188, 154, 348, 0, 155, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 0, 0, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 0, - 90, 91, 153, 335, 154, 0, 0, 155, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 0, 0, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 0, 90, 91, 153, 335, 154, 381, 0, - 155, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 0, 0, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 90, 91, 153, 0, 154, - 0, 0, 155, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 0, 0, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 0, 23, 24, - 25, 0, 0, 0, 26, 27, 28, 29, 30, 31, - 0, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44 + 65, 56, 65, 200, 201, 163, 64, 228, 68, 222, + 170, 204, 264, 240, 249, 155, 266, 46, 420, 165, + 155, 317, 144, 235, 157, 380, 384, 76, 270, 172, + 236, 163, 290, 291, 271, 65, 272, 225, 273, 65, + 60, 61, 62, 432, 67, 165, 260, 53, 35, 36, + 236, 54, 52, 27, 59, 52, 52, 52, 145, 52, + 158, 69, 35, 36, 180, 173, 413, 414, 1, 251, + 252, 253, 202, 203, 196, 197, 72, 73, 205, 206, + 259, 207, 208, 209, 210, 211, 317, 298, 298, 298, + 140, 45, 45, 150, 166, 53, 146, 141, 174, 299, + 300, 151, 223, 224, 326, 239, 47, 144, 247, 49, + 155, 155, 141, 298, 177, 170, 170, 50, 181, 182, + 157, 183, 184, 185, 305, 155, 155, 57, 70, 189, + 190, 191, 328, 50, 255, 172, 196, 197, 329, 298, + 330, 298, 331, 145, 358, 360, 281, 282, 361, 362, + 315, 340, 321, 46, 310, 311, 158, 341, 78, 79, + 80, 163, 351, 163, 86, 352, 63, 74, 53, 287, + 343, 173, 54, 344, 396, 165, 341, 165, 53, 341, + 341, 301, 54, 398, 298, 399, 387, 400, 27, 341, + 242, 341, 77, 341, 243, 349, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 23, 24, 25, + 215, 216, 217, 26, 411, 28, 29, 30, 31, 415, + 32, 33, 289, 318, 292, 341, 255, 443, 364, 81, + 410, 325, 53, 341, 369, 85, 54, 163, 136, 293, + 294, 409, -29, 137, 408, 138, -29, 333, 334, 335, + 336, 165, 57, 402, 401, 53, 63, 298, 163, 54, + 388, 389, 390, 391, 262, 146, 196, 197, 405, 281, + 337, 439, 165, 82, 83, 84, 87, 88, 416, 178, + 417, 418, 192, 306, 307, 168, 27, 53, 318, 368, + 187, 424, 192, 310, 311, 354, 355, 306, 307, 188, + 212, 226, 227, 232, 245, 419, 234, 238, 244, 163, + 221, 53, 248, 257, 258, 302, 151, 170, 263, 267, + 243, 268, 308, 165, 163, 274, 155, 155, 444, 275, + 277, 392, 393, 448, 278, 359, 346, 279, 165, 404, + 280, 438, 371, 372, 373, 374, 284, 285, 286, 312, + 313, 235, 314, 316, 338, 322, 324, 52, 52, 52, + 52, 90, 91, 159, 327, 160, 332, 339, 161, 95, + 96, 97, 98, 347, 342, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 345, 350, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 353, 363, + 192, 193, 194, 195, 367, 395, 90, 91, 159, 370, + 160, 196, 197, 161, 95, 96, 97, 98, 375, 376, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 377, 89, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 90, 91, 92, 378, 93, 381, 385, + 94, 95, 96, 97, 98, 162, 386, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 397, + 219, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 90, 91, 92, 406, 93, 412, 421, 94, 95, 96, + 97, 98, 422, 431, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 423, 221, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 90, 91, 92, + 425, 93, 426, 427, 94, 95, 96, 97, 98, 428, + 429, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 430, 295, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 90, 91, 92, 433, 93, 434, + 436, 94, 95, 96, 97, 98, 435, 440, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 441, 382, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 90, 91, 92, 445, 93, 446, 447, 94, 95, + 96, 97, 98, 450, 147, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 246, 139, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 90, 91, + 159, 407, 160, 214, 379, 161, 95, 96, 97, 98, + 304, 394, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 442, 449, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 323, 366, 254, 193, 194, + 195, 90, 91, 159, 309, 160, 241, 231, 161, 95, + 96, 97, 98, 220, 265, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 383, 250, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 149, 48, + 90, 91, 159, 195, 160, 365, 276, 161, 95, 96, + 97, 98, 0, 0, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 0, 0, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 0, 90, 91, + 159, 348, 160, 0, 0, 161, 95, 96, 97, 98, + 0, 0, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 0, 0, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 0, 90, 91, 159, 348, + 160, 403, 0, 161, 95, 96, 97, 98, 0, 0, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 0, 0, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 90, 91, 159, 0, 160, 0, 0, + 161, 95, 96, 97, 98, 0, 0, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, + 0, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 0, 23, 24, 25, 0, 0, 0, 26, 27, 28, + 29, 30, 31, 0, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44 }; static const yytype_int16 yycheck[] = { - 29, 63, 31, 93, 94, 128, 118, 33, 34, 138, - 97, 67, 23, 151, 25, 26, 27, 28, 62, 30, - 165, 13, 242, 67, 136, 193, 194, 89, 26, 27, - 28, 167, 30, 187, 188, 64, 374, 12, 327, 68, - 60, 60, 62, 62, 156, 71, 3, 67, 67, 75, - 76, 331, 78, 79, 80, 31, 36, 395, 52, 3, - 86, 87, 88, 153, 154, 155, 10, 61, 62, 3, - 3, 5, 159, 241, 363, 243, 9, 11, 61, 62, - 192, 193, 194, 58, 59, 305, 52, 367, 64, 5, - 6, 7, 68, 73, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 149, 4, 151, 152, 165, - 166, 24, 10, 58, 59, 251, 29, 285, 31, 139, - 139, 165, 166, 3, 56, 3, 58, 59, 157, 241, - 10, 243, 152, 152, 4, 5, 37, 38, 39, 9, - 294, 295, 43, 3, 298, 299, 166, 166, 45, 45, - 212, 143, 214, 0, 51, 51, 53, 53, 55, 55, - 3, 9, 5, 189, 190, 4, 9, 8, 4, 9, - 4, 10, 4, 285, 10, 186, 10, 188, 10, 4, - 5, 335, 95, 96, 9, 98, 99, 3, 101, 102, - 103, 104, 105, 45, 46, 47, 47, 48, 49, 51, - 3, 53, 54, 55, 56, 8, 58, 59, 4, 3, - 4, 356, 4, 242, 10, 302, 245, 355, 10, 4, - 4, 4, 284, 4, 5, 354, 10, 10, 9, 3, - 353, 40, 41, 42, 43, 44, 348, 5, 45, 4, - 3, 9, 304, 8, 3, 3, 5, 337, 338, 339, - 340, 5, 406, 4, 16, 9, 282, 19, 48, 49, - 372, 47, 48, 49, 3, 4, 48, 49, 3, 381, - 8, 3, 185, 52, 4, 4, 305, 306, 34, 4, - 3, 3, 3, 294, 197, 4, 4, 4, 350, 5, - 4, 11, 3, 8, 4, 4, 4, 3, 35, 411, - 356, 4, 364, 415, 315, 316, 317, 318, 4, 4, - 4, 355, 356, 4, 404, 4, 4, 315, 316, 317, - 318, 4, 351, 4, 3, 10, 4, 54, 12, 3, - 10, 4, 4, 4, 36, 4, 4, 4, 3, 16, - 10, 16, 4, 4, 4, 4, 259, 260, 261, 262, - 13, 14, 15, 4, 17, 4, 4, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 4, 10, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 3, 3, 47, 48, 49, 50, 4, 4, - 13, 14, 15, 4, 17, 58, 59, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 4, 4, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 4, 4, 4, 3, 16, 49, 3, 61, - 4, 19, 3, 19, 57, 13, 14, 15, 4, 17, - 4, 148, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 59, 3, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 13, 14, 15, - 353, 17, 325, 107, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 305, 3, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 13, - 14, 15, 207, 17, 245, 129, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 156, 3, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 13, 14, 15, 117, 17, 218, 330, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 152, 3, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 13, 14, 15, 139, 17, 166, 61, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 20, 174, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 13, 14, 15, -1, 17, - -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, -1, -1, 36, 37, - 38, 39, 40, 41, 42, 43, 44, -1, -1, -1, - 48, 49, 50, 13, 14, 15, -1, 17, -1, -1, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, -1, -1, 36, 37, 38, 39, - 40, 41, 42, 43, 44, -1, -1, 13, 14, 15, - 50, 17, 18, -1, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, - 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, - 13, 14, 15, 49, 17, -1, -1, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, -1, -1, 36, 37, 38, 39, 40, 41, 42, - 43, 44, -1, 13, 14, 15, 49, 17, 18, -1, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, -1, -1, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 13, 14, 15, -1, 17, - -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, -1, -1, 36, 37, - 38, 39, 40, 41, 42, 43, 44, -1, 45, 46, - 47, -1, -1, -1, 51, 52, 53, 54, 55, 56, - -1, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70 + 29, 24, 31, 93, 94, 63, 29, 134, 31, 121, + 67, 97, 172, 144, 157, 62, 174, 13, 396, 63, + 67, 252, 60, 12, 62, 340, 344, 36, 50, 67, + 142, 89, 194, 195, 56, 64, 58, 127, 60, 68, + 26, 27, 28, 421, 30, 89, 4, 5, 66, 67, + 162, 9, 23, 57, 25, 26, 27, 28, 60, 30, + 62, 31, 66, 67, 73, 67, 381, 385, 3, 159, + 160, 161, 95, 96, 63, 64, 33, 34, 101, 102, + 166, 104, 105, 106, 107, 108, 317, 199, 200, 201, + 3, 3, 3, 3, 64, 5, 8, 10, 68, 200, + 201, 11, 125, 126, 262, 3, 3, 145, 155, 0, + 157, 158, 10, 225, 71, 172, 173, 9, 75, 76, + 158, 78, 79, 80, 225, 172, 173, 3, 8, 86, + 87, 88, 50, 9, 163, 173, 63, 64, 56, 251, + 58, 253, 60, 145, 306, 307, 3, 4, 310, 311, + 251, 4, 253, 149, 53, 54, 158, 10, 37, 38, + 39, 219, 16, 221, 43, 19, 3, 9, 5, 192, + 4, 173, 9, 4, 4, 219, 10, 221, 5, 10, + 10, 204, 9, 4, 296, 4, 348, 4, 57, 10, + 4, 10, 3, 10, 8, 296, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 50, 51, 52, + 5, 6, 7, 56, 374, 58, 59, 60, 61, 4, + 63, 64, 193, 252, 195, 10, 255, 4, 314, 3, + 373, 4, 5, 10, 324, 3, 9, 295, 4, 196, + 197, 372, 5, 50, 371, 4, 9, 270, 271, 272, + 273, 295, 3, 365, 4, 5, 3, 369, 316, 9, + 350, 351, 352, 353, 61, 8, 63, 64, 369, 3, + 4, 433, 316, 40, 41, 42, 43, 44, 390, 3, + 392, 393, 52, 53, 54, 3, 57, 5, 317, 318, + 4, 403, 52, 53, 54, 25, 26, 53, 54, 4, + 39, 4, 3, 3, 3, 395, 4, 4, 4, 367, + 3, 5, 4, 4, 3, 40, 11, 374, 4, 4, + 8, 3, 3, 367, 382, 4, 373, 374, 440, 4, + 4, 354, 355, 445, 4, 306, 293, 4, 382, 368, + 4, 431, 328, 329, 330, 331, 4, 4, 4, 4, + 10, 12, 59, 3, 41, 4, 15, 328, 329, 330, + 331, 13, 14, 15, 4, 17, 4, 4, 20, 21, + 22, 23, 24, 4, 10, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 10, 16, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 16, 4, + 52, 53, 54, 55, 3, 16, 13, 14, 15, 4, + 17, 63, 64, 20, 21, 22, 23, 24, 4, 4, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 4, 3, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 13, 14, 15, 4, 17, 4, 4, + 20, 21, 22, 23, 24, 62, 4, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 10, + 3, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 13, 14, 15, 3, 17, 4, 4, 20, 21, 22, + 23, 24, 3, 16, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 4, 3, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 13, 14, 15, + 4, 17, 4, 4, 20, 21, 22, 23, 24, 4, + 4, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 4, 3, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 13, 14, 15, 54, 17, 3, + 3, 20, 21, 22, 23, 24, 4, 19, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 3, 3, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 13, 14, 15, 19, 17, 4, 4, 20, 21, + 22, 23, 24, 4, 61, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 154, 59, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 13, 14, + 15, 371, 17, 110, 338, 20, 21, 22, 23, 24, + 214, 356, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 436, 446, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 255, 317, 162, 53, 54, + 55, 13, 14, 15, 228, 17, 145, 135, 20, 21, + 22, 23, 24, 120, 173, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 343, 158, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 61, 20, + 13, 14, 15, 55, 17, 18, 181, 20, 21, 22, + 23, 24, -1, -1, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, -1, -1, 41, 42, + 43, 44, 45, 46, 47, 48, 49, -1, 13, 14, + 15, 54, 17, -1, -1, 20, 21, 22, 23, 24, + -1, -1, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, -1, -1, 41, 42, 43, 44, + 45, 46, 47, 48, 49, -1, 13, 14, 15, 54, + 17, 18, -1, 20, 21, 22, 23, 24, -1, -1, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 13, 14, 15, -1, 17, -1, -1, + 20, 21, 22, 23, 24, -1, -1, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, -1, + -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, + -1, 50, 51, 52, -1, -1, -1, 56, 57, 58, + 59, 60, 61, -1, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 3, 106, 115, 116, 118, 119, 121, 124, 127, - 129, 130, 131, 133, 134, 135, 136, 138, 139, 140, - 141, 144, 145, 45, 46, 47, 51, 52, 53, 54, - 55, 56, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 3, 131, 3, 140, 0, - 9, 89, 90, 5, 9, 85, 87, 3, 79, 90, - 89, 89, 89, 3, 87, 99, 114, 89, 87, 114, - 8, 75, 75, 75, 9, 137, 137, 3, 134, 134, - 134, 3, 138, 138, 138, 3, 134, 138, 138, 3, - 13, 14, 15, 17, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 84, 94, 95, - 96, 99, 103, 107, 110, 111, 112, 113, 125, 128, - 4, 45, 4, 79, 3, 10, 78, 122, 125, 128, - 8, 73, 132, 133, 3, 11, 77, 81, 83, 85, - 117, 125, 128, 15, 17, 20, 57, 95, 100, 114, - 88, 3, 82, 83, 120, 125, 128, 114, 73, 74, - 75, 3, 126, 137, 75, 75, 75, 75, 75, 143, - 4, 4, 75, 75, 75, 47, 48, 49, 50, 58, - 59, 90, 91, 91, 91, 87, 87, 88, 87, 87, - 87, 87, 87, 87, 87, 34, 92, 92, 5, 6, - 7, 86, 3, 110, 3, 103, 4, 3, 84, 108, - 109, 107, 3, 80, 4, 12, 103, 105, 4, 3, - 78, 122, 4, 8, 4, 3, 77, 85, 4, 81, - 117, 91, 91, 91, 105, 99, 104, 4, 88, 4, - 87, 56, 4, 82, 120, 74, 4, 3, 123, 45, - 51, 53, 55, 4, 4, 143, 4, 4, 4, 4, - 3, 4, 142, 4, 4, 4, 87, 76, 90, 76, - 76, 90, 75, 75, 3, 97, 98, 103, 98, 98, - 87, 35, 93, 93, 48, 49, 3, 108, 48, 49, - 4, 10, 54, 98, 3, 97, 99, 101, 102, 98, - 4, 104, 4, 74, 4, 45, 51, 53, 55, 4, - 87, 87, 87, 87, 4, 36, 4, 4, 10, 10, - 4, 4, 10, 75, 4, 49, 98, 16, 16, 19, - 16, 76, 90, 76, 76, 76, 4, 88, 18, 101, - 3, 99, 4, 89, 89, 89, 89, 4, 4, 4, - 4, 86, 111, 4, 3, 112, 113, 4, 4, 76, - 91, 91, 91, 91, 4, 10, 4, 4, 4, 4, - 103, 18, 99, 3, 80, 84, 78, 81, 82, 4, - 111, 113, 4, 103, 109, 4, 3, 4, 103, 4, - 4, 4, 4, 4, 16, 109, 49, 3, 4, 91, - 76, 19, 3, 4, 103, 19, 4, 103, 4 + 0, 3, 117, 126, 127, 129, 130, 132, 135, 138, + 140, 141, 142, 144, 145, 146, 147, 149, 150, 151, + 152, 155, 156, 50, 51, 52, 56, 57, 58, 59, + 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 3, 142, 3, 151, 0, + 9, 94, 95, 5, 9, 90, 92, 3, 84, 95, + 94, 94, 94, 3, 92, 106, 125, 94, 92, 125, + 8, 80, 80, 80, 9, 148, 148, 3, 145, 145, + 145, 3, 149, 149, 149, 3, 145, 149, 149, 3, + 13, 14, 15, 17, 20, 21, 22, 23, 24, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 89, 99, 100, 101, 106, 111, 112, 113, 114, 118, + 121, 122, 123, 124, 136, 139, 4, 50, 4, 84, + 3, 10, 83, 133, 136, 139, 8, 78, 143, 144, + 3, 11, 82, 86, 88, 90, 128, 136, 139, 15, + 17, 20, 62, 100, 107, 113, 125, 93, 3, 87, + 88, 131, 136, 139, 125, 78, 79, 80, 3, 137, + 148, 80, 80, 80, 80, 80, 154, 4, 4, 80, + 80, 80, 52, 53, 54, 55, 63, 64, 95, 96, + 96, 96, 92, 92, 93, 92, 92, 92, 92, 92, + 92, 92, 39, 97, 97, 5, 6, 7, 91, 3, + 121, 3, 114, 92, 92, 96, 4, 3, 89, 119, + 120, 118, 3, 85, 4, 12, 114, 116, 4, 3, + 83, 133, 4, 8, 4, 3, 82, 90, 4, 86, + 128, 96, 96, 96, 116, 106, 115, 4, 3, 93, + 4, 92, 61, 4, 87, 131, 79, 4, 3, 134, + 50, 56, 58, 60, 4, 4, 154, 4, 4, 4, + 4, 3, 4, 153, 4, 4, 4, 92, 81, 95, + 81, 81, 95, 80, 80, 3, 102, 103, 114, 103, + 103, 92, 40, 98, 98, 103, 53, 54, 3, 119, + 53, 54, 4, 10, 59, 103, 3, 102, 106, 109, + 110, 103, 4, 115, 15, 4, 79, 4, 50, 56, + 58, 60, 4, 92, 92, 92, 92, 4, 41, 4, + 4, 10, 10, 4, 4, 10, 80, 4, 54, 103, + 16, 16, 19, 16, 25, 26, 104, 105, 81, 95, + 81, 81, 81, 4, 93, 18, 109, 3, 106, 96, + 4, 94, 94, 94, 94, 4, 4, 4, 4, 91, + 122, 4, 3, 123, 124, 4, 4, 81, 96, 96, + 96, 96, 92, 92, 105, 16, 4, 10, 4, 4, + 4, 4, 114, 18, 106, 103, 3, 85, 89, 83, + 86, 87, 4, 122, 124, 4, 114, 114, 114, 96, + 120, 4, 3, 4, 114, 4, 4, 4, 4, 4, + 4, 16, 120, 54, 3, 4, 3, 108, 96, 81, + 19, 3, 104, 4, 114, 19, 4, 4, 114, 108, + 4 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 72, 73, 73, 74, 74, 75, 76, 76, 77, - 78, 78, 79, 80, 80, 80, 80, 81, 82, 83, - 83, 84, 85, 86, 86, 86, 87, 87, 88, 88, - 89, 89, 90, 91, 91, 92, 92, 93, 93, 94, - 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 96, 96, 96, 96, - 97, 98, 98, 99, 100, 100, 100, 100, 101, 101, - 102, 102, 102, 102, 102, 102, 103, 103, 104, 104, - 105, 106, 107, 107, 107, 107, 107, 108, 109, 109, - 109, 109, 110, 111, 111, 111, 111, 112, 113, 113, - 113, 114, 114, 115, 115, 116, 117, 117, 117, 117, - 118, 118, 119, 120, 120, 120, 120, 121, 122, 122, - 122, 123, 123, 123, 123, 123, 124, 125, 126, 126, - 126, 126, 127, 128, 129, 129, 130, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 132, 132, 133, - 133, 134, 134, 135, 136, 137, 137, 138, 138, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 140, 140, - 140, 140, 141, 141, 142, 143, 143, 144, 144, 144, - 145 + 0, 77, 78, 78, 79, 79, 80, 81, 81, 82, + 83, 83, 84, 85, 85, 85, 85, 86, 87, 88, + 88, 89, 90, 91, 91, 91, 92, 92, 93, 93, + 94, 94, 95, 96, 96, 97, 97, 98, 98, 99, + 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 101, 101, + 101, 101, 101, 102, 103, 103, 104, 104, 105, 105, + 106, 107, 107, 107, 107, 107, 108, 108, 109, 109, + 110, 110, 110, 110, 110, 110, 111, 112, 113, 114, + 114, 115, 115, 116, 117, 118, 118, 118, 118, 118, + 119, 120, 120, 120, 120, 121, 122, 122, 122, 122, + 123, 124, 124, 124, 125, 125, 126, 126, 127, 128, + 128, 128, 128, 129, 129, 130, 131, 131, 131, 131, + 132, 133, 133, 133, 134, 134, 134, 134, 134, 135, + 136, 137, 137, 137, 137, 138, 139, 140, 140, 141, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 143, 143, 144, 144, 145, 145, 146, 147, 148, 148, + 149, 149, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 151, 151, 151, 151, 152, 152, 153, 154, 154, + 155, 155, 155, 156 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1112,20 +1157,21 @@ static const yytype_uint8 yyr2[] = 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, - 1, 1, 1, 1, 1, 1, 5, 5, 5, 8, - 4, 2, 1, 3, 2, 3, 3, 3, 2, 1, - 8, 4, 9, 5, 3, 2, 0, 2, 0, 2, - 1, 5, 2, 1, 3, 2, 2, 1, 0, 4, - 5, 6, 1, 1, 5, 5, 6, 1, 1, 5, - 6, 4, 1, 6, 5, 5, 1, 2, 2, 5, - 6, 5, 5, 1, 2, 2, 4, 5, 2, 2, - 2, 5, 5, 5, 5, 5, 6, 5, 4, 4, - 4, 4, 5, 4, 4, 5, 4, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, - 2, 5, 5, 1, 1, 0, 1, 6, 5, 5, - 5, 5, 5, 5, 4, 4, 5, 5, 1, 1, - 1, 5, 1, 2, 4, 0, 2, 0, 1, 1, - 1 + 1, 1, 1, 1, 1, 1, 2, 2, 5, 5, + 5, 8, 6, 4, 2, 1, 3, 3, 1, 2, + 3, 2, 3, 3, 3, 7, 3, 4, 2, 1, + 8, 4, 9, 5, 3, 2, 1, 1, 1, 0, + 2, 0, 2, 1, 5, 2, 1, 3, 2, 2, + 1, 0, 4, 5, 6, 1, 1, 5, 5, 6, + 1, 1, 5, 6, 4, 1, 6, 5, 5, 1, + 2, 2, 5, 6, 5, 5, 1, 2, 2, 4, + 5, 2, 2, 2, 5, 5, 5, 5, 5, 6, + 5, 4, 4, 4, 4, 5, 4, 4, 5, 4, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 2, 5, 5, 1, 1, 0, 1, + 6, 5, 5, 5, 5, 5, 5, 4, 4, 5, + 5, 1, 1, 1, 5, 1, 2, 4, 0, 2, + 0, 1, 1, 1 }; @@ -1622,399 +1668,417 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio switch (yytype) { case 5: /* NAT */ -#line 205 "src/wast-parser.y" /* yacc.c:1257 */ +#line 218 "src/wast-parser.y" /* yacc.c:1257 */ {} -#line 1628 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1674 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; case 6: /* INT */ -#line 205 "src/wast-parser.y" /* yacc.c:1257 */ +#line 218 "src/wast-parser.y" /* yacc.c:1257 */ {} -#line 1634 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1680 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; case 7: /* FLOAT */ -#line 205 "src/wast-parser.y" /* yacc.c:1257 */ +#line 218 "src/wast-parser.y" /* yacc.c:1257 */ {} -#line 1640 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1686 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; case 8: /* TEXT */ -#line 205 "src/wast-parser.y" /* yacc.c:1257 */ +#line 218 "src/wast-parser.y" /* yacc.c:1257 */ {} -#line 1646 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1692 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; case 9: /* VAR */ -#line 205 "src/wast-parser.y" /* yacc.c:1257 */ +#line 218 "src/wast-parser.y" /* yacc.c:1257 */ {} -#line 1652 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1698 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 34: /* OFFSET_EQ_NAT */ -#line 205 "src/wast-parser.y" /* yacc.c:1257 */ + case 39: /* OFFSET_EQ_NAT */ +#line 218 "src/wast-parser.y" /* yacc.c:1257 */ {} -#line 1658 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1704 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 35: /* ALIGN_EQ_NAT */ -#line 205 "src/wast-parser.y" /* yacc.c:1257 */ + case 40: /* ALIGN_EQ_NAT */ +#line 218 "src/wast-parser.y" /* yacc.c:1257 */ {} -#line 1664 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1710 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 73: /* text_list */ -#line 225 "src/wast-parser.y" /* yacc.c:1257 */ + case 78: /* text_list */ +#line 238 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_text_list(&((*yyvaluep).text_list)); } -#line 1670 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1716 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 74: /* text_list_opt */ -#line 225 "src/wast-parser.y" /* yacc.c:1257 */ + case 79: /* text_list_opt */ +#line 238 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_text_list(&((*yyvaluep).text_list)); } -#line 1676 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1722 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 75: /* quoted_text */ -#line 206 "src/wast-parser.y" /* yacc.c:1257 */ + case 80: /* quoted_text */ +#line 219 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_string_slice(&((*yyvaluep).text)); } -#line 1682 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1728 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 76: /* value_type_list */ -#line 226 "src/wast-parser.y" /* yacc.c:1257 */ + case 81: /* value_type_list */ +#line 239 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).types); } -#line 1688 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1734 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 78: /* global_type */ -#line 219 "src/wast-parser.y" /* yacc.c:1257 */ + case 83: /* global_type */ +#line 232 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).global); } -#line 1694 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1740 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 79: /* func_type */ -#line 218 "src/wast-parser.y" /* yacc.c:1257 */ + case 84: /* func_type */ +#line 231 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).func_sig); } -#line 1700 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1746 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 80: /* func_sig */ -#line 218 "src/wast-parser.y" /* yacc.c:1257 */ + case 85: /* func_sig */ +#line 231 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).func_sig); } -#line 1706 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1752 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 82: /* memory_sig */ -#line 221 "src/wast-parser.y" /* yacc.c:1257 */ + case 87: /* memory_sig */ +#line 234 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).memory); } -#line 1712 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1758 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 84: /* type_use */ -#line 227 "src/wast-parser.y" /* yacc.c:1257 */ + case 89: /* type_use */ +#line 240 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_var(&((*yyvaluep).var)); } -#line 1718 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1764 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 86: /* literal */ -#line 207 "src/wast-parser.y" /* yacc.c:1257 */ + case 91: /* literal */ +#line 220 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_string_slice(&((*yyvaluep).literal).text); } -#line 1724 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1770 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 87: /* var */ -#line 227 "src/wast-parser.y" /* yacc.c:1257 */ + case 92: /* var */ +#line 240 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_var(&((*yyvaluep).var)); } -#line 1730 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1776 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 88: /* var_list */ -#line 228 "src/wast-parser.y" /* yacc.c:1257 */ + case 93: /* var_list */ +#line 241 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).vars); } -#line 1736 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1782 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 89: /* bind_var_opt */ -#line 206 "src/wast-parser.y" /* yacc.c:1257 */ + case 94: /* bind_var_opt */ +#line 219 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_string_slice(&((*yyvaluep).text)); } -#line 1742 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1788 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 90: /* bind_var */ -#line 206 "src/wast-parser.y" /* yacc.c:1257 */ + case 95: /* bind_var */ +#line 219 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_string_slice(&((*yyvaluep).text)); } -#line 1748 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1794 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 91: /* labeling_opt */ -#line 206 "src/wast-parser.y" /* yacc.c:1257 */ + case 96: /* labeling_opt */ +#line 219 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_string_slice(&((*yyvaluep).text)); } -#line 1754 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1800 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 94: /* instr */ -#line 215 "src/wast-parser.y" /* yacc.c:1257 */ + case 99: /* instr */ +#line 228 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_expr_list(((*yyvaluep).expr_list).first); } -#line 1760 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1806 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 95: /* plain_instr */ -#line 214 "src/wast-parser.y" /* yacc.c:1257 */ + case 100: /* plain_instr */ +#line 227 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).expr); } -#line 1766 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1812 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 96: /* block_instr */ -#line 214 "src/wast-parser.y" /* yacc.c:1257 */ + case 101: /* block_instr */ +#line 227 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).expr); } -#line 1772 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1818 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 97: /* block_sig */ -#line 226 "src/wast-parser.y" /* yacc.c:1257 */ + case 102: /* block_sig */ +#line 239 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).types); } -#line 1778 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1824 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 98: /* block */ -#line 209 "src/wast-parser.y" /* yacc.c:1257 */ + case 103: /* block */ +#line 222 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).block); } -#line 1784 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1830 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ + break; + + case 104: /* catch_instr */ +#line 228 "src/wast-parser.y" /* yacc.c:1257 */ + { destroy_expr_list(((*yyvaluep).expr_list).first); } +#line 1836 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ + break; + + case 105: /* catch_instr_list */ +#line 228 "src/wast-parser.y" /* yacc.c:1257 */ + { destroy_expr_list(((*yyvaluep).expr_list).first); } +#line 1842 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ + break; + + case 106: /* expr */ +#line 228 "src/wast-parser.y" /* yacc.c:1257 */ + { destroy_expr_list(((*yyvaluep).expr_list).first); } +#line 1848 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 99: /* expr */ -#line 215 "src/wast-parser.y" /* yacc.c:1257 */ + case 107: /* expr1 */ +#line 228 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_expr_list(((*yyvaluep).expr_list).first); } -#line 1790 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1854 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 100: /* expr1 */ -#line 215 "src/wast-parser.y" /* yacc.c:1257 */ + case 108: /* catch_list */ +#line 228 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_expr_list(((*yyvaluep).expr_list).first); } -#line 1796 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1860 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 101: /* if_block */ -#line 215 "src/wast-parser.y" /* yacc.c:1257 */ + case 109: /* if_block */ +#line 228 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_expr_list(((*yyvaluep).expr_list).first); } -#line 1802 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1866 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 102: /* if_ */ -#line 215 "src/wast-parser.y" /* yacc.c:1257 */ + case 110: /* if_ */ +#line 228 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_expr_list(((*yyvaluep).expr_list).first); } -#line 1808 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1872 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 103: /* instr_list */ -#line 215 "src/wast-parser.y" /* yacc.c:1257 */ + case 114: /* instr_list */ +#line 228 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_expr_list(((*yyvaluep).expr_list).first); } -#line 1814 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1878 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 104: /* expr_list */ -#line 215 "src/wast-parser.y" /* yacc.c:1257 */ + case 115: /* expr_list */ +#line 228 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_expr_list(((*yyvaluep).expr_list).first); } -#line 1820 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1884 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 105: /* const_expr */ -#line 215 "src/wast-parser.y" /* yacc.c:1257 */ + case 116: /* const_expr */ +#line 228 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_expr_list(((*yyvaluep).expr_list).first); } -#line 1826 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1890 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 106: /* func */ -#line 216 "src/wast-parser.y" /* yacc.c:1257 */ + case 117: /* func */ +#line 229 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_module_field_list(&((*yyvaluep).module_fields)); } -#line 1832 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1896 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 107: /* func_fields */ -#line 216 "src/wast-parser.y" /* yacc.c:1257 */ + case 118: /* func_fields */ +#line 229 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_module_field_list(&((*yyvaluep).module_fields)); } -#line 1838 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1902 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 108: /* func_fields_import */ -#line 217 "src/wast-parser.y" /* yacc.c:1257 */ + case 119: /* func_fields_import */ +#line 230 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).func); } -#line 1844 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1908 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 109: /* func_fields_import1 */ -#line 217 "src/wast-parser.y" /* yacc.c:1257 */ + case 120: /* func_fields_import1 */ +#line 230 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).func); } -#line 1850 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1914 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 110: /* func_fields_body */ -#line 217 "src/wast-parser.y" /* yacc.c:1257 */ + case 121: /* func_fields_body */ +#line 230 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).func); } -#line 1856 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1920 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 111: /* func_fields_body1 */ -#line 217 "src/wast-parser.y" /* yacc.c:1257 */ + case 122: /* func_fields_body1 */ +#line 230 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).func); } -#line 1862 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1926 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 112: /* func_body */ -#line 217 "src/wast-parser.y" /* yacc.c:1257 */ + case 123: /* func_body */ +#line 230 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).func); } -#line 1868 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1932 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 113: /* func_body1 */ -#line 217 "src/wast-parser.y" /* yacc.c:1257 */ + case 124: /* func_body1 */ +#line 230 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).func); } -#line 1874 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1938 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 114: /* offset */ -#line 215 "src/wast-parser.y" /* yacc.c:1257 */ + case 125: /* offset */ +#line 228 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_expr_list(((*yyvaluep).expr_list).first); } -#line 1880 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1944 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 116: /* table */ -#line 216 "src/wast-parser.y" /* yacc.c:1257 */ + case 127: /* table */ +#line 229 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_module_field_list(&((*yyvaluep).module_fields)); } -#line 1886 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1950 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 117: /* table_fields */ -#line 216 "src/wast-parser.y" /* yacc.c:1257 */ + case 128: /* table_fields */ +#line 229 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_module_field_list(&((*yyvaluep).module_fields)); } -#line 1892 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1956 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 119: /* memory */ -#line 216 "src/wast-parser.y" /* yacc.c:1257 */ + case 130: /* memory */ +#line 229 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_module_field_list(&((*yyvaluep).module_fields)); } -#line 1898 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1962 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 120: /* memory_fields */ -#line 216 "src/wast-parser.y" /* yacc.c:1257 */ + case 131: /* memory_fields */ +#line 229 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_module_field_list(&((*yyvaluep).module_fields)); } -#line 1904 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1968 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 121: /* global */ -#line 216 "src/wast-parser.y" /* yacc.c:1257 */ + case 132: /* global */ +#line 229 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_module_field_list(&((*yyvaluep).module_fields)); } -#line 1910 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1974 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 122: /* global_fields */ -#line 216 "src/wast-parser.y" /* yacc.c:1257 */ + case 133: /* global_fields */ +#line 229 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_module_field_list(&((*yyvaluep).module_fields)); } -#line 1916 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1980 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 123: /* import_desc */ -#line 220 "src/wast-parser.y" /* yacc.c:1257 */ + case 134: /* import_desc */ +#line 233 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).import); } -#line 1922 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1986 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 125: /* inline_import */ -#line 220 "src/wast-parser.y" /* yacc.c:1257 */ + case 136: /* inline_import */ +#line 233 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).import); } -#line 1928 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1992 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 126: /* export_desc */ -#line 213 "src/wast-parser.y" /* yacc.c:1257 */ + case 137: /* export_desc */ +#line 226 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).export_); } -#line 1934 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 1998 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 128: /* inline_export */ -#line 213 "src/wast-parser.y" /* yacc.c:1257 */ + case 139: /* inline_export */ +#line 226 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).export_); } -#line 1940 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2004 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 131: /* module_field */ -#line 216 "src/wast-parser.y" /* yacc.c:1257 */ + case 142: /* module_field */ +#line 229 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_module_field_list(&((*yyvaluep).module_fields)); } -#line 1946 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2010 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 132: /* module_fields_opt */ -#line 222 "src/wast-parser.y" /* yacc.c:1257 */ + case 143: /* module_fields_opt */ +#line 235 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).module); } -#line 1952 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2016 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 133: /* module_fields */ -#line 222 "src/wast-parser.y" /* yacc.c:1257 */ + case 144: /* module_fields */ +#line 235 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).module); } -#line 1958 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2022 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 134: /* raw_module */ -#line 223 "src/wast-parser.y" /* yacc.c:1257 */ + case 145: /* raw_module */ +#line 236 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).raw_module); } -#line 1964 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2028 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 135: /* module */ -#line 222 "src/wast-parser.y" /* yacc.c:1257 */ + case 146: /* module */ +#line 235 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).module); } -#line 1970 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2034 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 136: /* inline_module */ -#line 222 "src/wast-parser.y" /* yacc.c:1257 */ + case 147: /* inline_module */ +#line 235 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).module); } -#line 1976 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2040 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 137: /* script_var_opt */ -#line 227 "src/wast-parser.y" /* yacc.c:1257 */ + case 148: /* script_var_opt */ +#line 240 "src/wast-parser.y" /* yacc.c:1257 */ { destroy_var(&((*yyvaluep).var)); } -#line 1982 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2046 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 138: /* action */ -#line 208 "src/wast-parser.y" /* yacc.c:1257 */ + case 149: /* action */ +#line 221 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).action); } -#line 1988 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2052 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 139: /* assertion */ -#line 210 "src/wast-parser.y" /* yacc.c:1257 */ + case 150: /* assertion */ +#line 223 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).command); } -#line 1994 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2058 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 140: /* cmd */ -#line 210 "src/wast-parser.y" /* yacc.c:1257 */ + case 151: /* cmd */ +#line 223 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).command); } -#line 2000 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2064 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 141: /* cmd_list */ -#line 211 "src/wast-parser.y" /* yacc.c:1257 */ + case 152: /* cmd_list */ +#line 224 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).commands); } -#line 2006 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2070 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 143: /* const_list */ -#line 212 "src/wast-parser.y" /* yacc.c:1257 */ + case 154: /* const_list */ +#line 225 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).consts); } -#line 2012 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2076 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; - case 144: /* script */ -#line 224 "src/wast-parser.y" /* yacc.c:1257 */ + case 155: /* script */ +#line 237 "src/wast-parser.y" /* yacc.c:1257 */ { delete ((*yyvaluep).script); } -#line 2018 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ +#line 2082 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */ break; @@ -2306,18 +2370,18 @@ yyreduce: switch (yyn) { case 2: -#line 241 "src/wast-parser.y" /* yacc.c:1646 */ +#line 254 "src/wast-parser.y" /* yacc.c:1646 */ { TextListNode* node = new TextListNode(); DUPTEXT(node->text, (yyvsp[0].text)); node->next = nullptr; (yyval.text_list).first = (yyval.text_list).last = node; } -#line 2317 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2381 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 3: -#line 247 "src/wast-parser.y" /* yacc.c:1646 */ +#line 260 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.text_list) = (yyvsp[-1].text_list); TextListNode* node = new TextListNode(); @@ -2326,17 +2390,17 @@ yyreduce: (yyval.text_list).last->next = node; (yyval.text_list).last = node; } -#line 2330 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2394 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 4: -#line 257 "src/wast-parser.y" /* yacc.c:1646 */ +#line 270 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.text_list).first = (yyval.text_list).last = nullptr; } -#line 2336 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2400 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 6: -#line 262 "src/wast-parser.y" /* yacc.c:1646 */ +#line 275 "src/wast-parser.y" /* yacc.c:1646 */ { TextListNode node; node.text = (yyvsp[0].text); @@ -2350,74 +2414,74 @@ yyreduce: (yyval.text).start = data; (yyval.text).length = size; } -#line 2354 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2418 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 7: -#line 280 "src/wast-parser.y" /* yacc.c:1646 */ +#line 293 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.types) = new TypeVector(); } -#line 2360 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2424 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 8: -#line 281 "src/wast-parser.y" /* yacc.c:1646 */ +#line 294 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.types) = (yyvsp[-1].types); (yyval.types)->push_back((yyvsp[0].type)); } -#line 2369 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2433 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 9: -#line 287 "src/wast-parser.y" /* yacc.c:1646 */ +#line 300 "src/wast-parser.y" /* yacc.c:1646 */ {} -#line 2375 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2439 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 10: -#line 290 "src/wast-parser.y" /* yacc.c:1646 */ +#line 303 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.global) = new Global(); (yyval.global)->type = (yyvsp[0].type); (yyval.global)->mutable_ = false; } -#line 2385 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2449 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 11: -#line 295 "src/wast-parser.y" /* yacc.c:1646 */ +#line 308 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.global) = new Global(); (yyval.global)->type = (yyvsp[-1].type); (yyval.global)->mutable_ = true; } -#line 2395 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2459 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 12: -#line 302 "src/wast-parser.y" /* yacc.c:1646 */ +#line 315 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func_sig) = (yyvsp[-1].func_sig); } -#line 2401 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2465 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 13: -#line 305 "src/wast-parser.y" /* yacc.c:1646 */ +#line 318 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func_sig) = new FuncSignature(); } -#line 2407 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2471 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 14: -#line 306 "src/wast-parser.y" /* yacc.c:1646 */ +#line 319 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func_sig) = new FuncSignature(); (yyval.func_sig)->param_types = std::move(*(yyvsp[-1].types)); delete (yyvsp[-1].types); } -#line 2417 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2481 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 15: -#line 311 "src/wast-parser.y" /* yacc.c:1646 */ +#line 324 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func_sig) = new FuncSignature(); (yyval.func_sig)->param_types = std::move(*(yyvsp[-5].types)); @@ -2425,65 +2489,65 @@ yyreduce: (yyval.func_sig)->result_types = std::move(*(yyvsp[-1].types)); delete (yyvsp[-1].types); } -#line 2429 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2493 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 16: -#line 318 "src/wast-parser.y" /* yacc.c:1646 */ +#line 331 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func_sig) = new FuncSignature(); (yyval.func_sig)->result_types = std::move(*(yyvsp[-1].types)); delete (yyvsp[-1].types); } -#line 2439 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2503 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 17: -#line 326 "src/wast-parser.y" /* yacc.c:1646 */ +#line 339 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.table) = new Table(); (yyval.table)->elem_limits = (yyvsp[-1].limits); } -#line 2448 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2512 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 18: -#line 332 "src/wast-parser.y" /* yacc.c:1646 */ +#line 345 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.memory) = new Memory(); (yyval.memory)->page_limits = (yyvsp[0].limits); } -#line 2457 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2521 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 19: -#line 338 "src/wast-parser.y" /* yacc.c:1646 */ +#line 351 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.limits).has_max = false; (yyval.limits).initial = (yyvsp[0].u64); (yyval.limits).max = 0; } -#line 2467 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2531 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 20: -#line 343 "src/wast-parser.y" /* yacc.c:1646 */ +#line 356 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.limits).has_max = true; (yyval.limits).initial = (yyvsp[-1].u64); (yyval.limits).max = (yyvsp[0].u64); } -#line 2477 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2541 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 21: -#line 350 "src/wast-parser.y" /* yacc.c:1646 */ +#line 363 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.var) = (yyvsp[-1].var); } -#line 2483 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2547 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 22: -#line 356 "src/wast-parser.y" /* yacc.c:1646 */ +#line 369 "src/wast-parser.y" /* yacc.c:1646 */ { if (WABT_FAILED(parse_uint64((yyvsp[0].literal).text.start, (yyvsp[0].literal).text.start + (yyvsp[0].literal).text.length, &(yyval.u64)))) { @@ -2492,97 +2556,97 @@ yyreduce: WABT_PRINTF_STRING_SLICE_ARG((yyvsp[0].literal).text)); } } -#line 2496 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2560 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 23: -#line 367 "src/wast-parser.y" /* yacc.c:1646 */ +#line 380 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.literal).type = (yyvsp[0].literal).type; DUPTEXT((yyval.literal).text, (yyvsp[0].literal).text); } -#line 2505 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2569 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 24: -#line 371 "src/wast-parser.y" /* yacc.c:1646 */ +#line 384 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.literal).type = (yyvsp[0].literal).type; DUPTEXT((yyval.literal).text, (yyvsp[0].literal).text); } -#line 2514 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2578 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 25: -#line 375 "src/wast-parser.y" /* yacc.c:1646 */ +#line 388 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.literal).type = (yyvsp[0].literal).type; DUPTEXT((yyval.literal).text, (yyvsp[0].literal).text); } -#line 2523 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2587 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 26: -#line 382 "src/wast-parser.y" /* yacc.c:1646 */ +#line 395 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.var).loc = (yylsp[0]); (yyval.var).type = VarType::Index; (yyval.var).index = (yyvsp[0].u64); } -#line 2533 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2597 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 27: -#line 387 "src/wast-parser.y" /* yacc.c:1646 */ +#line 400 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.var).loc = (yylsp[0]); (yyval.var).type = VarType::Name; DUPTEXT((yyval.var).name, (yyvsp[0].text)); } -#line 2543 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2607 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 28: -#line 394 "src/wast-parser.y" /* yacc.c:1646 */ +#line 407 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.vars) = new VarVector(); } -#line 2549 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2613 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 29: -#line 395 "src/wast-parser.y" /* yacc.c:1646 */ +#line 408 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.vars) = (yyvsp[-1].vars); (yyval.vars)->push_back((yyvsp[0].var)); } -#line 2558 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2622 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 30: -#line 401 "src/wast-parser.y" /* yacc.c:1646 */ +#line 414 "src/wast-parser.y" /* yacc.c:1646 */ { WABT_ZERO_MEMORY((yyval.text)); } -#line 2564 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2628 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 32: -#line 405 "src/wast-parser.y" /* yacc.c:1646 */ +#line 418 "src/wast-parser.y" /* yacc.c:1646 */ { DUPTEXT((yyval.text), (yyvsp[0].text)); } -#line 2570 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2634 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 33: -#line 409 "src/wast-parser.y" /* yacc.c:1646 */ +#line 422 "src/wast-parser.y" /* yacc.c:1646 */ { WABT_ZERO_MEMORY((yyval.text)); } -#line 2576 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2640 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 35: -#line 414 "src/wast-parser.y" /* yacc.c:1646 */ +#line 427 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.u64) = 0; } -#line 2582 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2646 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 36: -#line 415 "src/wast-parser.y" /* yacc.c:1646 */ +#line 428 "src/wast-parser.y" /* yacc.c:1646 */ { if (WABT_FAILED(parse_int64((yyvsp[0].text).start, (yyvsp[0].text).start + (yyvsp[0].text).length, &(yyval.u64), ParseIntType::SignedAndUnsigned))) { @@ -2591,17 +2655,17 @@ yyreduce: WABT_PRINTF_STRING_SLICE_ARG((yyvsp[0].text))); } } -#line 2595 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2659 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 37: -#line 425 "src/wast-parser.y" /* yacc.c:1646 */ +#line 438 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.u32) = USE_NATURAL_ALIGNMENT; } -#line 2601 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2665 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 38: -#line 426 "src/wast-parser.y" /* yacc.c:1646 */ +#line 439 "src/wast-parser.y" /* yacc.c:1646 */ { if (WABT_FAILED(parse_int32((yyvsp[0].text).start, (yyvsp[0].text).start + (yyvsp[0].text).length, &(yyval.u32), ParseIntType::UnsignedOnly))) { @@ -2610,165 +2674,159 @@ yyreduce: WABT_PRINTF_STRING_SLICE_ARG((yyvsp[0].text))); } } -#line 2614 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2678 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 39: -#line 437 "src/wast-parser.y" /* yacc.c:1646 */ +#line 450 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr_list) = join_exprs1(&(yylsp[0]), (yyvsp[0].expr)); } -#line 2620 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2684 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 40: -#line 438 "src/wast-parser.y" /* yacc.c:1646 */ +#line 451 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr_list) = join_exprs1(&(yylsp[0]), (yyvsp[0].expr)); } -#line 2626 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ - break; - - case 41: -#line 439 "src/wast-parser.y" /* yacc.c:1646 */ - { (yyval.expr_list) = (yyvsp[0].expr_list); } -#line 2632 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2690 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 42: -#line 442 "src/wast-parser.y" /* yacc.c:1646 */ +#line 456 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateUnreachable(); } -#line 2640 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2698 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 43: -#line 445 "src/wast-parser.y" /* yacc.c:1646 */ +#line 459 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateNop(); } -#line 2648 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2706 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 44: -#line 448 "src/wast-parser.y" /* yacc.c:1646 */ +#line 462 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateDrop(); } -#line 2656 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2714 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 45: -#line 451 "src/wast-parser.y" /* yacc.c:1646 */ +#line 465 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateSelect(); } -#line 2664 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2722 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 46: -#line 454 "src/wast-parser.y" /* yacc.c:1646 */ +#line 468 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateBr((yyvsp[0].var)); } -#line 2672 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2730 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 47: -#line 457 "src/wast-parser.y" /* yacc.c:1646 */ +#line 471 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateBrIf((yyvsp[0].var)); } -#line 2680 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2738 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 48: -#line 460 "src/wast-parser.y" /* yacc.c:1646 */ +#line 474 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateBrTable((yyvsp[-1].vars), (yyvsp[0].var)); } -#line 2688 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2746 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 49: -#line 463 "src/wast-parser.y" /* yacc.c:1646 */ +#line 477 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateReturn(); } -#line 2696 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2754 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 50: -#line 466 "src/wast-parser.y" /* yacc.c:1646 */ +#line 480 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateCall((yyvsp[0].var)); } -#line 2704 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2762 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 51: -#line 469 "src/wast-parser.y" /* yacc.c:1646 */ +#line 483 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateCallIndirect((yyvsp[0].var)); } -#line 2712 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2770 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 52: -#line 472 "src/wast-parser.y" /* yacc.c:1646 */ +#line 486 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateGetLocal((yyvsp[0].var)); } -#line 2720 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2778 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 53: -#line 475 "src/wast-parser.y" /* yacc.c:1646 */ +#line 489 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateSetLocal((yyvsp[0].var)); } -#line 2728 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2786 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 54: -#line 478 "src/wast-parser.y" /* yacc.c:1646 */ +#line 492 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateTeeLocal((yyvsp[0].var)); } -#line 2736 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2794 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 55: -#line 481 "src/wast-parser.y" /* yacc.c:1646 */ +#line 495 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateGetGlobal((yyvsp[0].var)); } -#line 2744 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2802 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 56: -#line 484 "src/wast-parser.y" /* yacc.c:1646 */ +#line 498 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateSetGlobal((yyvsp[0].var)); } -#line 2752 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2810 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 57: -#line 487 "src/wast-parser.y" /* yacc.c:1646 */ +#line 501 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateLoad((yyvsp[-2].opcode), (yyvsp[0].u32), (yyvsp[-1].u64)); } -#line 2760 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2818 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 58: -#line 490 "src/wast-parser.y" /* yacc.c:1646 */ +#line 504 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateStore((yyvsp[-2].opcode), (yyvsp[0].u32), (yyvsp[-1].u64)); } -#line 2768 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2826 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 59: -#line 493 "src/wast-parser.y" /* yacc.c:1646 */ +#line 507 "src/wast-parser.y" /* yacc.c:1646 */ { Const const_; WABT_ZERO_MEMORY(const_); @@ -2782,170 +2840,248 @@ yyreduce: delete [] (yyvsp[0].literal).text.start; (yyval.expr) = Expr::CreateConst(const_); } -#line 2786 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2844 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 60: -#line 506 "src/wast-parser.y" /* yacc.c:1646 */ +#line 520 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateUnary((yyvsp[0].opcode)); } -#line 2794 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2852 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 61: -#line 509 "src/wast-parser.y" /* yacc.c:1646 */ +#line 523 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateBinary((yyvsp[0].opcode)); } -#line 2802 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2860 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 62: -#line 512 "src/wast-parser.y" /* yacc.c:1646 */ +#line 526 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateCompare((yyvsp[0].opcode)); } -#line 2810 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2868 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 63: -#line 515 "src/wast-parser.y" /* yacc.c:1646 */ +#line 529 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateConvert((yyvsp[0].opcode)); } -#line 2818 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2876 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 64: -#line 518 "src/wast-parser.y" /* yacc.c:1646 */ +#line 532 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateCurrentMemory(); } -#line 2826 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2884 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 65: -#line 521 "src/wast-parser.y" /* yacc.c:1646 */ +#line 535 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateGrowMemory(); } -#line 2834 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2892 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; case 66: -#line 526 "src/wast-parser.y" /* yacc.c:1646 */ +#line 538 "src/wast-parser.y" /* yacc.c:1646 */ + { + (yyval.expr) = Expr::CreateThrow((yyvsp[0].var)); + } +#line 2900 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ + break; + + case 67: +#line 541 "src/wast-parser.y" /* yacc.c:1646 */ + { + (yyval.expr) = Expr::CreateRethrow((yyvsp[0].var)); + } +#line 2908 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ + break; + + case 68: +#line 547 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateBlock((yyvsp[-2].block)); (yyval.expr)->block->label = (yyvsp[-3].text); CHECK_END_LABEL((yylsp[0]), (yyval.expr)->block->label, (yyvsp[0].text)); } -#line 2844 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2918 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 67: -#line 531 "src/wast-parser.y" /* yacc.c:1646 */ + case 69: +#line 552 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateLoop((yyvsp[-2].block)); (yyval.expr)->loop->label = (yyvsp[-3].text); CHECK_END_LABEL((yylsp[0]), (yyval.expr)->loop->label, (yyvsp[0].text)); } -#line 2854 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2928 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 68: -#line 536 "src/wast-parser.y" /* yacc.c:1646 */ + case 70: +#line 557 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateIf((yyvsp[-2].block), nullptr); (yyval.expr)->if_.true_->label = (yyvsp[-3].text); CHECK_END_LABEL((yylsp[0]), (yyval.expr)->if_.true_->label, (yyvsp[0].text)); } -#line 2864 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2938 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 69: -#line 541 "src/wast-parser.y" /* yacc.c:1646 */ + case 71: +#line 562 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = Expr::CreateIf((yyvsp[-5].block), (yyvsp[-2].expr_list).first); (yyval.expr)->if_.true_->label = (yyvsp[-6].text); CHECK_END_LABEL((yylsp[-3]), (yyval.expr)->if_.true_->label, (yyvsp[-3].text)); CHECK_END_LABEL((yylsp[0]), (yyval.expr)->if_.true_->label, (yyvsp[0].text)); } -#line 2875 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2949 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 70: -#line 549 "src/wast-parser.y" /* yacc.c:1646 */ + case 72: +#line 568 "src/wast-parser.y" /* yacc.c:1646 */ + { + (yyvsp[-3].block)->label = (yyvsp[-4].text); + (yyval.expr) = Expr::CreateTry((yyvsp[-3].block), (yyvsp[-2].expr_list).first); + CHECK_END_LABEL((yylsp[0]), (yyvsp[-3].block)->label, (yyvsp[0].text)); + } +#line 2959 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ + break; + + case 73: +#line 576 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.types) = (yyvsp[-1].types); } -#line 2881 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2965 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 71: -#line 552 "src/wast-parser.y" /* yacc.c:1646 */ + case 74: +#line 579 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.block) = (yyvsp[0].block); (yyval.block)->sig.insert((yyval.block)->sig.end(), (yyvsp[-1].types)->begin(), (yyvsp[-1].types)->end()); delete (yyvsp[-1].types); } -#line 2891 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2975 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 72: -#line 557 "src/wast-parser.y" /* yacc.c:1646 */ + case 75: +#line 584 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.block) = new Block(); (yyval.block)->first = (yyvsp[0].expr_list).first; } -#line 2900 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 2984 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 73: -#line 564 "src/wast-parser.y" /* yacc.c:1646 */ + case 76: +#line 591 "src/wast-parser.y" /* yacc.c:1646 */ + { + Expr* expr = Expr::CreateCatch((yyvsp[-1].var), (yyvsp[0].expr_list).first); + (yyval.expr_list) = join_exprs1(&(yylsp[-2]), expr); + } +#line 2993 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ + break; + + case 77: +#line 595 "src/wast-parser.y" /* yacc.c:1646 */ + { + Expr* expr = Expr::CreateCatchAll((yyvsp[-1].var), (yyvsp[0].expr_list).first); + (yyval.expr_list) = join_exprs1(&(yylsp[-2]), expr); + } +#line 3002 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ + break; + + case 79: +#line 603 "src/wast-parser.y" /* yacc.c:1646 */ + { + (yyval.expr_list) = join_expr_lists(&(yyvsp[-1].expr_list), &(yyvsp[0].expr_list)); + } +#line 3010 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ + break; + + case 80: +#line 609 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr_list) = (yyvsp[-1].expr_list); } -#line 2906 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3016 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 74: -#line 568 "src/wast-parser.y" /* yacc.c:1646 */ + case 81: +#line 613 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr_list) = join_exprs2(&(yylsp[-1]), &(yyvsp[0].expr_list), (yyvsp[-1].expr)); } -#line 2914 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3024 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 75: -#line 571 "src/wast-parser.y" /* yacc.c:1646 */ + case 82: +#line 616 "src/wast-parser.y" /* yacc.c:1646 */ { Expr* expr = Expr::CreateBlock((yyvsp[0].block)); expr->block->label = (yyvsp[-1].text); (yyval.expr_list) = join_exprs1(&(yylsp[-2]), expr); } -#line 2924 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3034 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 76: -#line 576 "src/wast-parser.y" /* yacc.c:1646 */ + case 83: +#line 621 "src/wast-parser.y" /* yacc.c:1646 */ { Expr* expr = Expr::CreateLoop((yyvsp[0].block)); expr->loop->label = (yyvsp[-1].text); (yyval.expr_list) = join_exprs1(&(yylsp[-2]), expr); } -#line 2934 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3044 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 77: -#line 581 "src/wast-parser.y" /* yacc.c:1646 */ + case 84: +#line 626 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr_list) = (yyvsp[0].expr_list); Expr* if_ = (yyvsp[0].expr_list).last; assert(if_->type == ExprType::If); if_->if_.true_->label = (yyvsp[-1].text); } -#line 2945 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3055 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ + break; + + case 85: +#line 632 "src/wast-parser.y" /* yacc.c:1646 */ + { + (yyvsp[-2].block)->label = (yyvsp[-3].text); + Expr* try_ = Expr::CreateTry((yyvsp[-2].block), (yyvsp[0].expr_list).first); + (yyval.expr_list) = join_exprs1(&(yylsp[-6]), try_); + } +#line 3065 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ + break; + + case 86: +#line 640 "src/wast-parser.y" /* yacc.c:1646 */ + { + (yyval.expr_list) = (yyvsp[-1].expr_list); + } +#line 3073 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ + break; + + case 87: +#line 643 "src/wast-parser.y" /* yacc.c:1646 */ + { + (yyval.expr_list) = join_expr_lists(&(yyvsp[-2].expr_list), &(yyvsp[0].expr_list)); + } +#line 3081 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 78: -#line 589 "src/wast-parser.y" /* yacc.c:1646 */ + case 88: +#line 649 "src/wast-parser.y" /* yacc.c:1646 */ { Expr* if_ = (yyvsp[0].expr_list).last; assert(if_->type == ExprType::If); @@ -2954,99 +3090,123 @@ yyreduce: true_->sig.insert(true_->sig.end(), (yyvsp[-1].types)->begin(), (yyvsp[-1].types)->end()); delete (yyvsp[-1].types); } -#line 2958 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3094 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 80: -#line 600 "src/wast-parser.y" /* yacc.c:1646 */ + case 90: +#line 660 "src/wast-parser.y" /* yacc.c:1646 */ { Expr* expr = Expr::CreateIf(new Block((yyvsp[-5].expr_list).first), (yyvsp[-1].expr_list).first); (yyval.expr_list) = join_exprs1(&(yylsp[-7]), expr); } -#line 2967 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3103 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 81: -#line 604 "src/wast-parser.y" /* yacc.c:1646 */ + case 91: +#line 664 "src/wast-parser.y" /* yacc.c:1646 */ { Expr* expr = Expr::CreateIf(new Block((yyvsp[-1].expr_list).first), nullptr); (yyval.expr_list) = join_exprs1(&(yylsp[-3]), expr); } -#line 2976 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3112 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 82: -#line 608 "src/wast-parser.y" /* yacc.c:1646 */ + case 92: +#line 668 "src/wast-parser.y" /* yacc.c:1646 */ { Expr* expr = Expr::CreateIf(new Block((yyvsp[-5].expr_list).first), (yyvsp[-1].expr_list).first); (yyval.expr_list) = join_exprs2(&(yylsp[-8]), &(yyvsp[-8].expr_list), expr); } -#line 2985 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3121 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 83: -#line 612 "src/wast-parser.y" /* yacc.c:1646 */ + case 93: +#line 672 "src/wast-parser.y" /* yacc.c:1646 */ { Expr* expr = Expr::CreateIf(new Block((yyvsp[-1].expr_list).first), nullptr); (yyval.expr_list) = join_exprs2(&(yylsp[-4]), &(yyvsp[-4].expr_list), expr); } -#line 2994 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3130 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 84: -#line 616 "src/wast-parser.y" /* yacc.c:1646 */ + case 94: +#line 676 "src/wast-parser.y" /* yacc.c:1646 */ { Expr* expr = Expr::CreateIf(new Block((yyvsp[-1].expr_list).first), (yyvsp[0].expr_list).first); (yyval.expr_list) = join_exprs2(&(yylsp[-2]), &(yyvsp[-2].expr_list), expr); } -#line 3003 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3139 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 85: -#line 620 "src/wast-parser.y" /* yacc.c:1646 */ + case 95: +#line 680 "src/wast-parser.y" /* yacc.c:1646 */ { Expr* expr = Expr::CreateIf(new Block((yyvsp[0].expr_list).first), nullptr); (yyval.expr_list) = join_exprs2(&(yylsp[-1]), &(yyvsp[-1].expr_list), expr); } -#line 3012 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3148 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 86: -#line 627 "src/wast-parser.y" /* yacc.c:1646 */ + case 96: +#line 687 "src/wast-parser.y" /* yacc.c:1646 */ + { + CHECK_ALLOW_EXCEPTIONS(&(yylsp[0]), "rethrow"); + } +#line 3156 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ + break; + + case 97: +#line 692 "src/wast-parser.y" /* yacc.c:1646 */ + { + CHECK_ALLOW_EXCEPTIONS(&(yylsp[0]), "throw"); + } +#line 3164 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ + break; + + case 98: +#line 698 "src/wast-parser.y" /* yacc.c:1646 */ + { + CHECK_ALLOW_EXCEPTIONS(&(yylsp[0]), "try"); + } +#line 3172 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ + break; + + case 99: +#line 704 "src/wast-parser.y" /* yacc.c:1646 */ { WABT_ZERO_MEMORY((yyval.expr_list)); } -#line 3018 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3178 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 87: -#line 628 "src/wast-parser.y" /* yacc.c:1646 */ + case 100: +#line 705 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr_list).first = (yyvsp[-1].expr_list).first; (yyvsp[-1].expr_list).last->next = (yyvsp[0].expr_list).first; (yyval.expr_list).last = (yyvsp[0].expr_list).last ? (yyvsp[0].expr_list).last : (yyvsp[-1].expr_list).last; (yyval.expr_list).size = (yyvsp[-1].expr_list).size + (yyvsp[0].expr_list).size; } -#line 3029 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3189 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 88: -#line 636 "src/wast-parser.y" /* yacc.c:1646 */ + case 101: +#line 713 "src/wast-parser.y" /* yacc.c:1646 */ { WABT_ZERO_MEMORY((yyval.expr_list)); } -#line 3035 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3195 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 89: -#line 637 "src/wast-parser.y" /* yacc.c:1646 */ + case 102: +#line 714 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr_list).first = (yyvsp[-1].expr_list).first; (yyvsp[-1].expr_list).last->next = (yyvsp[0].expr_list).first; (yyval.expr_list).last = (yyvsp[0].expr_list).last ? (yyvsp[0].expr_list).last : (yyvsp[-1].expr_list).last; (yyval.expr_list).size = (yyvsp[-1].expr_list).size + (yyvsp[0].expr_list).size; } -#line 3046 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3206 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 91: -#line 650 "src/wast-parser.y" /* yacc.c:1646 */ + case 104: +#line 727 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_fields) = (yyvsp[-1].module_fields); ModuleField* main = (yyval.module_fields).first; @@ -3058,11 +3218,11 @@ yyreduce: main->import->func->name = (yyvsp[-2].text); } } -#line 3062 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3222 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 92: -#line 664 "src/wast-parser.y" /* yacc.c:1646 */ + case 105: +#line 741 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Func); field->func = (yyvsp[0].func); @@ -3070,21 +3230,21 @@ yyreduce: field->func->decl.type_var = (yyvsp[-1].var); (yyval.module_fields).first = (yyval.module_fields).last = field; } -#line 3074 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3234 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 93: -#line 671 "src/wast-parser.y" /* yacc.c:1646 */ + case 106: +#line 748 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Func); field->func = (yyvsp[0].func); (yyval.module_fields).first = (yyval.module_fields).last = field; } -#line 3084 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3244 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 94: -#line 676 "src/wast-parser.y" /* yacc.c:1646 */ + case 107: +#line 753 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Import); field->loc = (yylsp[-2]); @@ -3095,11 +3255,11 @@ yyreduce: field->import->func->decl.type_var = (yyvsp[-1].var); (yyval.module_fields).first = (yyval.module_fields).last = field; } -#line 3099 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3259 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 95: -#line 686 "src/wast-parser.y" /* yacc.c:1646 */ + case 108: +#line 763 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Import); field->loc = (yylsp[-1]); @@ -3108,11 +3268,11 @@ yyreduce: field->import->func = (yyvsp[0].func); (yyval.module_fields).first = (yyval.module_fields).last = field; } -#line 3112 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3272 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 96: -#line 694 "src/wast-parser.y" /* yacc.c:1646 */ + case 109: +#line 771 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Export); field->loc = (yylsp[-1]); @@ -3121,47 +3281,47 @@ yyreduce: (yyval.module_fields).first = (yyvsp[0].module_fields).first; (yyval.module_fields).last = (yyvsp[0].module_fields).last->next = field; } -#line 3125 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3285 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 97: -#line 705 "src/wast-parser.y" /* yacc.c:1646 */ + case 110: +#line 782 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func) = (yyvsp[0].func); reverse_bindings(&(yyval.func)->decl.sig.param_types, &(yyval.func)->param_bindings); } -#line 3134 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3294 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 98: -#line 712 "src/wast-parser.y" /* yacc.c:1646 */ + case 111: +#line 789 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func) = new Func(); } -#line 3140 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3300 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 99: -#line 713 "src/wast-parser.y" /* yacc.c:1646 */ + case 112: +#line 790 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func) = new Func(); (yyval.func)->decl.sig.result_types = std::move(*(yyvsp[-1].types)); delete (yyvsp[-1].types); } -#line 3150 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3310 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 100: -#line 718 "src/wast-parser.y" /* yacc.c:1646 */ + case 113: +#line 795 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func) = (yyvsp[0].func); (yyval.func)->decl.sig.param_types.insert((yyval.func)->decl.sig.param_types.begin(), (yyvsp[-2].types)->begin(), (yyvsp[-2].types)->end()); delete (yyvsp[-2].types); } -#line 3161 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3321 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 101: -#line 724 "src/wast-parser.y" /* yacc.c:1646 */ + case 114: +#line 801 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func) = (yyvsp[0].func); (yyval.func)->param_bindings.emplace(string_slice_to_string((yyvsp[-3].text)), @@ -3169,41 +3329,41 @@ yyreduce: destroy_string_slice(&(yyvsp[-3].text)); (yyval.func)->decl.sig.param_types.insert((yyval.func)->decl.sig.param_types.begin(), (yyvsp[-2].type)); } -#line 3173 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3333 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 102: -#line 734 "src/wast-parser.y" /* yacc.c:1646 */ + case 115: +#line 811 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func) = (yyvsp[0].func); reverse_bindings(&(yyval.func)->decl.sig.param_types, &(yyval.func)->param_bindings); } -#line 3182 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3342 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 104: -#line 742 "src/wast-parser.y" /* yacc.c:1646 */ + case 117: +#line 819 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func) = (yyvsp[0].func); (yyval.func)->decl.sig.result_types = std::move(*(yyvsp[-2].types)); delete (yyvsp[-2].types); } -#line 3192 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3352 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 105: -#line 747 "src/wast-parser.y" /* yacc.c:1646 */ + case 118: +#line 824 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func) = (yyvsp[0].func); (yyval.func)->decl.sig.param_types.insert((yyval.func)->decl.sig.param_types.begin(), (yyvsp[-2].types)->begin(), (yyvsp[-2].types)->end()); delete (yyvsp[-2].types); } -#line 3203 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3363 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 106: -#line 753 "src/wast-parser.y" /* yacc.c:1646 */ + case 119: +#line 830 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func) = (yyvsp[0].func); (yyval.func)->param_bindings.emplace(string_slice_to_string((yyvsp[-3].text)), @@ -3211,39 +3371,39 @@ yyreduce: destroy_string_slice(&(yyvsp[-3].text)); (yyval.func)->decl.sig.param_types.insert((yyval.func)->decl.sig.param_types.begin(), (yyvsp[-2].type)); } -#line 3215 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3375 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 107: -#line 763 "src/wast-parser.y" /* yacc.c:1646 */ + case 120: +#line 840 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func) = (yyvsp[0].func); reverse_bindings(&(yyval.func)->local_types, &(yyval.func)->local_bindings); } -#line 3224 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3384 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 108: -#line 770 "src/wast-parser.y" /* yacc.c:1646 */ + case 121: +#line 847 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func) = new Func(); (yyval.func)->first_expr = (yyvsp[0].expr_list).first; } -#line 3233 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3393 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 109: -#line 774 "src/wast-parser.y" /* yacc.c:1646 */ + case 122: +#line 851 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func) = (yyvsp[0].func); (yyval.func)->local_types.insert((yyval.func)->local_types.begin(), (yyvsp[-2].types)->begin(), (yyvsp[-2].types)->end()); delete (yyvsp[-2].types); } -#line 3243 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3403 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 110: -#line 779 "src/wast-parser.y" /* yacc.c:1646 */ + case 123: +#line 856 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.func) = (yyvsp[0].func); (yyval.func)->local_bindings.emplace(string_slice_to_string((yyvsp[-3].text)), @@ -3251,19 +3411,19 @@ yyreduce: destroy_string_slice(&(yyvsp[-3].text)); (yyval.func)->local_types.insert((yyval.func)->local_types.begin(), (yyvsp[-2].type)); } -#line 3255 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3415 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 111: -#line 791 "src/wast-parser.y" /* yacc.c:1646 */ + case 124: +#line 868 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.expr_list) = (yyvsp[-1].expr_list); } -#line 3263 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3423 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 113: -#line 798 "src/wast-parser.y" /* yacc.c:1646 */ + case 126: +#line 875 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_field) = new ModuleField(ModuleFieldType::ElemSegment); (yyval.module_field)->loc = (yylsp[-4]); @@ -3273,11 +3433,11 @@ yyreduce: (yyval.module_field)->elem_segment->vars = std::move(*(yyvsp[-1].vars)); delete (yyvsp[-1].vars); } -#line 3277 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3437 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 114: -#line 807 "src/wast-parser.y" /* yacc.c:1646 */ + case 127: +#line 884 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_field) = new ModuleField(ModuleFieldType::ElemSegment); (yyval.module_field)->loc = (yylsp[-3]); @@ -3289,11 +3449,11 @@ yyreduce: (yyval.module_field)->elem_segment->vars = std::move(*(yyvsp[-1].vars)); delete (yyvsp[-1].vars); } -#line 3293 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3453 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 115: -#line 821 "src/wast-parser.y" /* yacc.c:1646 */ + case 128: +#line 898 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_fields) = (yyvsp[-1].module_fields); ModuleField* main = (yyval.module_fields).first; @@ -3305,22 +3465,22 @@ yyreduce: main->import->table->name = (yyvsp[-2].text); } } -#line 3309 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3469 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 116: -#line 835 "src/wast-parser.y" /* yacc.c:1646 */ + case 129: +#line 912 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Table); field->loc = (yylsp[0]); field->table = (yyvsp[0].table); (yyval.module_fields).first = (yyval.module_fields).last = field; } -#line 3320 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3480 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 117: -#line 841 "src/wast-parser.y" /* yacc.c:1646 */ + case 130: +#line 918 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Import); field->loc = (yylsp[-1]); @@ -3329,11 +3489,11 @@ yyreduce: field->import->table = (yyvsp[0].table); (yyval.module_fields).first = (yyval.module_fields).last = field; } -#line 3333 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3493 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 118: -#line 849 "src/wast-parser.y" /* yacc.c:1646 */ + case 131: +#line 926 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Export); field->loc = (yylsp[-1]); @@ -3342,11 +3502,11 @@ yyreduce: (yyval.module_fields).first = (yyvsp[0].module_fields).first; (yyval.module_fields).last = (yyvsp[0].module_fields).last->next = field; } -#line 3346 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3506 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 119: -#line 857 "src/wast-parser.y" /* yacc.c:1646 */ + case 132: +#line 934 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* table_field = new ModuleField(ModuleFieldType::Table); Table* table = table_field->table = new Table(); @@ -3363,11 +3523,11 @@ yyreduce: (yyval.module_fields).first = table_field; (yyval.module_fields).last = table_field->next = elem_field; } -#line 3367 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3527 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 120: -#line 876 "src/wast-parser.y" /* yacc.c:1646 */ + case 133: +#line 953 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_field) = new ModuleField(ModuleFieldType::DataSegment); (yyval.module_field)->loc = (yylsp[-4]); @@ -3377,11 +3537,11 @@ yyreduce: dup_text_list(&(yyvsp[-1].text_list), &(yyval.module_field)->data_segment->data, &(yyval.module_field)->data_segment->size); destroy_text_list(&(yyvsp[-1].text_list)); } -#line 3381 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3541 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 121: -#line 885 "src/wast-parser.y" /* yacc.c:1646 */ + case 134: +#line 962 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_field) = new ModuleField(ModuleFieldType::DataSegment); (yyval.module_field)->loc = (yylsp[-3]); @@ -3393,11 +3553,11 @@ yyreduce: dup_text_list(&(yyvsp[-1].text_list), &(yyval.module_field)->data_segment->data, &(yyval.module_field)->data_segment->size); destroy_text_list(&(yyvsp[-1].text_list)); } -#line 3397 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3557 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 122: -#line 899 "src/wast-parser.y" /* yacc.c:1646 */ + case 135: +#line 976 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_fields) = (yyvsp[-1].module_fields); ModuleField* main = (yyval.module_fields).first; @@ -3409,21 +3569,21 @@ yyreduce: main->import->memory->name = (yyvsp[-2].text); } } -#line 3413 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3573 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 123: -#line 913 "src/wast-parser.y" /* yacc.c:1646 */ + case 136: +#line 990 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Memory); field->memory = (yyvsp[0].memory); (yyval.module_fields).first = (yyval.module_fields).last = field; } -#line 3423 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3583 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 124: -#line 918 "src/wast-parser.y" /* yacc.c:1646 */ + case 137: +#line 995 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Import); field->loc = (yylsp[-1]); @@ -3432,11 +3592,11 @@ yyreduce: field->import->memory = (yyvsp[0].memory); (yyval.module_fields).first = (yyval.module_fields).last = field; } -#line 3436 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3596 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 125: -#line 926 "src/wast-parser.y" /* yacc.c:1646 */ + case 138: +#line 1003 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Export); field->loc = (yylsp[-1]); @@ -3445,11 +3605,11 @@ yyreduce: (yyval.module_fields).first = (yyvsp[0].module_fields).first; (yyval.module_fields).last = (yyvsp[0].module_fields).last->next = field; } -#line 3449 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3609 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 126: -#line 934 "src/wast-parser.y" /* yacc.c:1646 */ + case 139: +#line 1011 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* data_field = new ModuleField(ModuleFieldType::DataSegment); data_field->loc = (yylsp[-2]); @@ -3470,11 +3630,11 @@ yyreduce: (yyval.module_fields).first = memory_field; (yyval.module_fields).last = memory_field->next = data_field; } -#line 3474 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3634 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 127: -#line 957 "src/wast-parser.y" /* yacc.c:1646 */ + case 140: +#line 1034 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_fields) = (yyvsp[-1].module_fields); ModuleField* main = (yyval.module_fields).first; @@ -3486,22 +3646,22 @@ yyreduce: main->import->global->name = (yyvsp[-2].text); } } -#line 3490 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3650 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 128: -#line 971 "src/wast-parser.y" /* yacc.c:1646 */ + case 141: +#line 1048 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Global); field->global = (yyvsp[-1].global); field->global->init_expr = (yyvsp[0].expr_list).first; (yyval.module_fields).first = (yyval.module_fields).last = field; } -#line 3501 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3661 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 129: -#line 977 "src/wast-parser.y" /* yacc.c:1646 */ + case 142: +#line 1054 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Import); field->loc = (yylsp[-1]); @@ -3510,11 +3670,11 @@ yyreduce: field->import->global = (yyvsp[0].global); (yyval.module_fields).first = (yyval.module_fields).last = field; } -#line 3514 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3674 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 130: -#line 985 "src/wast-parser.y" /* yacc.c:1646 */ + case 143: +#line 1062 "src/wast-parser.y" /* yacc.c:1646 */ { ModuleField* field = new ModuleField(ModuleFieldType::Export); field->loc = (yylsp[-1]); @@ -3523,11 +3683,11 @@ yyreduce: (yyval.module_fields).first = (yyvsp[0].module_fields).first; (yyval.module_fields).last = (yyvsp[0].module_fields).last->next = field; } -#line 3527 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3687 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 131: -#line 998 "src/wast-parser.y" /* yacc.c:1646 */ + case 144: +#line 1075 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new Import(); (yyval.import)->kind = ExternalKind::Func; @@ -3536,11 +3696,11 @@ yyreduce: (yyval.import)->func->decl.has_func_type = true; (yyval.import)->func->decl.type_var = (yyvsp[-1].var); } -#line 3540 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3700 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 132: -#line 1006 "src/wast-parser.y" /* yacc.c:1646 */ + case 145: +#line 1083 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new Import(); (yyval.import)->kind = ExternalKind::Func; @@ -3549,44 +3709,44 @@ yyreduce: (yyval.import)->func->decl.sig = std::move(*(yyvsp[-1].func_sig)); delete (yyvsp[-1].func_sig); } -#line 3553 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3713 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 133: -#line 1014 "src/wast-parser.y" /* yacc.c:1646 */ + case 146: +#line 1091 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new Import(); (yyval.import)->kind = ExternalKind::Table; (yyval.import)->table = (yyvsp[-1].table); (yyval.import)->table->name = (yyvsp[-2].text); } -#line 3564 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3724 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 134: -#line 1020 "src/wast-parser.y" /* yacc.c:1646 */ + case 147: +#line 1097 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new Import(); (yyval.import)->kind = ExternalKind::Memory; (yyval.import)->memory = (yyvsp[-1].memory); (yyval.import)->memory->name = (yyvsp[-2].text); } -#line 3575 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3735 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 135: -#line 1026 "src/wast-parser.y" /* yacc.c:1646 */ + case 148: +#line 1103 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new Import(); (yyval.import)->kind = ExternalKind::Global; (yyval.import)->global = (yyvsp[-1].global); (yyval.import)->global->name = (yyvsp[-2].text); } -#line 3586 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3746 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 136: -#line 1035 "src/wast-parser.y" /* yacc.c:1646 */ + case 149: +#line 1112 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_field) = new ModuleField(ModuleFieldType::Import); (yyval.module_field)->loc = (yylsp[-4]); @@ -3594,81 +3754,81 @@ yyreduce: (yyval.module_field)->import->module_name = (yyvsp[-3].text); (yyval.module_field)->import->field_name = (yyvsp[-2].text); } -#line 3598 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3758 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 137: -#line 1045 "src/wast-parser.y" /* yacc.c:1646 */ + case 150: +#line 1122 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new Import(); (yyval.import)->module_name = (yyvsp[-2].text); (yyval.import)->field_name = (yyvsp[-1].text); } -#line 3608 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3768 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 138: -#line 1053 "src/wast-parser.y" /* yacc.c:1646 */ + case 151: +#line 1130 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.export_) = new Export(); (yyval.export_)->kind = ExternalKind::Func; (yyval.export_)->var = (yyvsp[-1].var); } -#line 3618 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3778 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 139: -#line 1058 "src/wast-parser.y" /* yacc.c:1646 */ + case 152: +#line 1135 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.export_) = new Export(); (yyval.export_)->kind = ExternalKind::Table; (yyval.export_)->var = (yyvsp[-1].var); } -#line 3628 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3788 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 140: -#line 1063 "src/wast-parser.y" /* yacc.c:1646 */ + case 153: +#line 1140 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.export_) = new Export(); (yyval.export_)->kind = ExternalKind::Memory; (yyval.export_)->var = (yyvsp[-1].var); } -#line 3638 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3798 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 141: -#line 1068 "src/wast-parser.y" /* yacc.c:1646 */ + case 154: +#line 1145 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.export_) = new Export(); (yyval.export_)->kind = ExternalKind::Global; (yyval.export_)->var = (yyvsp[-1].var); } -#line 3648 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3808 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 142: -#line 1075 "src/wast-parser.y" /* yacc.c:1646 */ + case 155: +#line 1152 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_field) = new ModuleField(ModuleFieldType::Export); (yyval.module_field)->loc = (yylsp[-3]); (yyval.module_field)->export_ = (yyvsp[-1].export_); (yyval.module_field)->export_->name = (yyvsp[-2].text); } -#line 3659 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3819 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 143: -#line 1084 "src/wast-parser.y" /* yacc.c:1646 */ + case 156: +#line 1161 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.export_) = new Export(); (yyval.export_)->name = (yyvsp[-1].text); } -#line 3668 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3828 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 144: -#line 1094 "src/wast-parser.y" /* yacc.c:1646 */ + case 157: +#line 1171 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_field) = new ModuleField(ModuleFieldType::FuncType); (yyval.module_field)->loc = (yylsp[-2]); @@ -3676,11 +3836,11 @@ yyreduce: (yyval.module_field)->func_type->sig = std::move(*(yyvsp[-1].func_sig)); delete (yyvsp[-1].func_sig); } -#line 3680 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3840 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 145: -#line 1101 "src/wast-parser.y" /* yacc.c:1646 */ + case 158: +#line 1178 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_field) = new ModuleField(ModuleFieldType::FuncType); (yyval.module_field)->loc = (yylsp[-3]); @@ -3689,83 +3849,83 @@ yyreduce: (yyval.module_field)->func_type->sig = std::move(*(yyvsp[-1].func_sig)); delete (yyvsp[-1].func_sig); } -#line 3693 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3853 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 146: -#line 1112 "src/wast-parser.y" /* yacc.c:1646 */ + case 159: +#line 1189 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_field) = new ModuleField(ModuleFieldType::Start); (yyval.module_field)->loc = (yylsp[-2]); (yyval.module_field)->start = (yyvsp[-1].var); } -#line 3703 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3863 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 147: -#line 1120 "src/wast-parser.y" /* yacc.c:1646 */ + case 160: +#line 1197 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_fields).first = (yyval.module_fields).last = (yyvsp[0].module_field); } -#line 3709 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3869 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 152: -#line 1125 "src/wast-parser.y" /* yacc.c:1646 */ + case 165: +#line 1202 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_fields).first = (yyval.module_fields).last = (yyvsp[0].module_field); } -#line 3715 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3875 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 153: -#line 1126 "src/wast-parser.y" /* yacc.c:1646 */ + case 166: +#line 1203 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_fields).first = (yyval.module_fields).last = (yyvsp[0].module_field); } -#line 3721 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3881 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 154: -#line 1127 "src/wast-parser.y" /* yacc.c:1646 */ + case 167: +#line 1204 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_fields).first = (yyval.module_fields).last = (yyvsp[0].module_field); } -#line 3727 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3887 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 155: -#line 1128 "src/wast-parser.y" /* yacc.c:1646 */ + case 168: +#line 1205 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_fields).first = (yyval.module_fields).last = (yyvsp[0].module_field); } -#line 3733 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3893 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 156: -#line 1129 "src/wast-parser.y" /* yacc.c:1646 */ + case 169: +#line 1206 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module_fields).first = (yyval.module_fields).last = (yyvsp[0].module_field); } -#line 3739 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3899 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 157: -#line 1133 "src/wast-parser.y" /* yacc.c:1646 */ + case 170: +#line 1210 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module) = new Module(); } -#line 3745 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3905 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 159: -#line 1138 "src/wast-parser.y" /* yacc.c:1646 */ + case 172: +#line 1215 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module) = new Module(); check_import_ordering(&(yylsp[0]), lexer, parser, (yyval.module), (yyvsp[0].module_fields).first); append_module_fields((yyval.module), (yyvsp[0].module_fields).first); } -#line 3755 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3915 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 160: -#line 1143 "src/wast-parser.y" /* yacc.c:1646 */ + case 173: +#line 1220 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); check_import_ordering(&(yylsp[0]), lexer, parser, (yyval.module), (yyvsp[0].module_fields).first); append_module_fields((yyval.module), (yyvsp[0].module_fields).first); } -#line 3765 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3925 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 161: -#line 1151 "src/wast-parser.y" /* yacc.c:1646 */ + case 174: +#line 1228 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.raw_module) = new RawModule(); (yyval.raw_module)->type = RawModuleType::Text; @@ -3786,11 +3946,11 @@ yyreduce: } } } -#line 3790 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3950 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 162: -#line 1171 "src/wast-parser.y" /* yacc.c:1646 */ + case 175: +#line 1248 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.raw_module) = new RawModule(); (yyval.raw_module)->type = RawModuleType::Binary; @@ -3799,11 +3959,11 @@ yyreduce: dup_text_list(&(yyvsp[-1].text_list), &(yyval.raw_module)->binary.data, &(yyval.raw_module)->binary.size); destroy_text_list(&(yyvsp[-1].text_list)); } -#line 3803 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3963 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 163: -#line 1182 "src/wast-parser.y" /* yacc.c:1646 */ + case 176: +#line 1259 "src/wast-parser.y" /* yacc.c:1646 */ { if ((yyvsp[0].raw_module)->type == RawModuleType::Text) { (yyval.module) = (yyvsp[0].raw_module)->text; @@ -3821,31 +3981,31 @@ yyreduce: } delete (yyvsp[0].raw_module); } -#line 3825 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3985 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 165: -#line 1209 "src/wast-parser.y" /* yacc.c:1646 */ + case 178: +#line 1286 "src/wast-parser.y" /* yacc.c:1646 */ { WABT_ZERO_MEMORY((yyval.var)); (yyval.var).type = VarType::Index; (yyval.var).index = kInvalidIndex; } -#line 3835 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 3995 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 166: -#line 1214 "src/wast-parser.y" /* yacc.c:1646 */ + case 179: +#line 1291 "src/wast-parser.y" /* yacc.c:1646 */ { WABT_ZERO_MEMORY((yyval.var)); (yyval.var).type = VarType::Name; DUPTEXT((yyval.var).name, (yyvsp[0].text)); } -#line 3845 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4005 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 167: -#line 1222 "src/wast-parser.y" /* yacc.c:1646 */ + case 180: +#line 1299 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.action) = new Action(); (yyval.action)->loc = (yylsp[-4]); @@ -3856,11 +4016,11 @@ yyreduce: (yyval.action)->invoke->args = std::move(*(yyvsp[-1].consts)); delete (yyvsp[-1].consts); } -#line 3860 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4020 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 168: -#line 1232 "src/wast-parser.y" /* yacc.c:1646 */ + case 181: +#line 1309 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.action) = new Action(); (yyval.action)->loc = (yylsp[-3]); @@ -3868,128 +4028,128 @@ yyreduce: (yyval.action)->type = ActionType::Get; (yyval.action)->name = (yyvsp[-1].text); } -#line 3872 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4032 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 169: -#line 1242 "src/wast-parser.y" /* yacc.c:1646 */ + case 182: +#line 1319 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new Command(); (yyval.command)->type = CommandType::AssertMalformed; (yyval.command)->assert_malformed.module = (yyvsp[-2].raw_module); (yyval.command)->assert_malformed.text = (yyvsp[-1].text); } -#line 3883 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4043 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 170: -#line 1248 "src/wast-parser.y" /* yacc.c:1646 */ + case 183: +#line 1325 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new Command(); (yyval.command)->type = CommandType::AssertInvalid; (yyval.command)->assert_invalid.module = (yyvsp[-2].raw_module); (yyval.command)->assert_invalid.text = (yyvsp[-1].text); } -#line 3894 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4054 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 171: -#line 1254 "src/wast-parser.y" /* yacc.c:1646 */ + case 184: +#line 1331 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new Command(); (yyval.command)->type = CommandType::AssertUnlinkable; (yyval.command)->assert_unlinkable.module = (yyvsp[-2].raw_module); (yyval.command)->assert_unlinkable.text = (yyvsp[-1].text); } -#line 3905 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4065 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 172: -#line 1260 "src/wast-parser.y" /* yacc.c:1646 */ + case 185: +#line 1337 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new Command(); (yyval.command)->type = CommandType::AssertUninstantiable; (yyval.command)->assert_uninstantiable.module = (yyvsp[-2].raw_module); (yyval.command)->assert_uninstantiable.text = (yyvsp[-1].text); } -#line 3916 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4076 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 173: -#line 1266 "src/wast-parser.y" /* yacc.c:1646 */ + case 186: +#line 1343 "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); } -#line 3927 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4087 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 174: -#line 1272 "src/wast-parser.y" /* yacc.c:1646 */ + case 187: +#line 1349 "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); } -#line 3937 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4097 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 175: -#line 1277 "src/wast-parser.y" /* yacc.c:1646 */ + case 188: +#line 1354 "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); } -#line 3947 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4107 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 176: -#line 1282 "src/wast-parser.y" /* yacc.c:1646 */ + case 189: +#line 1359 "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); } -#line 3958 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4118 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 177: -#line 1288 "src/wast-parser.y" /* yacc.c:1646 */ + case 190: +#line 1365 "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); } -#line 3969 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4129 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 178: -#line 1297 "src/wast-parser.y" /* yacc.c:1646 */ + case 191: +#line 1374 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new Command(); (yyval.command)->type = CommandType::Action; (yyval.command)->action = (yyvsp[0].action); } -#line 3979 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4139 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 180: -#line 1303 "src/wast-parser.y" /* yacc.c:1646 */ + case 193: +#line 1380 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new Command(); (yyval.command)->type = CommandType::Module; (yyval.command)->module = (yyvsp[0].module); } -#line 3989 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4149 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 181: -#line 1308 "src/wast-parser.y" /* yacc.c:1646 */ + case 194: +#line 1385 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new Command(); (yyval.command)->type = CommandType::Register; @@ -3997,29 +4157,29 @@ yyreduce: (yyval.command)->register_.var = (yyvsp[-1].var); (yyval.command)->register_.var.loc = (yylsp[-1]); } -#line 4001 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4161 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 182: -#line 1317 "src/wast-parser.y" /* yacc.c:1646 */ + case 195: +#line 1394 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.commands) = new CommandPtrVector(); (yyval.commands)->emplace_back((yyvsp[0].command)); } -#line 4010 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4170 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 183: -#line 1321 "src/wast-parser.y" /* yacc.c:1646 */ + case 196: +#line 1398 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.commands) = (yyvsp[-1].commands); (yyval.commands)->emplace_back((yyvsp[0].command)); } -#line 4019 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4179 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 184: -#line 1328 "src/wast-parser.y" /* yacc.c:1646 */ + case 197: +#line 1405 "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, @@ -4030,34 +4190,34 @@ yyreduce: } delete [] (yyvsp[-1].literal).text.start; } -#line 4034 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4194 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 185: -#line 1340 "src/wast-parser.y" /* yacc.c:1646 */ + case 198: +#line 1417 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.consts) = new ConstVector(); } -#line 4040 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4200 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 186: -#line 1341 "src/wast-parser.y" /* yacc.c:1646 */ + case 199: +#line 1418 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.consts) = (yyvsp[-1].consts); (yyval.consts)->push_back((yyvsp[0].const_)); } -#line 4049 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4209 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 187: -#line 1348 "src/wast-parser.y" /* yacc.c:1646 */ + case 200: +#line 1425 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.script) = new Script(); } -#line 4057 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4217 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 188: -#line 1351 "src/wast-parser.y" /* yacc.c:1646 */ + case 201: +#line 1428 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.script) = new Script(); (yyval.script)->commands = std::move(*(yyvsp[0].commands)); @@ -4118,11 +4278,11 @@ yyreduce: } } } -#line 4122 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4282 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 189: -#line 1411 "src/wast-parser.y" /* yacc.c:1646 */ + case 202: +#line 1488 "src/wast-parser.y" /* yacc.c:1646 */ { (yyval.script) = new Script(); Command* command = new Command(); @@ -4130,17 +4290,17 @@ yyreduce: command->module = (yyvsp[0].module); (yyval.script)->commands.emplace_back(command); } -#line 4134 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4294 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; - case 190: -#line 1423 "src/wast-parser.y" /* yacc.c:1646 */ + case 203: +#line 1500 "src/wast-parser.y" /* yacc.c:1646 */ { parser->script = (yyvsp[0].script); } -#line 4140 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4300 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ break; -#line 4144 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ +#line 4304 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4375,7 +4535,7 @@ yyreturn: #endif return yyresult; } -#line 1426 "src/wast-parser.y" /* yacc.c:1906 */ +#line 1503 "src/wast-parser.y" /* yacc.c:1906 */ void append_expr_list(ExprList* expr_list, ExprList* expr) { @@ -4415,6 +4575,14 @@ ExprList join_exprs2(Location* loc, ExprList* expr1, Expr* expr2) { return result; } +ExprList join_expr_lists(ExprList* expr1, ExprList* expr2) { + ExprList result; + WABT_ZERO_MEMORY(result); + append_expr_list(&result, expr1); + append_expr_list(&result, expr2); + return result; +} + Result parse_const(Type type, LiteralType literal_type, const char* s, @@ -4690,10 +4858,16 @@ void append_module_fields(Module* module, ModuleField* first) { } Result parse_wast(WastLexer* lexer, Script** out_script, - SourceErrorHandler* error_handler) { + SourceErrorHandler* error_handler, + WastParseOptions* options) { WastParser parser; WABT_ZERO_MEMORY(parser); + static WastParseOptions default_options; + if (options == nullptr) + options = &default_options; + parser.options = options; parser.error_handler = error_handler; + wabt_wast_parser_debug = int(options->debug_parsing); int result = wabt_wast_parser_parse(lexer, &parser); delete [] parser.yyssa; delete [] parser.yyvsa; diff --git a/src/prebuilt/wast-parser-gen.hh b/src/prebuilt/wast-parser-gen.hh index 39ebe5a8..68e06e4f 100644 --- a/src/prebuilt/wast-parser-gen.hh +++ b/src/prebuilt/wast-parser-gen.hh @@ -75,54 +75,59 @@ extern int wabt_wast_parser_debug; WABT_TOKEN_TYPE_BR = 276, WABT_TOKEN_TYPE_BR_IF = 277, WABT_TOKEN_TYPE_BR_TABLE = 278, - WABT_TOKEN_TYPE_CALL = 279, - WABT_TOKEN_TYPE_CALL_INDIRECT = 280, - WABT_TOKEN_TYPE_RETURN = 281, - WABT_TOKEN_TYPE_GET_LOCAL = 282, - WABT_TOKEN_TYPE_SET_LOCAL = 283, - WABT_TOKEN_TYPE_TEE_LOCAL = 284, - WABT_TOKEN_TYPE_GET_GLOBAL = 285, - WABT_TOKEN_TYPE_SET_GLOBAL = 286, - WABT_TOKEN_TYPE_LOAD = 287, - WABT_TOKEN_TYPE_STORE = 288, - WABT_TOKEN_TYPE_OFFSET_EQ_NAT = 289, - WABT_TOKEN_TYPE_ALIGN_EQ_NAT = 290, - WABT_TOKEN_TYPE_CONST = 291, - WABT_TOKEN_TYPE_UNARY = 292, - WABT_TOKEN_TYPE_BINARY = 293, - WABT_TOKEN_TYPE_COMPARE = 294, - WABT_TOKEN_TYPE_CONVERT = 295, - WABT_TOKEN_TYPE_SELECT = 296, - WABT_TOKEN_TYPE_UNREACHABLE = 297, - WABT_TOKEN_TYPE_CURRENT_MEMORY = 298, - WABT_TOKEN_TYPE_GROW_MEMORY = 299, - WABT_TOKEN_TYPE_FUNC = 300, - WABT_TOKEN_TYPE_START = 301, - WABT_TOKEN_TYPE_TYPE = 302, - WABT_TOKEN_TYPE_PARAM = 303, - WABT_TOKEN_TYPE_RESULT = 304, - WABT_TOKEN_TYPE_LOCAL = 305, - WABT_TOKEN_TYPE_GLOBAL = 306, - WABT_TOKEN_TYPE_MODULE = 307, - WABT_TOKEN_TYPE_TABLE = 308, - WABT_TOKEN_TYPE_ELEM = 309, - WABT_TOKEN_TYPE_MEMORY = 310, - WABT_TOKEN_TYPE_DATA = 311, - WABT_TOKEN_TYPE_OFFSET = 312, - WABT_TOKEN_TYPE_IMPORT = 313, - WABT_TOKEN_TYPE_EXPORT = 314, - WABT_TOKEN_TYPE_REGISTER = 315, - WABT_TOKEN_TYPE_INVOKE = 316, - WABT_TOKEN_TYPE_GET = 317, - WABT_TOKEN_TYPE_ASSERT_MALFORMED = 318, - WABT_TOKEN_TYPE_ASSERT_INVALID = 319, - WABT_TOKEN_TYPE_ASSERT_UNLINKABLE = 320, - WABT_TOKEN_TYPE_ASSERT_RETURN = 321, - WABT_TOKEN_TYPE_ASSERT_RETURN_CANONICAL_NAN = 322, - WABT_TOKEN_TYPE_ASSERT_RETURN_ARITHMETIC_NAN = 323, - WABT_TOKEN_TYPE_ASSERT_TRAP = 324, - WABT_TOKEN_TYPE_ASSERT_EXHAUSTION = 325, - WABT_TOKEN_TYPE_LOW = 326 + WABT_TOKEN_TYPE_TRY = 279, + WABT_TOKEN_TYPE_CATCH = 280, + WABT_TOKEN_TYPE_CATCH_ALL = 281, + WABT_TOKEN_TYPE_THROW = 282, + WABT_TOKEN_TYPE_RETHROW = 283, + WABT_TOKEN_TYPE_CALL = 284, + WABT_TOKEN_TYPE_CALL_INDIRECT = 285, + WABT_TOKEN_TYPE_RETURN = 286, + WABT_TOKEN_TYPE_GET_LOCAL = 287, + WABT_TOKEN_TYPE_SET_LOCAL = 288, + WABT_TOKEN_TYPE_TEE_LOCAL = 289, + WABT_TOKEN_TYPE_GET_GLOBAL = 290, + WABT_TOKEN_TYPE_SET_GLOBAL = 291, + WABT_TOKEN_TYPE_LOAD = 292, + WABT_TOKEN_TYPE_STORE = 293, + WABT_TOKEN_TYPE_OFFSET_EQ_NAT = 294, + WABT_TOKEN_TYPE_ALIGN_EQ_NAT = 295, + WABT_TOKEN_TYPE_CONST = 296, + WABT_TOKEN_TYPE_UNARY = 297, + WABT_TOKEN_TYPE_BINARY = 298, + WABT_TOKEN_TYPE_COMPARE = 299, + WABT_TOKEN_TYPE_CONVERT = 300, + WABT_TOKEN_TYPE_SELECT = 301, + WABT_TOKEN_TYPE_UNREACHABLE = 302, + WABT_TOKEN_TYPE_CURRENT_MEMORY = 303, + WABT_TOKEN_TYPE_GROW_MEMORY = 304, + WABT_TOKEN_TYPE_FUNC = 305, + WABT_TOKEN_TYPE_START = 306, + WABT_TOKEN_TYPE_TYPE = 307, + WABT_TOKEN_TYPE_PARAM = 308, + WABT_TOKEN_TYPE_RESULT = 309, + WABT_TOKEN_TYPE_LOCAL = 310, + WABT_TOKEN_TYPE_GLOBAL = 311, + WABT_TOKEN_TYPE_MODULE = 312, + WABT_TOKEN_TYPE_TABLE = 313, + WABT_TOKEN_TYPE_ELEM = 314, + WABT_TOKEN_TYPE_MEMORY = 315, + WABT_TOKEN_TYPE_DATA = 316, + WABT_TOKEN_TYPE_OFFSET = 317, + WABT_TOKEN_TYPE_IMPORT = 318, + WABT_TOKEN_TYPE_EXPORT = 319, + WABT_TOKEN_TYPE_REGISTER = 320, + WABT_TOKEN_TYPE_INVOKE = 321, + WABT_TOKEN_TYPE_GET = 322, + WABT_TOKEN_TYPE_ASSERT_MALFORMED = 323, + WABT_TOKEN_TYPE_ASSERT_INVALID = 324, + WABT_TOKEN_TYPE_ASSERT_UNLINKABLE = 325, + WABT_TOKEN_TYPE_ASSERT_RETURN = 326, + WABT_TOKEN_TYPE_ASSERT_RETURN_CANONICAL_NAN = 327, + WABT_TOKEN_TYPE_ASSERT_RETURN_ARITHMETIC_NAN = 328, + WABT_TOKEN_TYPE_ASSERT_TRAP = 329, + WABT_TOKEN_TYPE_ASSERT_EXHAUSTION = 330, + WABT_TOKEN_TYPE_LOW = 331 }; #endif diff --git a/src/prebuilt/wast-parser-gen.output b/src/prebuilt/wast-parser-gen.output index 60e37fe7..76e56d23 100644 --- a/src/prebuilt/wast-parser-gen.output +++ b/src/prebuilt/wast-parser-gen.output @@ -88,419 +88,455 @@ Grammar 62 | CONVERT 63 | CURRENT_MEMORY 64 | GROW_MEMORY + 65 | throw_check var + 66 | rethrow_check var - 65 block_instr: BLOCK labeling_opt block END labeling_opt - 66 | LOOP labeling_opt block END labeling_opt - 67 | IF labeling_opt block END labeling_opt - 68 | IF labeling_opt block ELSE labeling_opt instr_list END labeling_opt + 67 block_instr: BLOCK labeling_opt block END labeling_opt + 68 | LOOP labeling_opt block END labeling_opt + 69 | IF labeling_opt block END labeling_opt + 70 | IF labeling_opt block ELSE labeling_opt instr_list END labeling_opt + 71 | try_check labeling_opt block catch_instr_list END labeling_opt - 69 block_sig: "(" RESULT value_type_list ")" + 72 block_sig: "(" RESULT value_type_list ")" - 70 block: block_sig block - 71 | instr_list + 73 block: block_sig block + 74 | instr_list - 72 expr: "(" expr1 ")" + 75 catch_instr: CATCH var instr_list + 76 | CATCH_ALL var instr_list - 73 expr1: plain_instr expr_list - 74 | BLOCK labeling_opt block - 75 | LOOP labeling_opt block - 76 | IF labeling_opt if_block + 77 catch_instr_list: catch_instr + 78 | catch_instr catch_instr_list - 77 if_block: block_sig if_block - 78 | if_ + 79 expr: "(" expr1 ")" - 79 if_: "(" THEN instr_list ")" "(" ELSE instr_list ")" - 80 | "(" THEN instr_list ")" - 81 | expr "(" THEN instr_list ")" "(" ELSE instr_list ")" - 82 | expr "(" THEN instr_list ")" - 83 | expr expr expr - 84 | expr expr + 80 expr1: plain_instr expr_list + 81 | BLOCK labeling_opt block + 82 | LOOP labeling_opt block + 83 | IF labeling_opt if_block + 84 | try_check "(" BLOCK labeling_opt block ")" catch_list - 85 instr_list: %empty - 86 | instr instr_list + 85 catch_list: "(" catch_instr ")" + 86 | "(" catch_instr ")" catch_list - 87 expr_list: %empty - 88 | expr expr_list + 87 if_block: block_sig if_block + 88 | if_ - 89 const_expr: instr_list + 89 if_: "(" THEN instr_list ")" "(" ELSE instr_list ")" + 90 | "(" THEN instr_list ")" + 91 | expr "(" THEN instr_list ")" "(" ELSE instr_list ")" + 92 | expr "(" THEN instr_list ")" + 93 | expr expr expr + 94 | expr expr - 90 func: "(" FUNC bind_var_opt func_fields ")" + 95 rethrow_check: RETHROW - 91 func_fields: type_use func_fields_body - 92 | func_fields_body - 93 | inline_import type_use func_fields_import - 94 | inline_import func_fields_import - 95 | inline_export func_fields + 96 throw_check: THROW - 96 func_fields_import: func_fields_import1 + 97 try_check: TRY - 97 func_fields_import1: %empty - 98 | "(" RESULT value_type_list ")" - 99 | "(" PARAM value_type_list ")" func_fields_import1 - 100 | "(" PARAM bind_var VALUE_TYPE ")" func_fields_import1 + 98 instr_list: %empty + 99 | instr instr_list - 101 func_fields_body: func_fields_body1 + 100 expr_list: %empty + 101 | expr expr_list - 102 func_fields_body1: func_body - 103 | "(" RESULT value_type_list ")" func_body - 104 | "(" PARAM value_type_list ")" func_fields_body1 - 105 | "(" PARAM bind_var VALUE_TYPE ")" func_fields_body1 + 102 const_expr: instr_list - 106 func_body: func_body1 + 103 func: "(" FUNC bind_var_opt func_fields ")" - 107 func_body1: instr_list - 108 | "(" LOCAL value_type_list ")" func_body1 - 109 | "(" LOCAL bind_var VALUE_TYPE ")" func_body1 + 104 func_fields: type_use func_fields_body + 105 | func_fields_body + 106 | inline_import type_use func_fields_import + 107 | inline_import func_fields_import + 108 | inline_export func_fields - 110 offset: "(" OFFSET const_expr ")" - 111 | expr + 109 func_fields_import: func_fields_import1 - 112 elem: "(" ELEM var offset var_list ")" - 113 | "(" ELEM offset var_list ")" + 110 func_fields_import1: %empty + 111 | "(" RESULT value_type_list ")" + 112 | "(" PARAM value_type_list ")" func_fields_import1 + 113 | "(" PARAM bind_var VALUE_TYPE ")" func_fields_import1 - 114 table: "(" TABLE bind_var_opt table_fields ")" + 114 func_fields_body: func_fields_body1 - 115 table_fields: table_sig - 116 | inline_import table_sig - 117 | inline_export table_fields - 118 | elem_type "(" ELEM var_list ")" + 115 func_fields_body1: func_body + 116 | "(" RESULT value_type_list ")" func_body + 117 | "(" PARAM value_type_list ")" func_fields_body1 + 118 | "(" PARAM bind_var VALUE_TYPE ")" func_fields_body1 - 119 data: "(" DATA var offset text_list_opt ")" - 120 | "(" DATA offset text_list_opt ")" + 119 func_body: func_body1 - 121 memory: "(" MEMORY bind_var_opt memory_fields ")" + 120 func_body1: instr_list + 121 | "(" LOCAL value_type_list ")" func_body1 + 122 | "(" LOCAL bind_var VALUE_TYPE ")" func_body1 - 122 memory_fields: memory_sig - 123 | inline_import memory_sig - 124 | inline_export memory_fields - 125 | "(" DATA text_list_opt ")" + 123 offset: "(" OFFSET const_expr ")" + 124 | expr - 126 global: "(" GLOBAL bind_var_opt global_fields ")" + 125 elem: "(" ELEM var offset var_list ")" + 126 | "(" ELEM offset var_list ")" - 127 global_fields: global_type const_expr - 128 | inline_import global_type - 129 | inline_export global_fields + 127 table: "(" TABLE bind_var_opt table_fields ")" - 130 import_desc: "(" FUNC bind_var_opt type_use ")" - 131 | "(" FUNC bind_var_opt func_sig ")" - 132 | "(" TABLE bind_var_opt table_sig ")" - 133 | "(" MEMORY bind_var_opt memory_sig ")" - 134 | "(" GLOBAL bind_var_opt global_type ")" + 128 table_fields: table_sig + 129 | inline_import table_sig + 130 | inline_export table_fields + 131 | elem_type "(" ELEM var_list ")" - 135 import: "(" IMPORT quoted_text quoted_text import_desc ")" + 132 data: "(" DATA var offset text_list_opt ")" + 133 | "(" DATA offset text_list_opt ")" - 136 inline_import: "(" IMPORT quoted_text quoted_text ")" + 134 memory: "(" MEMORY bind_var_opt memory_fields ")" - 137 export_desc: "(" FUNC var ")" - 138 | "(" TABLE var ")" - 139 | "(" MEMORY var ")" - 140 | "(" GLOBAL var ")" + 135 memory_fields: memory_sig + 136 | inline_import memory_sig + 137 | inline_export memory_fields + 138 | "(" DATA text_list_opt ")" - 141 export: "(" EXPORT quoted_text export_desc ")" + 139 global: "(" GLOBAL bind_var_opt global_fields ")" - 142 inline_export: "(" EXPORT quoted_text ")" + 140 global_fields: global_type const_expr + 141 | inline_import global_type + 142 | inline_export global_fields - 143 type_def: "(" TYPE func_type ")" - 144 | "(" TYPE bind_var func_type ")" + 143 import_desc: "(" FUNC bind_var_opt type_use ")" + 144 | "(" FUNC bind_var_opt func_sig ")" + 145 | "(" TABLE bind_var_opt table_sig ")" + 146 | "(" MEMORY bind_var_opt memory_sig ")" + 147 | "(" GLOBAL bind_var_opt global_type ")" - 145 start: "(" START var ")" + 148 import: "(" IMPORT quoted_text quoted_text import_desc ")" - 146 module_field: type_def - 147 | global - 148 | table - 149 | memory - 150 | func - 151 | elem - 152 | data - 153 | start - 154 | import - 155 | export + 149 inline_import: "(" IMPORT quoted_text quoted_text ")" - 156 module_fields_opt: %empty - 157 | module_fields + 150 export_desc: "(" FUNC var ")" + 151 | "(" TABLE var ")" + 152 | "(" MEMORY var ")" + 153 | "(" GLOBAL var ")" - 158 module_fields: module_field - 159 | module_fields module_field + 154 export: "(" EXPORT quoted_text export_desc ")" - 160 raw_module: "(" MODULE bind_var_opt module_fields_opt ")" - 161 | "(" MODULE bind_var_opt text_list ")" + 155 inline_export: "(" EXPORT quoted_text ")" - 162 module: raw_module + 156 type_def: "(" TYPE func_type ")" + 157 | "(" TYPE bind_var func_type ")" - 163 inline_module: module_fields + 158 start: "(" START var ")" - 164 script_var_opt: %empty - 165 | VAR + 159 module_field: type_def + 160 | global + 161 | table + 162 | memory + 163 | func + 164 | elem + 165 | data + 166 | start + 167 | import + 168 | export - 166 action: "(" INVOKE script_var_opt quoted_text const_list ")" - 167 | "(" GET script_var_opt quoted_text ")" + 169 module_fields_opt: %empty + 170 | module_fields - 168 assertion: "(" ASSERT_MALFORMED raw_module quoted_text ")" - 169 | "(" ASSERT_INVALID raw_module quoted_text ")" - 170 | "(" ASSERT_UNLINKABLE raw_module quoted_text ")" - 171 | "(" ASSERT_TRAP raw_module quoted_text ")" - 172 | "(" ASSERT_RETURN action const_list ")" - 173 | "(" ASSERT_RETURN_CANONICAL_NAN action ")" - 174 | "(" ASSERT_RETURN_ARITHMETIC_NAN action ")" - 175 | "(" ASSERT_TRAP action quoted_text ")" - 176 | "(" ASSERT_EXHAUSTION action quoted_text ")" + 171 module_fields: module_field + 172 | module_fields module_field - 177 cmd: action - 178 | assertion - 179 | module - 180 | "(" REGISTER quoted_text script_var_opt ")" + 173 raw_module: "(" MODULE bind_var_opt module_fields_opt ")" + 174 | "(" MODULE bind_var_opt text_list ")" - 181 cmd_list: cmd - 182 | cmd_list cmd + 175 module: raw_module - 183 const: "(" CONST literal ")" + 176 inline_module: module_fields - 184 const_list: %empty - 185 | const_list const + 177 script_var_opt: %empty + 178 | VAR - 186 script: %empty - 187 | cmd_list - 188 | inline_module + 179 action: "(" INVOKE script_var_opt quoted_text const_list ")" + 180 | "(" GET script_var_opt quoted_text ")" - 189 script_start: script + 181 assertion: "(" ASSERT_MALFORMED raw_module quoted_text ")" + 182 | "(" ASSERT_INVALID raw_module quoted_text ")" + 183 | "(" ASSERT_UNLINKABLE raw_module quoted_text ")" + 184 | "(" ASSERT_TRAP raw_module quoted_text ")" + 185 | "(" ASSERT_RETURN action const_list ")" + 186 | "(" ASSERT_RETURN_CANONICAL_NAN action ")" + 187 | "(" ASSERT_RETURN_ARITHMETIC_NAN action ")" + 188 | "(" ASSERT_TRAP action quoted_text ")" + 189 | "(" ASSERT_EXHAUSTION action quoted_text ")" + + 190 cmd: action + 191 | assertion + 192 | module + 193 | "(" REGISTER quoted_text script_var_opt ")" + + 194 cmd_list: cmd + 195 | cmd_list cmd + + 196 const: "(" CONST literal ")" + + 197 const_list: %empty + 198 | const_list const + + 199 script: %empty + 200 | cmd_list + 201 | inline_module + + 202 script_start: script Terminals, with rules where they appear "EOF" (0) 0 error (256) -"(" (258) 10 11 13 14 15 20 69 72 79 80 81 82 90 98 99 100 103 104 - 105 108 109 110 112 113 114 118 119 120 121 125 126 130 131 132 - 133 134 135 136 137 138 139 140 141 142 143 144 145 160 161 166 - 167 168 169 170 171 172 173 174 175 176 180 183 -")" (259) 10 11 13 14 15 20 69 72 79 80 81 82 90 98 99 100 103 104 - 105 108 109 110 112 113 114 118 119 120 121 125 126 130 131 132 - 133 134 135 136 137 138 139 140 141 142 143 144 145 160 161 166 - 167 168 169 170 171 172 173 174 175 176 180 183 +"(" (258) 10 11 13 14 15 20 72 79 84 85 86 89 90 91 92 103 111 112 + 113 116 117 118 121 122 123 125 126 127 131 132 133 134 138 139 + 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 + 173 174 179 180 181 182 183 184 185 186 187 188 189 193 196 +")" (259) 10 11 13 14 15 20 72 79 84 85 86 89 90 91 92 103 111 112 + 113 116 117 118 121 122 123 125 126 127 131 132 133 134 138 139 + 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 + 173 174 179 180 181 182 183 184 185 186 187 188 189 193 196 NAT (260) 21 22 INT (261) 23 FLOAT (262) 24 TEXT (263) 1 2 5 -VAR (264) 26 31 165 -VALUE_TYPE (265) 7 9 10 100 105 109 +VAR (264) 26 31 178 +VALUE_TYPE (265) 7 9 10 113 118 122 ANYFUNC (266) 8 MUT (267) 10 NOP (268) 42 DROP (269) 43 -BLOCK (270) 65 74 -END (271) 65 66 67 68 -IF (272) 67 68 76 -THEN (273) 79 80 81 82 -ELSE (274) 68 79 81 -LOOP (275) 66 75 +BLOCK (270) 67 81 84 +END (271) 67 68 69 70 71 +IF (272) 69 70 83 +THEN (273) 89 90 91 92 +ELSE (274) 70 89 91 +LOOP (275) 68 82 BR (276) 45 BR_IF (277) 46 BR_TABLE (278) 47 -CALL (279) 49 -CALL_INDIRECT (280) 50 -RETURN (281) 48 -GET_LOCAL (282) 51 -SET_LOCAL (283) 52 -TEE_LOCAL (284) 53 -GET_GLOBAL (285) 54 -SET_GLOBAL (286) 55 -LOAD (287) 56 -STORE (288) 57 -OFFSET_EQ_NAT (289) 35 -ALIGN_EQ_NAT (290) 37 -CONST (291) 58 183 -UNARY (292) 59 -BINARY (293) 60 -COMPARE (294) 61 -CONVERT (295) 62 -SELECT (296) 44 -UNREACHABLE (297) 41 -CURRENT_MEMORY (298) 63 -GROW_MEMORY (299) 64 -FUNC (300) 11 90 130 131 137 -START (301) 145 -TYPE (302) 20 143 144 -PARAM (303) 13 14 99 100 104 105 -RESULT (304) 14 15 69 98 103 -LOCAL (305) 108 109 -GLOBAL (306) 126 134 140 -MODULE (307) 160 161 -TABLE (308) 114 132 138 -ELEM (309) 112 113 118 -MEMORY (310) 121 133 139 -DATA (311) 119 120 125 -OFFSET (312) 110 -IMPORT (313) 135 136 -EXPORT (314) 141 142 -REGISTER (315) 180 -INVOKE (316) 166 -GET (317) 167 -ASSERT_MALFORMED (318) 168 -ASSERT_INVALID (319) 169 -ASSERT_UNLINKABLE (320) 170 -ASSERT_RETURN (321) 172 -ASSERT_RETURN_CANONICAL_NAN (322) 173 -ASSERT_RETURN_ARITHMETIC_NAN (323) 174 -ASSERT_TRAP (324) 171 175 -ASSERT_EXHAUSTION (325) 176 -LOW (326) +TRY (279) 97 +CATCH (280) 75 +CATCH_ALL (281) 76 +THROW (282) 96 +RETHROW (283) 95 +CALL (284) 49 +CALL_INDIRECT (285) 50 +RETURN (286) 48 +GET_LOCAL (287) 51 +SET_LOCAL (288) 52 +TEE_LOCAL (289) 53 +GET_GLOBAL (290) 54 +SET_GLOBAL (291) 55 +LOAD (292) 56 +STORE (293) 57 +OFFSET_EQ_NAT (294) 35 +ALIGN_EQ_NAT (295) 37 +CONST (296) 58 196 +UNARY (297) 59 +BINARY (298) 60 +COMPARE (299) 61 +CONVERT (300) 62 +SELECT (301) 44 +UNREACHABLE (302) 41 +CURRENT_MEMORY (303) 63 +GROW_MEMORY (304) 64 +FUNC (305) 11 103 143 144 150 +START (306) 158 +TYPE (307) 20 156 157 +PARAM (308) 13 14 112 113 117 118 +RESULT (309) 14 15 72 111 116 +LOCAL (310) 121 122 +GLOBAL (311) 139 147 153 +MODULE (312) 173 174 +TABLE (313) 127 145 151 +ELEM (314) 125 126 131 +MEMORY (315) 134 146 152 +DATA (316) 132 133 138 +OFFSET (317) 123 +IMPORT (318) 148 149 +EXPORT (319) 154 155 +REGISTER (320) 193 +INVOKE (321) 179 +GET (322) 180 +ASSERT_MALFORMED (323) 181 +ASSERT_INVALID (324) 182 +ASSERT_UNLINKABLE (325) 183 +ASSERT_RETURN (326) 185 +ASSERT_RETURN_CANONICAL_NAN (327) 186 +ASSERT_RETURN_ARITHMETIC_NAN (328) 187 +ASSERT_TRAP (329) 184 188 +ASSERT_EXHAUSTION (330) 189 +LOW (331) Nonterminals, with rules where they appear -$accept (72) +$accept (77) on left: 0 -text_list (73) - on left: 1 2, on right: 2 4 161 -text_list_opt (74) - on left: 3 4, on right: 119 120 125 -quoted_text (75) - on left: 5, on right: 135 136 141 142 166 167 168 169 170 171 175 - 176 180 -value_type_list (76) - on left: 6 7, on right: 7 13 14 15 69 98 99 103 104 108 -elem_type (77) - on left: 8, on right: 16 118 -global_type (78) - on left: 9 10, on right: 127 128 134 -func_type (79) - on left: 11, on right: 143 144 -func_sig (80) - on left: 12 13 14 15, on right: 11 131 -table_sig (81) - on left: 16, on right: 115 116 132 -memory_sig (82) - on left: 17, on right: 122 123 133 -limits (83) +text_list (78) + on left: 1 2, on right: 2 4 174 +text_list_opt (79) + on left: 3 4, on right: 132 133 138 +quoted_text (80) + on left: 5, on right: 148 149 154 155 179 180 181 182 183 184 188 + 189 193 +value_type_list (81) + on left: 6 7, on right: 7 13 14 15 72 111 112 116 117 121 +elem_type (82) + on left: 8, on right: 16 131 +global_type (83) + on left: 9 10, on right: 140 141 147 +func_type (84) + on left: 11, on right: 156 157 +func_sig (85) + on left: 12 13 14 15, on right: 11 144 +table_sig (86) + on left: 16, on right: 128 129 145 +memory_sig (87) + on left: 17, on right: 135 136 146 +limits (88) on left: 18 19, on right: 16 17 -type_use (84) - on left: 20, on right: 91 93 130 -nat (85) +type_use (89) + on left: 20, on right: 104 106 143 +nat (90) on left: 21, on right: 18 19 25 -literal (86) - on left: 22 23 24, on right: 58 183 -var (87) - on left: 25 26, on right: 20 28 45 46 47 49 50 51 52 53 54 55 112 - 119 137 138 139 140 145 -var_list (88) - on left: 27 28, on right: 28 47 112 113 118 -bind_var_opt (89) - on left: 29 30, on right: 90 114 121 126 130 131 132 133 134 160 - 161 -bind_var (90) - on left: 31, on right: 30 33 100 105 109 144 -labeling_opt (91) - on left: 32 33, on right: 65 66 67 68 74 75 76 -offset_opt (92) +literal (91) + on left: 22 23 24, on right: 58 196 +var (92) + on left: 25 26, on right: 20 28 45 46 47 49 50 51 52 53 54 55 65 + 66 75 76 125 132 150 151 152 153 158 +var_list (93) + on left: 27 28, on right: 28 47 125 126 131 +bind_var_opt (94) + on left: 29 30, on right: 103 127 134 139 143 144 145 146 147 173 + 174 +bind_var (95) + on left: 31, on right: 30 33 113 118 122 157 +labeling_opt (96) + on left: 32 33, on right: 67 68 69 70 71 81 82 83 84 +offset_opt (97) on left: 34 35, on right: 56 57 -align_opt (93) +align_opt (98) on left: 36 37, on right: 56 57 -instr (94) - on left: 38 39 40, on right: 86 -plain_instr (95) +instr (99) + on left: 38 39 40, on right: 99 +plain_instr (100) on left: 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 - 59 60 61 62 63 64, on right: 38 73 -block_instr (96) - on left: 65 66 67 68, on right: 39 -block_sig (97) - on left: 69, on right: 70 77 -block (98) - on left: 70 71, on right: 65 66 67 68 70 74 75 -expr (99) - on left: 72, on right: 40 81 82 83 84 88 111 -expr1 (100) - on left: 73 74 75 76, on right: 72 -if_block (101) - on left: 77 78, on right: 76 77 -if_ (102) - on left: 79 80 81 82 83 84, on right: 78 -instr_list (103) - on left: 85 86, on right: 68 71 79 80 81 82 86 89 107 -expr_list (104) - on left: 87 88, on right: 73 88 -const_expr (105) - on left: 89, on right: 110 127 -func (106) - on left: 90, on right: 150 -func_fields (107) - on left: 91 92 93 94 95, on right: 90 95 -func_fields_import (108) - on left: 96, on right: 93 94 -func_fields_import1 (109) - on left: 97 98 99 100, on right: 96 99 100 -func_fields_body (110) - on left: 101, on right: 91 92 -func_fields_body1 (111) - on left: 102 103 104 105, on right: 101 104 105 -func_body (112) - on left: 106, on right: 102 103 -func_body1 (113) - on left: 107 108 109, on right: 106 108 109 -offset (114) - on left: 110 111, on right: 112 113 119 120 -elem (115) - on left: 112 113, on right: 151 -table (116) - on left: 114, on right: 148 -table_fields (117) - on left: 115 116 117 118, on right: 114 117 -data (118) - on left: 119 120, on right: 152 -memory (119) - on left: 121, on right: 149 -memory_fields (120) - on left: 122 123 124 125, on right: 121 124 -global (121) - on left: 126, on right: 147 -global_fields (122) - on left: 127 128 129, on right: 126 129 -import_desc (123) - on left: 130 131 132 133 134, on right: 135 -import (124) - on left: 135, on right: 154 -inline_import (125) - on left: 136, on right: 93 94 116 123 128 -export_desc (126) - on left: 137 138 139 140, on right: 141 -export (127) - on left: 141, on right: 155 -inline_export (128) - on left: 142, on right: 95 117 124 129 -type_def (129) - on left: 143 144, on right: 146 -start (130) - on left: 145, on right: 153 -module_field (131) - on left: 146 147 148 149 150 151 152 153 154 155, on right: 158 - 159 -module_fields_opt (132) - on left: 156 157, on right: 160 -module_fields (133) - on left: 158 159, on right: 157 159 163 -raw_module (134) - on left: 160 161, on right: 162 168 169 170 171 -module (135) - on left: 162, on right: 179 -inline_module (136) - on left: 163, on right: 188 -script_var_opt (137) - on left: 164 165, on right: 166 167 180 -action (138) - on left: 166 167, on right: 172 173 174 175 176 177 -assertion (139) - on left: 168 169 170 171 172 173 174 175 176, on right: 178 -cmd (140) - on left: 177 178 179 180, on right: 181 182 -cmd_list (141) - on left: 181 182, on right: 182 187 -const (142) - on left: 183, on right: 185 -const_list (143) - on left: 184 185, on right: 166 172 185 -script (144) - on left: 186 187 188, on right: 189 -script_start (145) - on left: 189, on right: 0 + 59 60 61 62 63 64 65 66, on right: 38 80 +block_instr (101) + on left: 67 68 69 70 71, on right: 39 +block_sig (102) + on left: 72, on right: 73 87 +block (103) + on left: 73 74, on right: 67 68 69 70 71 73 81 82 84 +catch_instr (104) + on left: 75 76, on right: 77 78 85 86 +catch_instr_list (105) + on left: 77 78, on right: 71 78 +expr (106) + on left: 79, on right: 40 91 92 93 94 101 124 +expr1 (107) + on left: 80 81 82 83 84, on right: 79 +catch_list (108) + on left: 85 86, on right: 84 86 +if_block (109) + on left: 87 88, on right: 83 87 +if_ (110) + on left: 89 90 91 92 93 94, on right: 88 +rethrow_check (111) + on left: 95, on right: 66 +throw_check (112) + on left: 96, on right: 65 +try_check (113) + on left: 97, on right: 71 84 +instr_list (114) + on left: 98 99, on right: 70 74 75 76 89 90 91 92 99 102 120 +expr_list (115) + on left: 100 101, on right: 80 101 +const_expr (116) + on left: 102, on right: 123 140 +func (117) + on left: 103, on right: 163 +func_fields (118) + on left: 104 105 106 107 108, on right: 103 108 +func_fields_import (119) + on left: 109, on right: 106 107 +func_fields_import1 (120) + on left: 110 111 112 113, on right: 109 112 113 +func_fields_body (121) + on left: 114, on right: 104 105 +func_fields_body1 (122) + on left: 115 116 117 118, on right: 114 117 118 +func_body (123) + on left: 119, on right: 115 116 +func_body1 (124) + on left: 120 121 122, on right: 119 121 122 +offset (125) + on left: 123 124, on right: 125 126 132 133 +elem (126) + on left: 125 126, on right: 164 +table (127) + on left: 127, on right: 161 +table_fields (128) + on left: 128 129 130 131, on right: 127 130 +data (129) + on left: 132 133, on right: 165 +memory (130) + on left: 134, on right: 162 +memory_fields (131) + on left: 135 136 137 138, on right: 134 137 +global (132) + on left: 139, on right: 160 +global_fields (133) + on left: 140 141 142, on right: 139 142 +import_desc (134) + on left: 143 144 145 146 147, on right: 148 +import (135) + on left: 148, on right: 167 +inline_import (136) + on left: 149, on right: 106 107 129 136 141 +export_desc (137) + on left: 150 151 152 153, on right: 154 +export (138) + on left: 154, on right: 168 +inline_export (139) + on left: 155, on right: 108 130 137 142 +type_def (140) + on left: 156 157, on right: 159 +start (141) + on left: 158, on right: 166 +module_field (142) + on left: 159 160 161 162 163 164 165 166 167 168, on right: 171 + 172 +module_fields_opt (143) + on left: 169 170, on right: 173 +module_fields (144) + on left: 171 172, on right: 170 172 176 +raw_module (145) + on left: 173 174, on right: 175 181 182 183 184 +module (146) + on left: 175, on right: 192 +inline_module (147) + on left: 176, on right: 201 +script_var_opt (148) + on left: 177 178, on right: 179 180 193 +action (149) + on left: 179 180, on right: 185 186 187 188 189 190 +assertion (150) + on left: 181 182 183 184 185 186 187 188 189, on right: 191 +cmd (151) + on left: 190 191 192 193, on right: 194 195 +cmd_list (152) + on left: 194 195, on right: 195 200 +const (153) + on left: 196, on right: 198 +const_list (154) + on left: 197 198, on right: 179 185 198 +script (155) + on left: 199 200 201, on right: 202 +script_start (156) + on left: 202, on right: 0 State 0 @@ -509,7 +545,7 @@ State 0 "(" shift, and go to state 1 - $default reduce using rule 186 (script) + $default reduce using rule 199 (script) func go to state 2 elem go to state 3 @@ -536,33 +572,33 @@ State 0 State 1 - 90 func: "(" . FUNC bind_var_opt func_fields ")" - 112 elem: "(" . ELEM var offset var_list ")" - 113 | "(" . ELEM offset var_list ")" - 114 table: "(" . TABLE bind_var_opt table_fields ")" - 119 data: "(" . DATA var offset text_list_opt ")" - 120 | "(" . DATA offset text_list_opt ")" - 121 memory: "(" . MEMORY bind_var_opt memory_fields ")" - 126 global: "(" . GLOBAL bind_var_opt global_fields ")" - 135 import: "(" . IMPORT quoted_text quoted_text import_desc ")" - 141 export: "(" . EXPORT quoted_text export_desc ")" - 143 type_def: "(" . TYPE func_type ")" - 144 | "(" . TYPE bind_var func_type ")" - 145 start: "(" . START var ")" - 160 raw_module: "(" . MODULE bind_var_opt module_fields_opt ")" - 161 | "(" . MODULE bind_var_opt text_list ")" - 166 action: "(" . INVOKE script_var_opt quoted_text const_list ")" - 167 | "(" . GET script_var_opt quoted_text ")" - 168 assertion: "(" . ASSERT_MALFORMED raw_module quoted_text ")" - 169 | "(" . ASSERT_INVALID raw_module quoted_text ")" - 170 | "(" . ASSERT_UNLINKABLE raw_module quoted_text ")" - 171 | "(" . ASSERT_TRAP raw_module quoted_text ")" - 172 | "(" . ASSERT_RETURN action const_list ")" - 173 | "(" . ASSERT_RETURN_CANONICAL_NAN action ")" - 174 | "(" . ASSERT_RETURN_ARITHMETIC_NAN action ")" - 175 | "(" . ASSERT_TRAP action quoted_text ")" - 176 | "(" . ASSERT_EXHAUSTION action quoted_text ")" - 180 cmd: "(" . REGISTER quoted_text script_var_opt ")" + 103 func: "(" . FUNC bind_var_opt func_fields ")" + 125 elem: "(" . ELEM var offset var_list ")" + 126 | "(" . ELEM offset var_list ")" + 127 table: "(" . TABLE bind_var_opt table_fields ")" + 132 data: "(" . DATA var offset text_list_opt ")" + 133 | "(" . DATA offset text_list_opt ")" + 134 memory: "(" . MEMORY bind_var_opt memory_fields ")" + 139 global: "(" . GLOBAL bind_var_opt global_fields ")" + 148 import: "(" . IMPORT quoted_text quoted_text import_desc ")" + 154 export: "(" . EXPORT quoted_text export_desc ")" + 156 type_def: "(" . TYPE func_type ")" + 157 | "(" . TYPE bind_var func_type ")" + 158 start: "(" . START var ")" + 173 raw_module: "(" . MODULE bind_var_opt module_fields_opt ")" + 174 | "(" . MODULE bind_var_opt text_list ")" + 179 action: "(" . INVOKE script_var_opt quoted_text const_list ")" + 180 | "(" . GET script_var_opt quoted_text ")" + 181 assertion: "(" . ASSERT_MALFORMED raw_module quoted_text ")" + 182 | "(" . ASSERT_INVALID raw_module quoted_text ")" + 183 | "(" . ASSERT_UNLINKABLE raw_module quoted_text ")" + 184 | "(" . ASSERT_TRAP raw_module quoted_text ")" + 185 | "(" . ASSERT_RETURN action const_list ")" + 186 | "(" . ASSERT_RETURN_CANONICAL_NAN action ")" + 187 | "(" . ASSERT_RETURN_ARITHMETIC_NAN action ")" + 188 | "(" . ASSERT_TRAP action quoted_text ")" + 189 | "(" . ASSERT_EXHAUSTION action quoted_text ")" + 193 cmd: "(" . REGISTER quoted_text script_var_opt ")" FUNC shift, and go to state 23 START shift, and go to state 24 @@ -590,89 +626,89 @@ State 1 State 2 - 150 module_field: func . + 163 module_field: func . - $default reduce using rule 150 (module_field) + $default reduce using rule 163 (module_field) State 3 - 151 module_field: elem . + 164 module_field: elem . - $default reduce using rule 151 (module_field) + $default reduce using rule 164 (module_field) State 4 - 148 module_field: table . + 161 module_field: table . - $default reduce using rule 148 (module_field) + $default reduce using rule 161 (module_field) State 5 - 152 module_field: data . + 165 module_field: data . - $default reduce using rule 152 (module_field) + $default reduce using rule 165 (module_field) State 6 - 149 module_field: memory . + 162 module_field: memory . - $default reduce using rule 149 (module_field) + $default reduce using rule 162 (module_field) State 7 - 147 module_field: global . + 160 module_field: global . - $default reduce using rule 147 (module_field) + $default reduce using rule 160 (module_field) State 8 - 154 module_field: import . + 167 module_field: import . - $default reduce using rule 154 (module_field) + $default reduce using rule 167 (module_field) State 9 - 155 module_field: export . + 168 module_field: export . - $default reduce using rule 155 (module_field) + $default reduce using rule 168 (module_field) State 10 - 146 module_field: type_def . + 159 module_field: type_def . - $default reduce using rule 146 (module_field) + $default reduce using rule 159 (module_field) State 11 - 153 module_field: start . + 166 module_field: start . - $default reduce using rule 153 (module_field) + $default reduce using rule 166 (module_field) State 12 - 158 module_fields: module_field . + 171 module_fields: module_field . - $default reduce using rule 158 (module_fields) + $default reduce using rule 171 (module_fields) State 13 - 159 module_fields: module_fields . module_field - 163 inline_module: module_fields . + 172 module_fields: module_fields . module_field + 176 inline_module: module_fields . "(" shift, and go to state 45 - $default reduce using rule 163 (inline_module) + $default reduce using rule 176 (inline_module) func go to state 2 elem go to state 3 @@ -689,54 +725,54 @@ State 13 State 14 - 162 module: raw_module . + 175 module: raw_module . - $default reduce using rule 162 (module) + $default reduce using rule 175 (module) State 15 - 179 cmd: module . + 192 cmd: module . - $default reduce using rule 179 (cmd) + $default reduce using rule 192 (cmd) State 16 - 188 script: inline_module . + 201 script: inline_module . - $default reduce using rule 188 (script) + $default reduce using rule 201 (script) State 17 - 177 cmd: action . + 190 cmd: action . - $default reduce using rule 177 (cmd) + $default reduce using rule 190 (cmd) State 18 - 178 cmd: assertion . + 191 cmd: assertion . - $default reduce using rule 178 (cmd) + $default reduce using rule 191 (cmd) State 19 - 181 cmd_list: cmd . + 194 cmd_list: cmd . - $default reduce using rule 181 (cmd_list) + $default reduce using rule 194 (cmd_list) State 20 - 182 cmd_list: cmd_list . cmd - 187 script: cmd_list . + 195 cmd_list: cmd_list . cmd + 200 script: cmd_list . "(" shift, and go to state 47 - $default reduce using rule 187 (script) + $default reduce using rule 200 (script) raw_module go to state 14 module go to state 15 @@ -747,9 +783,9 @@ State 20 State 21 - 189 script_start: script . + 202 script_start: script . - $default reduce using rule 189 (script_start) + $default reduce using rule 202 (script_start) State 22 @@ -761,7 +797,7 @@ State 22 State 23 - 90 func: "(" FUNC . bind_var_opt func_fields ")" + 103 func: "(" FUNC . bind_var_opt func_fields ")" VAR shift, and go to state 50 @@ -773,7 +809,7 @@ State 23 State 24 - 145 start: "(" START . var ")" + 158 start: "(" START . var ")" NAT shift, and go to state 53 VAR shift, and go to state 54 @@ -784,8 +820,8 @@ State 24 State 25 - 143 type_def: "(" TYPE . func_type ")" - 144 | "(" TYPE . bind_var func_type ")" + 156 type_def: "(" TYPE . func_type ")" + 157 | "(" TYPE . bind_var func_type ")" "(" shift, and go to state 57 VAR shift, and go to state 50 @@ -796,7 +832,7 @@ State 25 State 26 - 126 global: "(" GLOBAL . bind_var_opt global_fields ")" + 139 global: "(" GLOBAL . bind_var_opt global_fields ")" VAR shift, and go to state 50 @@ -808,8 +844,8 @@ State 26 State 27 - 160 raw_module: "(" MODULE . bind_var_opt module_fields_opt ")" - 161 | "(" MODULE . bind_var_opt text_list ")" + 173 raw_module: "(" MODULE . bind_var_opt module_fields_opt ")" + 174 | "(" MODULE . bind_var_opt text_list ")" VAR shift, and go to state 50 @@ -821,7 +857,7 @@ State 27 State 28 - 114 table: "(" TABLE . bind_var_opt table_fields ")" + 127 table: "(" TABLE . bind_var_opt table_fields ")" VAR shift, and go to state 50 @@ -833,8 +869,8 @@ State 28 State 29 - 112 elem: "(" ELEM . var offset var_list ")" - 113 | "(" ELEM . offset var_list ")" + 125 elem: "(" ELEM . var offset var_list ")" + 126 | "(" ELEM . offset var_list ")" "(" shift, and go to state 63 NAT shift, and go to state 53 @@ -848,7 +884,7 @@ State 29 State 30 - 121 memory: "(" MEMORY . bind_var_opt memory_fields ")" + 134 memory: "(" MEMORY . bind_var_opt memory_fields ")" VAR shift, and go to state 50 @@ -860,8 +896,8 @@ State 30 State 31 - 119 data: "(" DATA . var offset text_list_opt ")" - 120 | "(" DATA . offset text_list_opt ")" + 132 data: "(" DATA . var offset text_list_opt ")" + 133 | "(" DATA . offset text_list_opt ")" "(" shift, and go to state 63 NAT shift, and go to state 53 @@ -875,7 +911,7 @@ State 31 State 32 - 135 import: "(" IMPORT . quoted_text quoted_text import_desc ")" + 148 import: "(" IMPORT . quoted_text quoted_text import_desc ")" TEXT shift, and go to state 70 @@ -884,7 +920,7 @@ State 32 State 33 - 141 export: "(" EXPORT . quoted_text export_desc ")" + 154 export: "(" EXPORT . quoted_text export_desc ")" TEXT shift, and go to state 70 @@ -893,7 +929,7 @@ State 33 State 34 - 180 cmd: "(" REGISTER . quoted_text script_var_opt ")" + 193 cmd: "(" REGISTER . quoted_text script_var_opt ")" TEXT shift, and go to state 70 @@ -902,29 +938,29 @@ State 34 State 35 - 166 action: "(" INVOKE . script_var_opt quoted_text const_list ")" + 179 action: "(" INVOKE . script_var_opt quoted_text const_list ")" VAR shift, and go to state 74 - $default reduce using rule 164 (script_var_opt) + $default reduce using rule 177 (script_var_opt) script_var_opt go to state 75 State 36 - 167 action: "(" GET . script_var_opt quoted_text ")" + 180 action: "(" GET . script_var_opt quoted_text ")" VAR shift, and go to state 74 - $default reduce using rule 164 (script_var_opt) + $default reduce using rule 177 (script_var_opt) script_var_opt go to state 76 State 37 - 168 assertion: "(" ASSERT_MALFORMED . raw_module quoted_text ")" + 181 assertion: "(" ASSERT_MALFORMED . raw_module quoted_text ")" "(" shift, and go to state 77 @@ -933,7 +969,7 @@ State 37 State 38 - 169 assertion: "(" ASSERT_INVALID . raw_module quoted_text ")" + 182 assertion: "(" ASSERT_INVALID . raw_module quoted_text ")" "(" shift, and go to state 77 @@ -942,7 +978,7 @@ State 38 State 39 - 170 assertion: "(" ASSERT_UNLINKABLE . raw_module quoted_text ")" + 183 assertion: "(" ASSERT_UNLINKABLE . raw_module quoted_text ")" "(" shift, and go to state 77 @@ -951,7 +987,7 @@ State 39 State 40 - 172 assertion: "(" ASSERT_RETURN . action const_list ")" + 185 assertion: "(" ASSERT_RETURN . action const_list ")" "(" shift, and go to state 81 @@ -960,7 +996,7 @@ State 40 State 41 - 173 assertion: "(" ASSERT_RETURN_CANONICAL_NAN . action ")" + 186 assertion: "(" ASSERT_RETURN_CANONICAL_NAN . action ")" "(" shift, and go to state 81 @@ -969,7 +1005,7 @@ State 41 State 42 - 174 assertion: "(" ASSERT_RETURN_ARITHMETIC_NAN . action ")" + 187 assertion: "(" ASSERT_RETURN_ARITHMETIC_NAN . action ")" "(" shift, and go to state 81 @@ -978,8 +1014,8 @@ State 42 State 43 - 171 assertion: "(" ASSERT_TRAP . raw_module quoted_text ")" - 175 | "(" ASSERT_TRAP . action quoted_text ")" + 184 assertion: "(" ASSERT_TRAP . raw_module quoted_text ")" + 188 | "(" ASSERT_TRAP . action quoted_text ")" "(" shift, and go to state 85 @@ -989,7 +1025,7 @@ State 43 State 44 - 176 assertion: "(" ASSERT_EXHAUSTION . action quoted_text ")" + 189 assertion: "(" ASSERT_EXHAUSTION . action quoted_text ")" "(" shift, and go to state 81 @@ -998,19 +1034,19 @@ State 44 State 45 - 90 func: "(" . FUNC bind_var_opt func_fields ")" - 112 elem: "(" . ELEM var offset var_list ")" - 113 | "(" . ELEM offset var_list ")" - 114 table: "(" . TABLE bind_var_opt table_fields ")" - 119 data: "(" . DATA var offset text_list_opt ")" - 120 | "(" . DATA offset text_list_opt ")" - 121 memory: "(" . MEMORY bind_var_opt memory_fields ")" - 126 global: "(" . GLOBAL bind_var_opt global_fields ")" - 135 import: "(" . IMPORT quoted_text quoted_text import_desc ")" - 141 export: "(" . EXPORT quoted_text export_desc ")" - 143 type_def: "(" . TYPE func_type ")" - 144 | "(" . TYPE bind_var func_type ")" - 145 start: "(" . START var ")" + 103 func: "(" . FUNC bind_var_opt func_fields ")" + 125 elem: "(" . ELEM var offset var_list ")" + 126 | "(" . ELEM offset var_list ")" + 127 table: "(" . TABLE bind_var_opt table_fields ")" + 132 data: "(" . DATA var offset text_list_opt ")" + 133 | "(" . DATA offset text_list_opt ")" + 134 memory: "(" . MEMORY bind_var_opt memory_fields ")" + 139 global: "(" . GLOBAL bind_var_opt global_fields ")" + 148 import: "(" . IMPORT quoted_text quoted_text import_desc ")" + 154 export: "(" . EXPORT quoted_text export_desc ")" + 156 type_def: "(" . TYPE func_type ")" + 157 | "(" . TYPE bind_var func_type ")" + 158 start: "(" . START var ")" FUNC shift, and go to state 23 START shift, and go to state 24 @@ -1026,27 +1062,27 @@ State 45 State 46 - 159 module_fields: module_fields module_field . + 172 module_fields: module_fields module_field . - $default reduce using rule 159 (module_fields) + $default reduce using rule 172 (module_fields) State 47 - 160 raw_module: "(" . MODULE bind_var_opt module_fields_opt ")" - 161 | "(" . MODULE bind_var_opt text_list ")" - 166 action: "(" . INVOKE script_var_opt quoted_text const_list ")" - 167 | "(" . GET script_var_opt quoted_text ")" - 168 assertion: "(" . ASSERT_MALFORMED raw_module quoted_text ")" - 169 | "(" . ASSERT_INVALID raw_module quoted_text ")" - 170 | "(" . ASSERT_UNLINKABLE raw_module quoted_text ")" - 171 | "(" . ASSERT_TRAP raw_module quoted_text ")" - 172 | "(" . ASSERT_RETURN action const_list ")" - 173 | "(" . ASSERT_RETURN_CANONICAL_NAN action ")" - 174 | "(" . ASSERT_RETURN_ARITHMETIC_NAN action ")" - 175 | "(" . ASSERT_TRAP action quoted_text ")" - 176 | "(" . ASSERT_EXHAUSTION action quoted_text ")" - 180 cmd: "(" . REGISTER quoted_text script_var_opt ")" + 173 raw_module: "(" . MODULE bind_var_opt module_fields_opt ")" + 174 | "(" . MODULE bind_var_opt text_list ")" + 179 action: "(" . INVOKE script_var_opt quoted_text const_list ")" + 180 | "(" . GET script_var_opt quoted_text ")" + 181 assertion: "(" . ASSERT_MALFORMED raw_module quoted_text ")" + 182 | "(" . ASSERT_INVALID raw_module quoted_text ")" + 183 | "(" . ASSERT_UNLINKABLE raw_module quoted_text ")" + 184 | "(" . ASSERT_TRAP raw_module quoted_text ")" + 185 | "(" . ASSERT_RETURN action const_list ")" + 186 | "(" . ASSERT_RETURN_CANONICAL_NAN action ")" + 187 | "(" . ASSERT_RETURN_ARITHMETIC_NAN action ")" + 188 | "(" . ASSERT_TRAP action quoted_text ")" + 189 | "(" . ASSERT_EXHAUSTION action quoted_text ")" + 193 cmd: "(" . REGISTER quoted_text script_var_opt ")" MODULE shift, and go to state 27 REGISTER shift, and go to state 34 @@ -1064,9 +1100,9 @@ State 47 State 48 - 182 cmd_list: cmd_list cmd . + 195 cmd_list: cmd_list cmd . - $default reduce using rule 182 (cmd_list) + $default reduce using rule 195 (cmd_list) State 49 @@ -1085,7 +1121,7 @@ State 50 State 51 - 90 func: "(" FUNC bind_var_opt . func_fields ")" + 103 func: "(" FUNC bind_var_opt . func_fields ")" "(" shift, and go to state 89 NOP shift, and go to state 90 @@ -1096,41 +1132,47 @@ State 51 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - type_use go to state 117 - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 122 - func_fields go to state 123 - func_fields_body go to state 124 - func_fields_body1 go to state 125 - func_body go to state 126 - func_body1 go to state 127 - inline_import go to state 128 - inline_export go to state 129 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + type_use go to state 120 + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 128 + func_fields go to state 129 + func_fields_body go to state 130 + func_fields_body1 go to state 131 + func_body go to state 132 + func_body1 go to state 133 + inline_import go to state 134 + inline_export go to state 135 State 52 @@ -1163,58 +1205,58 @@ State 55 State 56 - 145 start: "(" START var . ")" + 158 start: "(" START var . ")" - ")" shift, and go to state 130 + ")" shift, and go to state 136 State 57 11 func_type: "(" . FUNC func_sig ")" - FUNC shift, and go to state 131 + FUNC shift, and go to state 137 State 58 - 143 type_def: "(" TYPE func_type . ")" + 156 type_def: "(" TYPE func_type . ")" - ")" shift, and go to state 132 + ")" shift, and go to state 138 State 59 - 144 type_def: "(" TYPE bind_var . func_type ")" + 157 type_def: "(" TYPE bind_var . func_type ")" "(" shift, and go to state 57 - func_type go to state 133 + func_type go to state 139 State 60 - 126 global: "(" GLOBAL bind_var_opt . global_fields ")" + 139 global: "(" GLOBAL bind_var_opt . global_fields ")" - "(" shift, and go to state 134 - VALUE_TYPE shift, and go to state 135 + "(" shift, and go to state 140 + VALUE_TYPE shift, and go to state 141 - global_type go to state 136 - global_fields go to state 137 - inline_import go to state 138 - inline_export go to state 139 + global_type go to state 142 + global_fields go to state 143 + inline_import go to state 144 + inline_export go to state 145 State 61 - 160 raw_module: "(" MODULE bind_var_opt . module_fields_opt ")" - 161 | "(" MODULE bind_var_opt . text_list ")" + 173 raw_module: "(" MODULE bind_var_opt . module_fields_opt ")" + 174 | "(" MODULE bind_var_opt . text_list ")" "(" shift, and go to state 45 - TEXT shift, and go to state 140 + TEXT shift, and go to state 146 - $default reduce using rule 156 (module_fields_opt) + $default reduce using rule 169 (module_fields_opt) - text_list go to state 141 + text_list go to state 147 func go to state 2 elem go to state 3 table go to state 4 @@ -1226,126 +1268,132 @@ State 61 type_def go to state 10 start go to state 11 module_field go to state 12 - module_fields_opt go to state 142 - module_fields go to state 143 + module_fields_opt go to state 148 + module_fields go to state 149 State 62 - 114 table: "(" TABLE bind_var_opt . table_fields ")" + 127 table: "(" TABLE bind_var_opt . table_fields ")" - "(" shift, and go to state 144 + "(" shift, and go to state 150 NAT shift, and go to state 53 - ANYFUNC shift, and go to state 145 + ANYFUNC shift, and go to state 151 - elem_type go to state 146 - table_sig go to state 147 - limits go to state 148 - nat go to state 149 - table_fields go to state 150 - inline_import go to state 151 - inline_export go to state 152 + elem_type go to state 152 + table_sig go to state 153 + limits go to state 154 + nat go to state 155 + table_fields go to state 156 + inline_import go to state 157 + inline_export go to state 158 State 63 - 72 expr: "(" . expr1 ")" - 110 offset: "(" . OFFSET const_expr ")" + 79 expr: "(" . expr1 ")" + 123 offset: "(" . OFFSET const_expr ")" NOP shift, and go to state 90 DROP shift, and go to state 91 - BLOCK shift, and go to state 153 - IF shift, and go to state 154 - LOOP shift, and go to state 155 + BLOCK shift, and go to state 159 + IF shift, and go to state 160 + LOOP shift, and go to state 161 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - OFFSET shift, and go to state 156 - - plain_instr go to state 157 - expr1 go to state 158 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + OFFSET shift, and go to state 162 + + plain_instr go to state 163 + expr1 go to state 164 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 165 State 64 - 112 elem: "(" ELEM var . offset var_list ")" + 125 elem: "(" ELEM var . offset var_list ")" "(" shift, and go to state 63 expr go to state 65 - offset go to state 159 + offset go to state 166 State 65 - 111 offset: expr . + 124 offset: expr . - $default reduce using rule 111 (offset) + $default reduce using rule 124 (offset) State 66 - 113 elem: "(" ELEM offset . var_list ")" + 126 elem: "(" ELEM offset . var_list ")" $default reduce using rule 27 (var_list) - var_list go to state 160 + var_list go to state 167 State 67 - 121 memory: "(" MEMORY bind_var_opt . memory_fields ")" + 134 memory: "(" MEMORY bind_var_opt . memory_fields ")" - "(" shift, and go to state 161 + "(" shift, and go to state 168 NAT shift, and go to state 53 - memory_sig go to state 162 - limits go to state 163 - nat go to state 149 - memory_fields go to state 164 - inline_import go to state 165 - inline_export go to state 166 + memory_sig go to state 169 + limits go to state 170 + nat go to state 155 + memory_fields go to state 171 + inline_import go to state 172 + inline_export go to state 173 State 68 - 119 data: "(" DATA var . offset text_list_opt ")" + 132 data: "(" DATA var . offset text_list_opt ")" "(" shift, and go to state 63 expr go to state 65 - offset go to state 167 + offset go to state 174 State 69 - 120 data: "(" DATA offset . text_list_opt ")" + 133 data: "(" DATA offset . text_list_opt ")" - TEXT shift, and go to state 140 + TEXT shift, and go to state 146 $default reduce using rule 3 (text_list_opt) - text_list go to state 168 - text_list_opt go to state 169 + text_list go to state 175 + text_list_opt go to state 176 State 70 @@ -1357,97 +1405,97 @@ State 70 State 71 - 135 import: "(" IMPORT quoted_text . quoted_text import_desc ")" + 148 import: "(" IMPORT quoted_text . quoted_text import_desc ")" TEXT shift, and go to state 70 - quoted_text go to state 170 + quoted_text go to state 177 State 72 - 141 export: "(" EXPORT quoted_text . export_desc ")" + 154 export: "(" EXPORT quoted_text . export_desc ")" - "(" shift, and go to state 171 + "(" shift, and go to state 178 - export_desc go to state 172 + export_desc go to state 179 State 73 - 180 cmd: "(" REGISTER quoted_text . script_var_opt ")" + 193 cmd: "(" REGISTER quoted_text . script_var_opt ")" VAR shift, and go to state 74 - $default reduce using rule 164 (script_var_opt) + $default reduce using rule 177 (script_var_opt) - script_var_opt go to state 173 + script_var_opt go to state 180 State 74 - 165 script_var_opt: VAR . + 178 script_var_opt: VAR . - $default reduce using rule 165 (script_var_opt) + $default reduce using rule 178 (script_var_opt) State 75 - 166 action: "(" INVOKE script_var_opt . quoted_text const_list ")" + 179 action: "(" INVOKE script_var_opt . quoted_text const_list ")" TEXT shift, and go to state 70 - quoted_text go to state 174 + quoted_text go to state 181 State 76 - 167 action: "(" GET script_var_opt . quoted_text ")" + 180 action: "(" GET script_var_opt . quoted_text ")" TEXT shift, and go to state 70 - quoted_text go to state 175 + quoted_text go to state 182 State 77 - 160 raw_module: "(" . MODULE bind_var_opt module_fields_opt ")" - 161 | "(" . MODULE bind_var_opt text_list ")" + 173 raw_module: "(" . MODULE bind_var_opt module_fields_opt ")" + 174 | "(" . MODULE bind_var_opt text_list ")" MODULE shift, and go to state 27 State 78 - 168 assertion: "(" ASSERT_MALFORMED raw_module . quoted_text ")" + 181 assertion: "(" ASSERT_MALFORMED raw_module . quoted_text ")" TEXT shift, and go to state 70 - quoted_text go to state 176 + quoted_text go to state 183 State 79 - 169 assertion: "(" ASSERT_INVALID raw_module . quoted_text ")" + 182 assertion: "(" ASSERT_INVALID raw_module . quoted_text ")" TEXT shift, and go to state 70 - quoted_text go to state 177 + quoted_text go to state 184 State 80 - 170 assertion: "(" ASSERT_UNLINKABLE raw_module . quoted_text ")" + 183 assertion: "(" ASSERT_UNLINKABLE raw_module . quoted_text ")" TEXT shift, and go to state 70 - quoted_text go to state 178 + quoted_text go to state 185 State 81 - 166 action: "(" . INVOKE script_var_opt quoted_text const_list ")" - 167 | "(" . GET script_var_opt quoted_text ")" + 179 action: "(" . INVOKE script_var_opt quoted_text const_list ")" + 180 | "(" . GET script_var_opt quoted_text ")" INVOKE shift, and go to state 35 GET shift, and go to state 36 @@ -1455,33 +1503,33 @@ State 81 State 82 - 172 assertion: "(" ASSERT_RETURN action . const_list ")" + 185 assertion: "(" ASSERT_RETURN action . const_list ")" - $default reduce using rule 184 (const_list) + $default reduce using rule 197 (const_list) - const_list go to state 179 + const_list go to state 186 State 83 - 173 assertion: "(" ASSERT_RETURN_CANONICAL_NAN action . ")" + 186 assertion: "(" ASSERT_RETURN_CANONICAL_NAN action . ")" - ")" shift, and go to state 180 + ")" shift, and go to state 187 State 84 - 174 assertion: "(" ASSERT_RETURN_ARITHMETIC_NAN action . ")" + 187 assertion: "(" ASSERT_RETURN_ARITHMETIC_NAN action . ")" - ")" shift, and go to state 181 + ")" shift, and go to state 188 State 85 - 160 raw_module: "(" . MODULE bind_var_opt module_fields_opt ")" - 161 | "(" . MODULE bind_var_opt text_list ")" - 166 action: "(" . INVOKE script_var_opt quoted_text const_list ")" - 167 | "(" . GET script_var_opt quoted_text ")" + 173 raw_module: "(" . MODULE bind_var_opt module_fields_opt ")" + 174 | "(" . MODULE bind_var_opt text_list ")" + 179 action: "(" . INVOKE script_var_opt quoted_text const_list ")" + 180 | "(" . GET script_var_opt quoted_text ")" MODULE shift, and go to state 27 INVOKE shift, and go to state 35 @@ -1490,79 +1538,85 @@ State 85 State 86 - 171 assertion: "(" ASSERT_TRAP raw_module . quoted_text ")" + 184 assertion: "(" ASSERT_TRAP raw_module . quoted_text ")" TEXT shift, and go to state 70 - quoted_text go to state 182 + quoted_text go to state 189 State 87 - 175 assertion: "(" ASSERT_TRAP action . quoted_text ")" + 188 assertion: "(" ASSERT_TRAP action . quoted_text ")" TEXT shift, and go to state 70 - quoted_text go to state 183 + quoted_text go to state 190 State 88 - 176 assertion: "(" ASSERT_EXHAUSTION action . quoted_text ")" + 189 assertion: "(" ASSERT_EXHAUSTION action . quoted_text ")" TEXT shift, and go to state 70 - quoted_text go to state 184 + quoted_text go to state 191 State 89 20 type_use: "(" . TYPE var ")" - 72 expr: "(" . expr1 ")" - 103 func_fields_body1: "(" . RESULT value_type_list ")" func_body - 104 | "(" . PARAM value_type_list ")" func_fields_body1 - 105 | "(" . PARAM bind_var VALUE_TYPE ")" func_fields_body1 - 108 func_body1: "(" . LOCAL value_type_list ")" func_body1 - 109 | "(" . LOCAL bind_var VALUE_TYPE ")" func_body1 - 136 inline_import: "(" . IMPORT quoted_text quoted_text ")" - 142 inline_export: "(" . EXPORT quoted_text ")" + 79 expr: "(" . expr1 ")" + 116 func_fields_body1: "(" . RESULT value_type_list ")" func_body + 117 | "(" . PARAM value_type_list ")" func_fields_body1 + 118 | "(" . PARAM bind_var VALUE_TYPE ")" func_fields_body1 + 121 func_body1: "(" . LOCAL value_type_list ")" func_body1 + 122 | "(" . LOCAL bind_var VALUE_TYPE ")" func_body1 + 149 inline_import: "(" . IMPORT quoted_text quoted_text ")" + 155 inline_export: "(" . EXPORT quoted_text ")" NOP shift, and go to state 90 DROP shift, and go to state 91 - BLOCK shift, and go to state 153 - IF shift, and go to state 154 - LOOP shift, and go to state 155 + BLOCK shift, and go to state 159 + IF shift, and go to state 160 + LOOP shift, and go to state 161 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - TYPE shift, and go to state 185 - PARAM shift, and go to state 186 - RESULT shift, and go to state 187 - LOCAL shift, and go to state 188 - IMPORT shift, and go to state 189 - EXPORT shift, and go to state 190 - - plain_instr go to state 157 - expr1 go to state 158 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + TYPE shift, and go to state 192 + PARAM shift, and go to state 193 + RESULT shift, and go to state 194 + LOCAL shift, and go to state 195 + IMPORT shift, and go to state 196 + EXPORT shift, and go to state 197 + + plain_instr go to state 163 + expr1 go to state 164 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 165 State 90 @@ -1581,39 +1635,39 @@ State 91 State 92 - 65 block_instr: BLOCK . labeling_opt block END labeling_opt + 67 block_instr: BLOCK . labeling_opt block END labeling_opt VAR shift, and go to state 50 $default reduce using rule 32 (labeling_opt) - bind_var go to state 191 - labeling_opt go to state 192 + bind_var go to state 198 + labeling_opt go to state 199 State 93 - 67 block_instr: IF . labeling_opt block END labeling_opt - 68 | IF . labeling_opt block ELSE labeling_opt instr_list END labeling_opt + 69 block_instr: IF . labeling_opt block END labeling_opt + 70 | IF . labeling_opt block ELSE labeling_opt instr_list END labeling_opt VAR shift, and go to state 50 $default reduce using rule 32 (labeling_opt) - bind_var go to state 191 - labeling_opt go to state 193 + bind_var go to state 198 + labeling_opt go to state 200 State 94 - 66 block_instr: LOOP . labeling_opt block END labeling_opt + 68 block_instr: LOOP . labeling_opt block END labeling_opt VAR shift, and go to state 50 $default reduce using rule 32 (labeling_opt) - bind_var go to state 191 - labeling_opt go to state 194 + bind_var go to state 198 + labeling_opt go to state 201 State 95 @@ -1624,7 +1678,7 @@ State 95 VAR shift, and go to state 54 nat go to state 55 - var go to state 195 + var go to state 202 State 96 @@ -1635,7 +1689,7 @@ State 96 VAR shift, and go to state 54 nat go to state 55 - var go to state 196 + var go to state 203 State 97 @@ -1644,21 +1698,42 @@ State 97 $default reduce using rule 27 (var_list) - var_list go to state 197 + var_list go to state 204 State 98 + 97 try_check: TRY . + + $default reduce using rule 97 (try_check) + + +State 99 + + 96 throw_check: THROW . + + $default reduce using rule 96 (throw_check) + + +State 100 + + 95 rethrow_check: RETHROW . + + $default reduce using rule 95 (rethrow_check) + + +State 101 + 49 plain_instr: CALL . var NAT shift, and go to state 53 VAR shift, and go to state 54 nat go to state 55 - var go to state 198 + var go to state 205 -State 99 +State 102 50 plain_instr: CALL_INDIRECT . var @@ -1666,17 +1741,17 @@ State 99 VAR shift, and go to state 54 nat go to state 55 - var go to state 199 + var go to state 206 -State 100 +State 103 48 plain_instr: RETURN . $default reduce using rule 48 (plain_instr) -State 101 +State 104 51 plain_instr: GET_LOCAL . var @@ -1684,10 +1759,10 @@ State 101 VAR shift, and go to state 54 nat go to state 55 - var go to state 200 + var go to state 207 -State 102 +State 105 52 plain_instr: SET_LOCAL . var @@ -1695,10 +1770,10 @@ State 102 VAR shift, and go to state 54 nat go to state 55 - var go to state 201 + var go to state 208 -State 103 +State 106 53 plain_instr: TEE_LOCAL . var @@ -1706,10 +1781,10 @@ State 103 VAR shift, and go to state 54 nat go to state 55 - var go to state 202 + var go to state 209 -State 104 +State 107 54 plain_instr: GET_GLOBAL . var @@ -1717,10 +1792,10 @@ State 104 VAR shift, and go to state 54 nat go to state 55 - var go to state 203 + var go to state 210 -State 105 +State 108 55 plain_instr: SET_GLOBAL . var @@ -1728,103 +1803,103 @@ State 105 VAR shift, and go to state 54 nat go to state 55 - var go to state 204 + var go to state 211 -State 106 +State 109 56 plain_instr: LOAD . offset_opt align_opt - OFFSET_EQ_NAT shift, and go to state 205 + OFFSET_EQ_NAT shift, and go to state 212 $default reduce using rule 34 (offset_opt) - offset_opt go to state 206 + offset_opt go to state 213 -State 107 +State 110 57 plain_instr: STORE . offset_opt align_opt - OFFSET_EQ_NAT shift, and go to state 205 + OFFSET_EQ_NAT shift, and go to state 212 $default reduce using rule 34 (offset_opt) - offset_opt go to state 207 + offset_opt go to state 214 -State 108 +State 111 58 plain_instr: CONST . literal - NAT shift, and go to state 208 - INT shift, and go to state 209 - FLOAT shift, and go to state 210 + NAT shift, and go to state 215 + INT shift, and go to state 216 + FLOAT shift, and go to state 217 - literal go to state 211 + literal go to state 218 -State 109 +State 112 59 plain_instr: UNARY . $default reduce using rule 59 (plain_instr) -State 110 +State 113 60 plain_instr: BINARY . $default reduce using rule 60 (plain_instr) -State 111 +State 114 61 plain_instr: COMPARE . $default reduce using rule 61 (plain_instr) -State 112 +State 115 62 plain_instr: CONVERT . $default reduce using rule 62 (plain_instr) -State 113 +State 116 44 plain_instr: SELECT . $default reduce using rule 44 (plain_instr) -State 114 +State 117 41 plain_instr: UNREACHABLE . $default reduce using rule 41 (plain_instr) -State 115 +State 118 63 plain_instr: CURRENT_MEMORY . $default reduce using rule 63 (plain_instr) -State 116 +State 119 64 plain_instr: GROW_MEMORY . $default reduce using rule 64 (plain_instr) -State 117 +State 120 - 91 func_fields: type_use . func_fields_body + 104 func_fields: type_use . func_fields_body - "(" shift, and go to state 212 + "(" shift, and go to state 219 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -1833,44 +1908,50 @@ State 117 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 122 - func_fields_body go to state 213 - func_fields_body1 go to state 125 - func_body go to state 126 - func_body1 go to state 127 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 128 + func_fields_body go to state 220 + func_fields_body1 go to state 131 + func_body go to state 132 + func_body1 go to state 133 -State 118 +State 121 - 86 instr_list: instr . instr_list + 99 instr_list: instr . instr_list - "(" shift, and go to state 214 + "(" shift, and go to state 221 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -1879,115 +1960,155 @@ State 118 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 215 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 222 -State 119 +State 122 38 instr: plain_instr . $default reduce using rule 38 (instr) -State 120 +State 123 39 instr: block_instr . $default reduce using rule 39 (instr) -State 121 +State 124 40 instr: expr . $default reduce using rule 40 (instr) -State 122 +State 125 - 107 func_body1: instr_list . + 66 plain_instr: rethrow_check . var - $default reduce using rule 107 (func_body1) + NAT shift, and go to state 53 + VAR shift, and go to state 54 + nat go to state 55 + var go to state 223 -State 123 - 90 func: "(" FUNC bind_var_opt func_fields . ")" +State 126 - ")" shift, and go to state 216 + 65 plain_instr: throw_check . var + NAT shift, and go to state 53 + VAR shift, and go to state 54 -State 124 + nat go to state 55 + var go to state 224 - 92 func_fields: func_fields_body . - $default reduce using rule 92 (func_fields) +State 127 + 71 block_instr: try_check . labeling_opt block catch_instr_list END labeling_opt -State 125 + VAR shift, and go to state 50 - 101 func_fields_body: func_fields_body1 . + $default reduce using rule 32 (labeling_opt) - $default reduce using rule 101 (func_fields_body) + bind_var go to state 198 + labeling_opt go to state 225 -State 126 +State 128 - 102 func_fields_body1: func_body . + 120 func_body1: instr_list . - $default reduce using rule 102 (func_fields_body1) + $default reduce using rule 120 (func_body1) -State 127 +State 129 - 106 func_body: func_body1 . + 103 func: "(" FUNC bind_var_opt func_fields . ")" - $default reduce using rule 106 (func_body) + ")" shift, and go to state 226 -State 128 +State 130 - 93 func_fields: inline_import . type_use func_fields_import - 94 | inline_import . func_fields_import + 105 func_fields: func_fields_body . - "(" shift, and go to state 217 + $default reduce using rule 105 (func_fields) - $default reduce using rule 97 (func_fields_import1) - type_use go to state 218 - func_fields_import go to state 219 - func_fields_import1 go to state 220 +State 131 + 114 func_fields_body: func_fields_body1 . -State 129 + $default reduce using rule 114 (func_fields_body) + + +State 132 + + 115 func_fields_body1: func_body . + + $default reduce using rule 115 (func_fields_body1) + + +State 133 - 95 func_fields: inline_export . func_fields + 119 func_body: func_body1 . + + $default reduce using rule 119 (func_body) + + +State 134 + + 106 func_fields: inline_import . type_use func_fields_import + 107 | inline_import . func_fields_import + + "(" shift, and go to state 227 + + $default reduce using rule 110 (func_fields_import1) + + type_use go to state 228 + func_fields_import go to state 229 + func_fields_import1 go to state 230 + + +State 135 + + 108 func_fields: inline_export . func_fields "(" shift, and go to state 89 NOP shift, and go to state 90 @@ -1998,98 +2119,104 @@ State 129 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - type_use go to state 117 - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 122 - func_fields go to state 221 - func_fields_body go to state 124 - func_fields_body1 go to state 125 - func_body go to state 126 - func_body1 go to state 127 - inline_import go to state 128 - inline_export go to state 129 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + type_use go to state 120 + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 128 + func_fields go to state 231 + func_fields_body go to state 130 + func_fields_body1 go to state 131 + func_body go to state 132 + func_body1 go to state 133 + inline_import go to state 134 + inline_export go to state 135 -State 130 +State 136 - 145 start: "(" START var ")" . + 158 start: "(" START var ")" . - $default reduce using rule 145 (start) + $default reduce using rule 158 (start) -State 131 +State 137 11 func_type: "(" FUNC . func_sig ")" - "(" shift, and go to state 222 + "(" shift, and go to state 232 $default reduce using rule 12 (func_sig) - func_sig go to state 223 + func_sig go to state 233 -State 132 +State 138 - 143 type_def: "(" TYPE func_type ")" . + 156 type_def: "(" TYPE func_type ")" . - $default reduce using rule 143 (type_def) + $default reduce using rule 156 (type_def) -State 133 +State 139 - 144 type_def: "(" TYPE bind_var func_type . ")" + 157 type_def: "(" TYPE bind_var func_type . ")" - ")" shift, and go to state 224 + ")" shift, and go to state 234 -State 134 +State 140 10 global_type: "(" . MUT VALUE_TYPE ")" - 136 inline_import: "(" . IMPORT quoted_text quoted_text ")" - 142 inline_export: "(" . EXPORT quoted_text ")" + 149 inline_import: "(" . IMPORT quoted_text quoted_text ")" + 155 inline_export: "(" . EXPORT quoted_text ")" - MUT shift, and go to state 225 - IMPORT shift, and go to state 189 - EXPORT shift, and go to state 190 + MUT shift, and go to state 235 + IMPORT shift, and go to state 196 + EXPORT shift, and go to state 197 -State 135 +State 141 9 global_type: VALUE_TYPE . $default reduce using rule 9 (global_type) -State 136 +State 142 - 127 global_fields: global_type . const_expr + 140 global_fields: global_type . const_expr - "(" shift, and go to state 214 + "(" shift, and go to state 221 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -2098,97 +2225,103 @@ State 136 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 226 - const_expr go to state 227 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 236 + const_expr go to state 237 -State 137 +State 143 - 126 global: "(" GLOBAL bind_var_opt global_fields . ")" + 139 global: "(" GLOBAL bind_var_opt global_fields . ")" - ")" shift, and go to state 228 + ")" shift, and go to state 238 -State 138 +State 144 - 128 global_fields: inline_import . global_type + 141 global_fields: inline_import . global_type - "(" shift, and go to state 229 - VALUE_TYPE shift, and go to state 135 + "(" shift, and go to state 239 + VALUE_TYPE shift, and go to state 141 - global_type go to state 230 + global_type go to state 240 -State 139 +State 145 - 129 global_fields: inline_export . global_fields + 142 global_fields: inline_export . global_fields - "(" shift, and go to state 134 - VALUE_TYPE shift, and go to state 135 + "(" shift, and go to state 140 + VALUE_TYPE shift, and go to state 141 - global_type go to state 136 - global_fields go to state 231 - inline_import go to state 138 - inline_export go to state 139 + global_type go to state 142 + global_fields go to state 241 + inline_import go to state 144 + inline_export go to state 145 -State 140 +State 146 1 text_list: TEXT . $default reduce using rule 1 (text_list) -State 141 +State 147 2 text_list: text_list . TEXT - 161 raw_module: "(" MODULE bind_var_opt text_list . ")" + 174 raw_module: "(" MODULE bind_var_opt text_list . ")" - ")" shift, and go to state 232 - TEXT shift, and go to state 233 + ")" shift, and go to state 242 + TEXT shift, and go to state 243 -State 142 +State 148 - 160 raw_module: "(" MODULE bind_var_opt module_fields_opt . ")" + 173 raw_module: "(" MODULE bind_var_opt module_fields_opt . ")" - ")" shift, and go to state 234 + ")" shift, and go to state 244 -State 143 +State 149 - 157 module_fields_opt: module_fields . - 159 module_fields: module_fields . module_field + 170 module_fields_opt: module_fields . + 172 module_fields: module_fields . module_field "(" shift, and go to state 45 - $default reduce using rule 157 (module_fields_opt) + $default reduce using rule 170 (module_fields_opt) func go to state 2 elem go to state 3 @@ -2203,46 +2336,46 @@ State 143 module_field go to state 46 -State 144 +State 150 - 136 inline_import: "(" . IMPORT quoted_text quoted_text ")" - 142 inline_export: "(" . EXPORT quoted_text ")" + 149 inline_import: "(" . IMPORT quoted_text quoted_text ")" + 155 inline_export: "(" . EXPORT quoted_text ")" - IMPORT shift, and go to state 189 - EXPORT shift, and go to state 190 + IMPORT shift, and go to state 196 + EXPORT shift, and go to state 197 -State 145 +State 151 8 elem_type: ANYFUNC . $default reduce using rule 8 (elem_type) -State 146 +State 152 - 118 table_fields: elem_type . "(" ELEM var_list ")" + 131 table_fields: elem_type . "(" ELEM var_list ")" - "(" shift, and go to state 235 + "(" shift, and go to state 245 -State 147 +State 153 - 115 table_fields: table_sig . + 128 table_fields: table_sig . - $default reduce using rule 115 (table_fields) + $default reduce using rule 128 (table_fields) -State 148 +State 154 16 table_sig: limits . elem_type - ANYFUNC shift, and go to state 145 + ANYFUNC shift, and go to state 151 - elem_type go to state 236 + elem_type go to state 246 -State 149 +State 155 18 limits: nat . 19 | nat . nat @@ -2251,85 +2384,85 @@ State 149 $default reduce using rule 18 (limits) - nat go to state 237 + nat go to state 247 -State 150 +State 156 - 114 table: "(" TABLE bind_var_opt table_fields . ")" + 127 table: "(" TABLE bind_var_opt table_fields . ")" - ")" shift, and go to state 238 + ")" shift, and go to state 248 -State 151 +State 157 - 116 table_fields: inline_import . table_sig + 129 table_fields: inline_import . table_sig NAT shift, and go to state 53 - table_sig go to state 239 - limits go to state 148 - nat go to state 149 + table_sig go to state 249 + limits go to state 154 + nat go to state 155 -State 152 +State 158 - 117 table_fields: inline_export . table_fields + 130 table_fields: inline_export . table_fields - "(" shift, and go to state 144 + "(" shift, and go to state 150 NAT shift, and go to state 53 - ANYFUNC shift, and go to state 145 + ANYFUNC shift, and go to state 151 - elem_type go to state 146 - table_sig go to state 147 - limits go to state 148 - nat go to state 149 - table_fields go to state 240 - inline_import go to state 151 - inline_export go to state 152 + elem_type go to state 152 + table_sig go to state 153 + limits go to state 154 + nat go to state 155 + table_fields go to state 250 + inline_import go to state 157 + inline_export go to state 158 -State 153 +State 159 - 74 expr1: BLOCK . labeling_opt block + 81 expr1: BLOCK . labeling_opt block VAR shift, and go to state 50 $default reduce using rule 32 (labeling_opt) - bind_var go to state 191 - labeling_opt go to state 241 + bind_var go to state 198 + labeling_opt go to state 251 -State 154 +State 160 - 76 expr1: IF . labeling_opt if_block + 83 expr1: IF . labeling_opt if_block VAR shift, and go to state 50 $default reduce using rule 32 (labeling_opt) - bind_var go to state 191 - labeling_opt go to state 242 + bind_var go to state 198 + labeling_opt go to state 252 -State 155 +State 161 - 75 expr1: LOOP . labeling_opt block + 82 expr1: LOOP . labeling_opt block VAR shift, and go to state 50 $default reduce using rule 32 (labeling_opt) - bind_var go to state 191 - labeling_opt go to state 243 + bind_var go to state 198 + labeling_opt go to state 253 -State 156 +State 162 - 110 offset: "(" OFFSET . const_expr ")" + 123 offset: "(" OFFSET . const_expr ")" - "(" shift, and go to state 214 + "(" shift, and go to state 221 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -2338,284 +2471,297 @@ State 156 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 226 - const_expr go to state 244 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 236 + const_expr go to state 254 -State 157 +State 163 - 73 expr1: plain_instr . expr_list + 80 expr1: plain_instr . expr_list - "(" shift, and go to state 214 + "(" shift, and go to state 221 - $default reduce using rule 87 (expr_list) + $default reduce using rule 100 (expr_list) - expr go to state 245 - expr_list go to state 246 + expr go to state 255 + expr_list go to state 256 -State 158 +State 164 - 72 expr: "(" expr1 . ")" + 79 expr: "(" expr1 . ")" - ")" shift, and go to state 247 + ")" shift, and go to state 257 -State 159 +State 165 - 112 elem: "(" ELEM var offset . var_list ")" + 84 expr1: try_check . "(" BLOCK labeling_opt block ")" catch_list + + "(" shift, and go to state 258 + + +State 166 + + 125 elem: "(" ELEM var offset . var_list ")" $default reduce using rule 27 (var_list) - var_list go to state 248 + var_list go to state 259 -State 160 +State 167 28 var_list: var_list . var - 113 elem: "(" ELEM offset var_list . ")" + 126 elem: "(" ELEM offset var_list . ")" - ")" shift, and go to state 249 + ")" shift, and go to state 260 NAT shift, and go to state 53 VAR shift, and go to state 54 nat go to state 55 - var go to state 250 + var go to state 261 -State 161 +State 168 - 125 memory_fields: "(" . DATA text_list_opt ")" - 136 inline_import: "(" . IMPORT quoted_text quoted_text ")" - 142 inline_export: "(" . EXPORT quoted_text ")" + 138 memory_fields: "(" . DATA text_list_opt ")" + 149 inline_import: "(" . IMPORT quoted_text quoted_text ")" + 155 inline_export: "(" . EXPORT quoted_text ")" - DATA shift, and go to state 251 - IMPORT shift, and go to state 189 - EXPORT shift, and go to state 190 + DATA shift, and go to state 262 + IMPORT shift, and go to state 196 + EXPORT shift, and go to state 197 -State 162 +State 169 - 122 memory_fields: memory_sig . + 135 memory_fields: memory_sig . - $default reduce using rule 122 (memory_fields) + $default reduce using rule 135 (memory_fields) -State 163 +State 170 17 memory_sig: limits . $default reduce using rule 17 (memory_sig) -State 164 +State 171 - 121 memory: "(" MEMORY bind_var_opt memory_fields . ")" + 134 memory: "(" MEMORY bind_var_opt memory_fields . ")" - ")" shift, and go to state 252 + ")" shift, and go to state 263 -State 165 +State 172 - 123 memory_fields: inline_import . memory_sig + 136 memory_fields: inline_import . memory_sig NAT shift, and go to state 53 - memory_sig go to state 253 - limits go to state 163 - nat go to state 149 + memory_sig go to state 264 + limits go to state 170 + nat go to state 155 -State 166 +State 173 - 124 memory_fields: inline_export . memory_fields + 137 memory_fields: inline_export . memory_fields - "(" shift, and go to state 161 + "(" shift, and go to state 168 NAT shift, and go to state 53 - memory_sig go to state 162 - limits go to state 163 - nat go to state 149 - memory_fields go to state 254 - inline_import go to state 165 - inline_export go to state 166 + memory_sig go to state 169 + limits go to state 170 + nat go to state 155 + memory_fields go to state 265 + inline_import go to state 172 + inline_export go to state 173 -State 167 +State 174 - 119 data: "(" DATA var offset . text_list_opt ")" + 132 data: "(" DATA var offset . text_list_opt ")" - TEXT shift, and go to state 140 + TEXT shift, and go to state 146 $default reduce using rule 3 (text_list_opt) - text_list go to state 168 - text_list_opt go to state 255 + text_list go to state 175 + text_list_opt go to state 266 -State 168 +State 175 2 text_list: text_list . TEXT 4 text_list_opt: text_list . - TEXT shift, and go to state 233 + TEXT shift, and go to state 243 $default reduce using rule 4 (text_list_opt) -State 169 +State 176 - 120 data: "(" DATA offset text_list_opt . ")" + 133 data: "(" DATA offset text_list_opt . ")" - ")" shift, and go to state 256 + ")" shift, and go to state 267 -State 170 +State 177 - 135 import: "(" IMPORT quoted_text quoted_text . import_desc ")" + 148 import: "(" IMPORT quoted_text quoted_text . import_desc ")" - "(" shift, and go to state 257 + "(" shift, and go to state 268 - import_desc go to state 258 + import_desc go to state 269 -State 171 +State 178 - 137 export_desc: "(" . FUNC var ")" - 138 | "(" . TABLE var ")" - 139 | "(" . MEMORY var ")" - 140 | "(" . GLOBAL var ")" + 150 export_desc: "(" . FUNC var ")" + 151 | "(" . TABLE var ")" + 152 | "(" . MEMORY var ")" + 153 | "(" . GLOBAL var ")" - FUNC shift, and go to state 259 - GLOBAL shift, and go to state 260 - TABLE shift, and go to state 261 - MEMORY shift, and go to state 262 + FUNC shift, and go to state 270 + GLOBAL shift, and go to state 271 + TABLE shift, and go to state 272 + MEMORY shift, and go to state 273 -State 172 +State 179 - 141 export: "(" EXPORT quoted_text export_desc . ")" + 154 export: "(" EXPORT quoted_text export_desc . ")" - ")" shift, and go to state 263 + ")" shift, and go to state 274 -State 173 +State 180 - 180 cmd: "(" REGISTER quoted_text script_var_opt . ")" + 193 cmd: "(" REGISTER quoted_text script_var_opt . ")" - ")" shift, and go to state 264 + ")" shift, and go to state 275 -State 174 +State 181 - 166 action: "(" INVOKE script_var_opt quoted_text . const_list ")" + 179 action: "(" INVOKE script_var_opt quoted_text . const_list ")" - $default reduce using rule 184 (const_list) + $default reduce using rule 197 (const_list) - const_list go to state 265 + const_list go to state 276 -State 175 +State 182 - 167 action: "(" GET script_var_opt quoted_text . ")" + 180 action: "(" GET script_var_opt quoted_text . ")" - ")" shift, and go to state 266 + ")" shift, and go to state 277 -State 176 +State 183 - 168 assertion: "(" ASSERT_MALFORMED raw_module quoted_text . ")" + 181 assertion: "(" ASSERT_MALFORMED raw_module quoted_text . ")" - ")" shift, and go to state 267 + ")" shift, and go to state 278 -State 177 +State 184 - 169 assertion: "(" ASSERT_INVALID raw_module quoted_text . ")" + 182 assertion: "(" ASSERT_INVALID raw_module quoted_text . ")" - ")" shift, and go to state 268 + ")" shift, and go to state 279 -State 178 +State 185 - 170 assertion: "(" ASSERT_UNLINKABLE raw_module quoted_text . ")" + 183 assertion: "(" ASSERT_UNLINKABLE raw_module quoted_text . ")" - ")" shift, and go to state 269 + ")" shift, and go to state 280 -State 179 +State 186 - 172 assertion: "(" ASSERT_RETURN action const_list . ")" - 185 const_list: const_list . const + 185 assertion: "(" ASSERT_RETURN action const_list . ")" + 198 const_list: const_list . const - "(" shift, and go to state 270 - ")" shift, and go to state 271 + "(" shift, and go to state 281 + ")" shift, and go to state 282 - const go to state 272 + const go to state 283 -State 180 +State 187 - 173 assertion: "(" ASSERT_RETURN_CANONICAL_NAN action ")" . + 186 assertion: "(" ASSERT_RETURN_CANONICAL_NAN action ")" . - $default reduce using rule 173 (assertion) + $default reduce using rule 186 (assertion) -State 181 +State 188 - 174 assertion: "(" ASSERT_RETURN_ARITHMETIC_NAN action ")" . + 187 assertion: "(" ASSERT_RETURN_ARITHMETIC_NAN action ")" . - $default reduce using rule 174 (assertion) + $default reduce using rule 187 (assertion) -State 182 +State 189 - 171 assertion: "(" ASSERT_TRAP raw_module quoted_text . ")" + 184 assertion: "(" ASSERT_TRAP raw_module quoted_text . ")" - ")" shift, and go to state 273 + ")" shift, and go to state 284 -State 183 +State 190 - 175 assertion: "(" ASSERT_TRAP action quoted_text . ")" + 188 assertion: "(" ASSERT_TRAP action quoted_text . ")" - ")" shift, and go to state 274 + ")" shift, and go to state 285 -State 184 +State 191 - 176 assertion: "(" ASSERT_EXHAUSTION action quoted_text . ")" + 189 assertion: "(" ASSERT_EXHAUSTION action quoted_text . ")" - ")" shift, and go to state 275 + ")" shift, and go to state 286 -State 185 +State 192 20 type_use: "(" TYPE . var ")" @@ -2623,74 +2769,74 @@ State 185 VAR shift, and go to state 54 nat go to state 55 - var go to state 276 + var go to state 287 -State 186 +State 193 - 104 func_fields_body1: "(" PARAM . value_type_list ")" func_fields_body1 - 105 | "(" PARAM . bind_var VALUE_TYPE ")" func_fields_body1 + 117 func_fields_body1: "(" PARAM . value_type_list ")" func_fields_body1 + 118 | "(" PARAM . bind_var VALUE_TYPE ")" func_fields_body1 VAR shift, and go to state 50 $default reduce using rule 6 (value_type_list) - value_type_list go to state 277 - bind_var go to state 278 + value_type_list go to state 288 + bind_var go to state 289 -State 187 +State 194 - 103 func_fields_body1: "(" RESULT . value_type_list ")" func_body + 116 func_fields_body1: "(" RESULT . value_type_list ")" func_body $default reduce using rule 6 (value_type_list) - value_type_list go to state 279 + value_type_list go to state 290 -State 188 +State 195 - 108 func_body1: "(" LOCAL . value_type_list ")" func_body1 - 109 | "(" LOCAL . bind_var VALUE_TYPE ")" func_body1 + 121 func_body1: "(" LOCAL . value_type_list ")" func_body1 + 122 | "(" LOCAL . bind_var VALUE_TYPE ")" func_body1 VAR shift, and go to state 50 $default reduce using rule 6 (value_type_list) - value_type_list go to state 280 - bind_var go to state 281 + value_type_list go to state 291 + bind_var go to state 292 -State 189 +State 196 - 136 inline_import: "(" IMPORT . quoted_text quoted_text ")" + 149 inline_import: "(" IMPORT . quoted_text quoted_text ")" TEXT shift, and go to state 70 - quoted_text go to state 282 + quoted_text go to state 293 -State 190 +State 197 - 142 inline_export: "(" EXPORT . quoted_text ")" + 155 inline_export: "(" EXPORT . quoted_text ")" TEXT shift, and go to state 70 - quoted_text go to state 283 + quoted_text go to state 294 -State 191 +State 198 33 labeling_opt: bind_var . $default reduce using rule 33 (labeling_opt) -State 192 +State 199 - 65 block_instr: BLOCK labeling_opt . block END labeling_opt + 67 block_instr: BLOCK labeling_opt . block END labeling_opt - "(" shift, and go to state 284 + "(" shift, and go to state 295 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -2699,43 +2845,49 @@ State 192 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - block_sig go to state 285 - block go to state 286 - expr go to state 121 - instr_list go to state 287 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + block_sig go to state 296 + block go to state 297 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 298 -State 193 +State 200 - 67 block_instr: IF labeling_opt . block END labeling_opt - 68 | IF labeling_opt . block ELSE labeling_opt instr_list END labeling_opt + 69 block_instr: IF labeling_opt . block END labeling_opt + 70 | IF labeling_opt . block ELSE labeling_opt instr_list END labeling_opt - "(" shift, and go to state 284 + "(" shift, and go to state 295 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -2744,42 +2896,48 @@ State 193 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - block_sig go to state 285 - block go to state 288 - expr go to state 121 - instr_list go to state 287 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + block_sig go to state 296 + block go to state 299 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 298 -State 194 +State 201 - 66 block_instr: LOOP labeling_opt . block END labeling_opt + 68 block_instr: LOOP labeling_opt . block END labeling_opt - "(" shift, and go to state 284 + "(" shift, and go to state 295 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -2788,52 +2946,58 @@ State 194 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - block_sig go to state 285 - block go to state 289 - expr go to state 121 - instr_list go to state 287 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + block_sig go to state 296 + block go to state 300 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 298 -State 195 +State 202 45 plain_instr: BR var . $default reduce using rule 45 (plain_instr) -State 196 +State 203 46 plain_instr: BR_IF var . $default reduce using rule 46 (plain_instr) -State 197 +State 204 28 var_list: var_list . var 47 plain_instr: BR_TABLE var_list . var @@ -2842,402 +3006,478 @@ State 197 VAR shift, and go to state 54 nat go to state 55 - var go to state 290 + var go to state 301 -State 198 +State 205 49 plain_instr: CALL var . $default reduce using rule 49 (plain_instr) -State 199 +State 206 50 plain_instr: CALL_INDIRECT var . $default reduce using rule 50 (plain_instr) -State 200 +State 207 51 plain_instr: GET_LOCAL var . $default reduce using rule 51 (plain_instr) -State 201 +State 208 52 plain_instr: SET_LOCAL var . $default reduce using rule 52 (plain_instr) -State 202 +State 209 53 plain_instr: TEE_LOCAL var . $default reduce using rule 53 (plain_instr) -State 203 +State 210 54 plain_instr: GET_GLOBAL var . $default reduce using rule 54 (plain_instr) -State 204 +State 211 55 plain_instr: SET_GLOBAL var . $default reduce using rule 55 (plain_instr) -State 205 +State 212 35 offset_opt: OFFSET_EQ_NAT . $default reduce using rule 35 (offset_opt) -State 206 +State 213 56 plain_instr: LOAD offset_opt . align_opt - ALIGN_EQ_NAT shift, and go to state 291 + ALIGN_EQ_NAT shift, and go to state 302 $default reduce using rule 36 (align_opt) - align_opt go to state 292 + align_opt go to state 303 -State 207 +State 214 57 plain_instr: STORE offset_opt . align_opt - ALIGN_EQ_NAT shift, and go to state 291 + ALIGN_EQ_NAT shift, and go to state 302 $default reduce using rule 36 (align_opt) - align_opt go to state 293 + align_opt go to state 304 -State 208 +State 215 22 literal: NAT . $default reduce using rule 22 (literal) -State 209 +State 216 23 literal: INT . $default reduce using rule 23 (literal) -State 210 +State 217 24 literal: FLOAT . $default reduce using rule 24 (literal) -State 211 +State 218 58 plain_instr: CONST literal . $default reduce using rule 58 (plain_instr) -State 212 +State 219 - 72 expr: "(" . expr1 ")" - 103 func_fields_body1: "(" . RESULT value_type_list ")" func_body - 104 | "(" . PARAM value_type_list ")" func_fields_body1 - 105 | "(" . PARAM bind_var VALUE_TYPE ")" func_fields_body1 - 108 func_body1: "(" . LOCAL value_type_list ")" func_body1 - 109 | "(" . LOCAL bind_var VALUE_TYPE ")" func_body1 + 79 expr: "(" . expr1 ")" + 116 func_fields_body1: "(" . RESULT value_type_list ")" func_body + 117 | "(" . PARAM value_type_list ")" func_fields_body1 + 118 | "(" . PARAM bind_var VALUE_TYPE ")" func_fields_body1 + 121 func_body1: "(" . LOCAL value_type_list ")" func_body1 + 122 | "(" . LOCAL bind_var VALUE_TYPE ")" func_body1 NOP shift, and go to state 90 DROP shift, and go to state 91 - BLOCK shift, and go to state 153 - IF shift, and go to state 154 - LOOP shift, and go to state 155 + BLOCK shift, and go to state 159 + IF shift, and go to state 160 + LOOP shift, and go to state 161 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - PARAM shift, and go to state 186 - RESULT shift, and go to state 187 - LOCAL shift, and go to state 188 - - plain_instr go to state 157 - expr1 go to state 158 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + PARAM shift, and go to state 193 + RESULT shift, and go to state 194 + LOCAL shift, and go to state 195 + + plain_instr go to state 163 + expr1 go to state 164 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 165 -State 213 +State 220 - 91 func_fields: type_use func_fields_body . + 104 func_fields: type_use func_fields_body . - $default reduce using rule 91 (func_fields) + $default reduce using rule 104 (func_fields) -State 214 +State 221 - 72 expr: "(" . expr1 ")" + 79 expr: "(" . expr1 ")" NOP shift, and go to state 90 DROP shift, and go to state 91 - BLOCK shift, and go to state 153 - IF shift, and go to state 154 - LOOP shift, and go to state 155 + BLOCK shift, and go to state 159 + IF shift, and go to state 160 + LOOP shift, and go to state 161 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - plain_instr go to state 157 - expr1 go to state 158 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + plain_instr go to state 163 + expr1 go to state 164 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 165 -State 215 +State 222 - 86 instr_list: instr instr_list . + 99 instr_list: instr instr_list . - $default reduce using rule 86 (instr_list) + $default reduce using rule 99 (instr_list) -State 216 +State 223 - 90 func: "(" FUNC bind_var_opt func_fields ")" . + 66 plain_instr: rethrow_check var . - $default reduce using rule 90 (func) + $default reduce using rule 66 (plain_instr) -State 217 +State 224 + + 65 plain_instr: throw_check var . + + $default reduce using rule 65 (plain_instr) + + +State 225 + + 71 block_instr: try_check labeling_opt . block catch_instr_list END labeling_opt + + "(" shift, and go to state 295 + NOP shift, and go to state 90 + DROP shift, and go to state 91 + BLOCK shift, and go to state 92 + IF shift, and go to state 93 + LOOP shift, and go to state 94 + BR shift, and go to state 95 + BR_IF shift, and go to state 96 + BR_TABLE shift, and go to state 97 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + block_sig go to state 296 + block go to state 305 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 298 + + +State 226 + + 103 func: "(" FUNC bind_var_opt func_fields ")" . + + $default reduce using rule 103 (func) + + +State 227 20 type_use: "(" . TYPE var ")" - 98 func_fields_import1: "(" . RESULT value_type_list ")" - 99 | "(" . PARAM value_type_list ")" func_fields_import1 - 100 | "(" . PARAM bind_var VALUE_TYPE ")" func_fields_import1 + 111 func_fields_import1: "(" . RESULT value_type_list ")" + 112 | "(" . PARAM value_type_list ")" func_fields_import1 + 113 | "(" . PARAM bind_var VALUE_TYPE ")" func_fields_import1 - TYPE shift, and go to state 185 - PARAM shift, and go to state 294 - RESULT shift, and go to state 295 + TYPE shift, and go to state 192 + PARAM shift, and go to state 306 + RESULT shift, and go to state 307 -State 218 +State 228 - 93 func_fields: inline_import type_use . func_fields_import + 106 func_fields: inline_import type_use . func_fields_import - "(" shift, and go to state 296 + "(" shift, and go to state 308 - $default reduce using rule 97 (func_fields_import1) + $default reduce using rule 110 (func_fields_import1) - func_fields_import go to state 297 - func_fields_import1 go to state 220 + func_fields_import go to state 309 + func_fields_import1 go to state 230 -State 219 +State 229 - 94 func_fields: inline_import func_fields_import . + 107 func_fields: inline_import func_fields_import . - $default reduce using rule 94 (func_fields) + $default reduce using rule 107 (func_fields) -State 220 +State 230 - 96 func_fields_import: func_fields_import1 . + 109 func_fields_import: func_fields_import1 . - $default reduce using rule 96 (func_fields_import) + $default reduce using rule 109 (func_fields_import) -State 221 +State 231 - 95 func_fields: inline_export func_fields . + 108 func_fields: inline_export func_fields . - $default reduce using rule 95 (func_fields) + $default reduce using rule 108 (func_fields) -State 222 +State 232 13 func_sig: "(" . PARAM value_type_list ")" 14 | "(" . PARAM value_type_list ")" "(" RESULT value_type_list ")" 15 | "(" . RESULT value_type_list ")" - PARAM shift, and go to state 298 - RESULT shift, and go to state 299 + PARAM shift, and go to state 310 + RESULT shift, and go to state 311 -State 223 +State 233 11 func_type: "(" FUNC func_sig . ")" - ")" shift, and go to state 300 + ")" shift, and go to state 312 -State 224 +State 234 - 144 type_def: "(" TYPE bind_var func_type ")" . + 157 type_def: "(" TYPE bind_var func_type ")" . - $default reduce using rule 144 (type_def) + $default reduce using rule 157 (type_def) -State 225 +State 235 10 global_type: "(" MUT . VALUE_TYPE ")" - VALUE_TYPE shift, and go to state 301 + VALUE_TYPE shift, and go to state 313 -State 226 +State 236 - 89 const_expr: instr_list . + 102 const_expr: instr_list . - $default reduce using rule 89 (const_expr) + $default reduce using rule 102 (const_expr) -State 227 +State 237 - 127 global_fields: global_type const_expr . + 140 global_fields: global_type const_expr . - $default reduce using rule 127 (global_fields) + $default reduce using rule 140 (global_fields) -State 228 +State 238 - 126 global: "(" GLOBAL bind_var_opt global_fields ")" . + 139 global: "(" GLOBAL bind_var_opt global_fields ")" . - $default reduce using rule 126 (global) + $default reduce using rule 139 (global) -State 229 +State 239 10 global_type: "(" . MUT VALUE_TYPE ")" - MUT shift, and go to state 225 + MUT shift, and go to state 235 -State 230 +State 240 - 128 global_fields: inline_import global_type . + 141 global_fields: inline_import global_type . - $default reduce using rule 128 (global_fields) + $default reduce using rule 141 (global_fields) -State 231 +State 241 - 129 global_fields: inline_export global_fields . + 142 global_fields: inline_export global_fields . - $default reduce using rule 129 (global_fields) + $default reduce using rule 142 (global_fields) -State 232 +State 242 - 161 raw_module: "(" MODULE bind_var_opt text_list ")" . + 174 raw_module: "(" MODULE bind_var_opt text_list ")" . - $default reduce using rule 161 (raw_module) + $default reduce using rule 174 (raw_module) -State 233 +State 243 2 text_list: text_list TEXT . $default reduce using rule 2 (text_list) -State 234 +State 244 - 160 raw_module: "(" MODULE bind_var_opt module_fields_opt ")" . + 173 raw_module: "(" MODULE bind_var_opt module_fields_opt ")" . - $default reduce using rule 160 (raw_module) + $default reduce using rule 173 (raw_module) -State 235 +State 245 - 118 table_fields: elem_type "(" . ELEM var_list ")" + 131 table_fields: elem_type "(" . ELEM var_list ")" - ELEM shift, and go to state 302 + ELEM shift, and go to state 314 -State 236 +State 246 16 table_sig: limits elem_type . $default reduce using rule 16 (table_sig) -State 237 +State 247 19 limits: nat nat . $default reduce using rule 19 (limits) -State 238 +State 248 - 114 table: "(" TABLE bind_var_opt table_fields ")" . + 127 table: "(" TABLE bind_var_opt table_fields ")" . - $default reduce using rule 114 (table) + $default reduce using rule 127 (table) -State 239 +State 249 - 116 table_fields: inline_import table_sig . + 129 table_fields: inline_import table_sig . - $default reduce using rule 116 (table_fields) + $default reduce using rule 129 (table_fields) -State 240 +State 250 - 117 table_fields: inline_export table_fields . + 130 table_fields: inline_export table_fields . - $default reduce using rule 117 (table_fields) + $default reduce using rule 130 (table_fields) -State 241 +State 251 - 74 expr1: BLOCK labeling_opt . block + 81 expr1: BLOCK labeling_opt . block - "(" shift, and go to state 284 + "(" shift, and go to state 295 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -3246,54 +3486,60 @@ State 241 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - block_sig go to state 285 - block go to state 303 - expr go to state 121 - instr_list go to state 287 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + block_sig go to state 296 + block go to state 315 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 298 -State 242 +State 252 - 76 expr1: IF labeling_opt . if_block + 83 expr1: IF labeling_opt . if_block - "(" shift, and go to state 304 + "(" shift, and go to state 316 - block_sig go to state 305 - expr go to state 306 - if_block go to state 307 - if_ go to state 308 + block_sig go to state 317 + expr go to state 318 + if_block go to state 319 + if_ go to state 320 -State 243 +State 253 - 75 expr1: LOOP labeling_opt . block + 82 expr1: LOOP labeling_opt . block - "(" shift, and go to state 284 + "(" shift, and go to state 295 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -3302,411 +3548,430 @@ State 243 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - block_sig go to state 285 - block go to state 309 - expr go to state 121 - instr_list go to state 287 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + block_sig go to state 296 + block go to state 321 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 298 -State 244 +State 254 - 110 offset: "(" OFFSET const_expr . ")" + 123 offset: "(" OFFSET const_expr . ")" - ")" shift, and go to state 310 + ")" shift, and go to state 322 -State 245 +State 255 - 88 expr_list: expr . expr_list + 101 expr_list: expr . expr_list - "(" shift, and go to state 214 + "(" shift, and go to state 221 - $default reduce using rule 87 (expr_list) + $default reduce using rule 100 (expr_list) - expr go to state 245 - expr_list go to state 311 + expr go to state 255 + expr_list go to state 323 -State 246 +State 256 - 73 expr1: plain_instr expr_list . + 80 expr1: plain_instr expr_list . - $default reduce using rule 73 (expr1) + $default reduce using rule 80 (expr1) -State 247 +State 257 - 72 expr: "(" expr1 ")" . + 79 expr: "(" expr1 ")" . - $default reduce using rule 72 (expr) + $default reduce using rule 79 (expr) -State 248 +State 258 + + 84 expr1: try_check "(" . BLOCK labeling_opt block ")" catch_list + + BLOCK shift, and go to state 324 + + +State 259 28 var_list: var_list . var - 112 elem: "(" ELEM var offset var_list . ")" + 125 elem: "(" ELEM var offset var_list . ")" - ")" shift, and go to state 312 + ")" shift, and go to state 325 NAT shift, and go to state 53 VAR shift, and go to state 54 nat go to state 55 - var go to state 250 + var go to state 261 -State 249 +State 260 - 113 elem: "(" ELEM offset var_list ")" . + 126 elem: "(" ELEM offset var_list ")" . - $default reduce using rule 113 (elem) + $default reduce using rule 126 (elem) -State 250 +State 261 28 var_list: var_list var . $default reduce using rule 28 (var_list) -State 251 +State 262 - 125 memory_fields: "(" DATA . text_list_opt ")" + 138 memory_fields: "(" DATA . text_list_opt ")" - TEXT shift, and go to state 140 + TEXT shift, and go to state 146 $default reduce using rule 3 (text_list_opt) - text_list go to state 168 - text_list_opt go to state 313 + text_list go to state 175 + text_list_opt go to state 326 -State 252 +State 263 - 121 memory: "(" MEMORY bind_var_opt memory_fields ")" . + 134 memory: "(" MEMORY bind_var_opt memory_fields ")" . - $default reduce using rule 121 (memory) + $default reduce using rule 134 (memory) -State 253 +State 264 - 123 memory_fields: inline_import memory_sig . + 136 memory_fields: inline_import memory_sig . - $default reduce using rule 123 (memory_fields) + $default reduce using rule 136 (memory_fields) -State 254 +State 265 - 124 memory_fields: inline_export memory_fields . + 137 memory_fields: inline_export memory_fields . - $default reduce using rule 124 (memory_fields) + $default reduce using rule 137 (memory_fields) -State 255 +State 266 - 119 data: "(" DATA var offset text_list_opt . ")" + 132 data: "(" DATA var offset text_list_opt . ")" - ")" shift, and go to state 314 + ")" shift, and go to state 327 -State 256 +State 267 - 120 data: "(" DATA offset text_list_opt ")" . + 133 data: "(" DATA offset text_list_opt ")" . - $default reduce using rule 120 (data) + $default reduce using rule 133 (data) -State 257 +State 268 - 130 import_desc: "(" . FUNC bind_var_opt type_use ")" - 131 | "(" . FUNC bind_var_opt func_sig ")" - 132 | "(" . TABLE bind_var_opt table_sig ")" - 133 | "(" . MEMORY bind_var_opt memory_sig ")" - 134 | "(" . GLOBAL bind_var_opt global_type ")" + 143 import_desc: "(" . FUNC bind_var_opt type_use ")" + 144 | "(" . FUNC bind_var_opt func_sig ")" + 145 | "(" . TABLE bind_var_opt table_sig ")" + 146 | "(" . MEMORY bind_var_opt memory_sig ")" + 147 | "(" . GLOBAL bind_var_opt global_type ")" - FUNC shift, and go to state 315 - GLOBAL shift, and go to state 316 - TABLE shift, and go to state 317 - MEMORY shift, and go to state 318 + FUNC shift, and go to state 328 + GLOBAL shift, and go to state 329 + TABLE shift, and go to state 330 + MEMORY shift, and go to state 331 -State 258 +State 269 - 135 import: "(" IMPORT quoted_text quoted_text import_desc . ")" + 148 import: "(" IMPORT quoted_text quoted_text import_desc . ")" - ")" shift, and go to state 319 + ")" shift, and go to state 332 -State 259 +State 270 - 137 export_desc: "(" FUNC . var ")" + 150 export_desc: "(" FUNC . var ")" NAT shift, and go to state 53 VAR shift, and go to state 54 nat go to state 55 - var go to state 320 + var go to state 333 -State 260 +State 271 - 140 export_desc: "(" GLOBAL . var ")" + 153 export_desc: "(" GLOBAL . var ")" NAT shift, and go to state 53 VAR shift, and go to state 54 nat go to state 55 - var go to state 321 + var go to state 334 -State 261 +State 272 - 138 export_desc: "(" TABLE . var ")" + 151 export_desc: "(" TABLE . var ")" NAT shift, and go to state 53 VAR shift, and go to state 54 nat go to state 55 - var go to state 322 + var go to state 335 -State 262 +State 273 - 139 export_desc: "(" MEMORY . var ")" + 152 export_desc: "(" MEMORY . var ")" NAT shift, and go to state 53 VAR shift, and go to state 54 nat go to state 55 - var go to state 323 + var go to state 336 -State 263 +State 274 - 141 export: "(" EXPORT quoted_text export_desc ")" . + 154 export: "(" EXPORT quoted_text export_desc ")" . - $default reduce using rule 141 (export) + $default reduce using rule 154 (export) -State 264 +State 275 - 180 cmd: "(" REGISTER quoted_text script_var_opt ")" . + 193 cmd: "(" REGISTER quoted_text script_var_opt ")" . - $default reduce using rule 180 (cmd) + $default reduce using rule 193 (cmd) -State 265 +State 276 - 166 action: "(" INVOKE script_var_opt quoted_text const_list . ")" - 185 const_list: const_list . const + 179 action: "(" INVOKE script_var_opt quoted_text const_list . ")" + 198 const_list: const_list . const - "(" shift, and go to state 270 - ")" shift, and go to state 324 + "(" shift, and go to state 281 + ")" shift, and go to state 337 - const go to state 272 + const go to state 283 -State 266 +State 277 - 167 action: "(" GET script_var_opt quoted_text ")" . + 180 action: "(" GET script_var_opt quoted_text ")" . - $default reduce using rule 167 (action) + $default reduce using rule 180 (action) -State 267 +State 278 - 168 assertion: "(" ASSERT_MALFORMED raw_module quoted_text ")" . + 181 assertion: "(" ASSERT_MALFORMED raw_module quoted_text ")" . - $default reduce using rule 168 (assertion) + $default reduce using rule 181 (assertion) -State 268 +State 279 - 169 assertion: "(" ASSERT_INVALID raw_module quoted_text ")" . + 182 assertion: "(" ASSERT_INVALID raw_module quoted_text ")" . - $default reduce using rule 169 (assertion) + $default reduce using rule 182 (assertion) -State 269 +State 280 - 170 assertion: "(" ASSERT_UNLINKABLE raw_module quoted_text ")" . + 183 assertion: "(" ASSERT_UNLINKABLE raw_module quoted_text ")" . - $default reduce using rule 170 (assertion) + $default reduce using rule 183 (assertion) -State 270 +State 281 - 183 const: "(" . CONST literal ")" + 196 const: "(" . CONST literal ")" - CONST shift, and go to state 325 + CONST shift, and go to state 338 -State 271 +State 282 - 172 assertion: "(" ASSERT_RETURN action const_list ")" . + 185 assertion: "(" ASSERT_RETURN action const_list ")" . - $default reduce using rule 172 (assertion) + $default reduce using rule 185 (assertion) -State 272 +State 283 - 185 const_list: const_list const . + 198 const_list: const_list const . - $default reduce using rule 185 (const_list) + $default reduce using rule 198 (const_list) -State 273 +State 284 - 171 assertion: "(" ASSERT_TRAP raw_module quoted_text ")" . + 184 assertion: "(" ASSERT_TRAP raw_module quoted_text ")" . - $default reduce using rule 171 (assertion) + $default reduce using rule 184 (assertion) -State 274 +State 285 - 175 assertion: "(" ASSERT_TRAP action quoted_text ")" . + 188 assertion: "(" ASSERT_TRAP action quoted_text ")" . - $default reduce using rule 175 (assertion) + $default reduce using rule 188 (assertion) -State 275 +State 286 - 176 assertion: "(" ASSERT_EXHAUSTION action quoted_text ")" . + 189 assertion: "(" ASSERT_EXHAUSTION action quoted_text ")" . - $default reduce using rule 176 (assertion) + $default reduce using rule 189 (assertion) -State 276 +State 287 20 type_use: "(" TYPE var . ")" - ")" shift, and go to state 326 + ")" shift, and go to state 339 -State 277 +State 288 7 value_type_list: value_type_list . VALUE_TYPE - 104 func_fields_body1: "(" PARAM value_type_list . ")" func_fields_body1 + 117 func_fields_body1: "(" PARAM value_type_list . ")" func_fields_body1 - ")" shift, and go to state 327 - VALUE_TYPE shift, and go to state 328 + ")" shift, and go to state 340 + VALUE_TYPE shift, and go to state 341 -State 278 +State 289 - 105 func_fields_body1: "(" PARAM bind_var . VALUE_TYPE ")" func_fields_body1 + 118 func_fields_body1: "(" PARAM bind_var . VALUE_TYPE ")" func_fields_body1 - VALUE_TYPE shift, and go to state 329 + VALUE_TYPE shift, and go to state 342 -State 279 +State 290 7 value_type_list: value_type_list . VALUE_TYPE - 103 func_fields_body1: "(" RESULT value_type_list . ")" func_body + 116 func_fields_body1: "(" RESULT value_type_list . ")" func_body - ")" shift, and go to state 330 - VALUE_TYPE shift, and go to state 328 + ")" shift, and go to state 343 + VALUE_TYPE shift, and go to state 341 -State 280 +State 291 7 value_type_list: value_type_list . VALUE_TYPE - 108 func_body1: "(" LOCAL value_type_list . ")" func_body1 + 121 func_body1: "(" LOCAL value_type_list . ")" func_body1 - ")" shift, and go to state 331 - VALUE_TYPE shift, and go to state 328 + ")" shift, and go to state 344 + VALUE_TYPE shift, and go to state 341 -State 281 +State 292 - 109 func_body1: "(" LOCAL bind_var . VALUE_TYPE ")" func_body1 + 122 func_body1: "(" LOCAL bind_var . VALUE_TYPE ")" func_body1 - VALUE_TYPE shift, and go to state 332 + VALUE_TYPE shift, and go to state 345 -State 282 +State 293 - 136 inline_import: "(" IMPORT quoted_text . quoted_text ")" + 149 inline_import: "(" IMPORT quoted_text . quoted_text ")" TEXT shift, and go to state 70 - quoted_text go to state 333 + quoted_text go to state 346 -State 283 +State 294 - 142 inline_export: "(" EXPORT quoted_text . ")" + 155 inline_export: "(" EXPORT quoted_text . ")" - ")" shift, and go to state 334 + ")" shift, and go to state 347 -State 284 +State 295 - 69 block_sig: "(" . RESULT value_type_list ")" - 72 expr: "(" . expr1 ")" + 72 block_sig: "(" . RESULT value_type_list ")" + 79 expr: "(" . expr1 ")" NOP shift, and go to state 90 DROP shift, and go to state 91 - BLOCK shift, and go to state 153 - IF shift, and go to state 154 - LOOP shift, and go to state 155 + BLOCK shift, and go to state 159 + IF shift, and go to state 160 + LOOP shift, and go to state 161 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - RESULT shift, and go to state 335 - - plain_instr go to state 157 - expr1 go to state 158 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + RESULT shift, and go to state 348 + + plain_instr go to state 163 + expr1 go to state 164 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 165 -State 285 +State 296 - 70 block: block_sig . block + 73 block: block_sig . block - "(" shift, and go to state 284 + "(" shift, and go to state 295 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -3715,68 +3980,74 @@ State 285 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - block_sig go to state 285 - block go to state 336 - expr go to state 121 - instr_list go to state 287 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + block_sig go to state 296 + block go to state 349 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 298 -State 286 +State 297 - 65 block_instr: BLOCK labeling_opt block . END labeling_opt + 67 block_instr: BLOCK labeling_opt block . END labeling_opt - END shift, and go to state 337 + END shift, and go to state 350 -State 287 +State 298 - 71 block: instr_list . + 74 block: instr_list . - $default reduce using rule 71 (block) + $default reduce using rule 74 (block) -State 288 +State 299 - 67 block_instr: IF labeling_opt block . END labeling_opt - 68 | IF labeling_opt block . ELSE labeling_opt instr_list END labeling_opt + 69 block_instr: IF labeling_opt block . END labeling_opt + 70 | IF labeling_opt block . ELSE labeling_opt instr_list END labeling_opt - END shift, and go to state 338 - ELSE shift, and go to state 339 + END shift, and go to state 351 + ELSE shift, and go to state 352 -State 289 +State 300 - 66 block_instr: LOOP labeling_opt block . END labeling_opt + 68 block_instr: LOOP labeling_opt block . END labeling_opt - END shift, and go to state 340 + END shift, and go to state 353 -State 290 +State 301 28 var_list: var_list var . 47 plain_instr: BR_TABLE var_list var . @@ -3786,350 +4057,379 @@ State 290 $default reduce using rule 47 (plain_instr) -State 291 +State 302 37 align_opt: ALIGN_EQ_NAT . $default reduce using rule 37 (align_opt) -State 292 +State 303 56 plain_instr: LOAD offset_opt align_opt . $default reduce using rule 56 (plain_instr) -State 293 +State 304 57 plain_instr: STORE offset_opt align_opt . $default reduce using rule 57 (plain_instr) -State 294 +State 305 + + 71 block_instr: try_check labeling_opt block . catch_instr_list END labeling_opt + + CATCH shift, and go to state 354 + CATCH_ALL shift, and go to state 355 + + catch_instr go to state 356 + catch_instr_list go to state 357 - 99 func_fields_import1: "(" PARAM . value_type_list ")" func_fields_import1 - 100 | "(" PARAM . bind_var VALUE_TYPE ")" func_fields_import1 + +State 306 + + 112 func_fields_import1: "(" PARAM . value_type_list ")" func_fields_import1 + 113 | "(" PARAM . bind_var VALUE_TYPE ")" func_fields_import1 VAR shift, and go to state 50 $default reduce using rule 6 (value_type_list) - value_type_list go to state 341 - bind_var go to state 342 + value_type_list go to state 358 + bind_var go to state 359 -State 295 +State 307 - 98 func_fields_import1: "(" RESULT . value_type_list ")" + 111 func_fields_import1: "(" RESULT . value_type_list ")" $default reduce using rule 6 (value_type_list) - value_type_list go to state 343 + value_type_list go to state 360 -State 296 +State 308 - 98 func_fields_import1: "(" . RESULT value_type_list ")" - 99 | "(" . PARAM value_type_list ")" func_fields_import1 - 100 | "(" . PARAM bind_var VALUE_TYPE ")" func_fields_import1 + 111 func_fields_import1: "(" . RESULT value_type_list ")" + 112 | "(" . PARAM value_type_list ")" func_fields_import1 + 113 | "(" . PARAM bind_var VALUE_TYPE ")" func_fields_import1 - PARAM shift, and go to state 294 - RESULT shift, and go to state 295 + PARAM shift, and go to state 306 + RESULT shift, and go to state 307 -State 297 +State 309 - 93 func_fields: inline_import type_use func_fields_import . + 106 func_fields: inline_import type_use func_fields_import . - $default reduce using rule 93 (func_fields) + $default reduce using rule 106 (func_fields) -State 298 +State 310 13 func_sig: "(" PARAM . value_type_list ")" 14 | "(" PARAM . value_type_list ")" "(" RESULT value_type_list ")" $default reduce using rule 6 (value_type_list) - value_type_list go to state 344 + value_type_list go to state 361 -State 299 +State 311 15 func_sig: "(" RESULT . value_type_list ")" $default reduce using rule 6 (value_type_list) - value_type_list go to state 345 + value_type_list go to state 362 -State 300 +State 312 11 func_type: "(" FUNC func_sig ")" . $default reduce using rule 11 (func_type) -State 301 +State 313 10 global_type: "(" MUT VALUE_TYPE . ")" - ")" shift, and go to state 346 + ")" shift, and go to state 363 -State 302 +State 314 - 118 table_fields: elem_type "(" ELEM . var_list ")" + 131 table_fields: elem_type "(" ELEM . var_list ")" $default reduce using rule 27 (var_list) - var_list go to state 347 + var_list go to state 364 -State 303 +State 315 - 74 expr1: BLOCK labeling_opt block . + 81 expr1: BLOCK labeling_opt block . - $default reduce using rule 74 (expr1) + $default reduce using rule 81 (expr1) -State 304 +State 316 - 69 block_sig: "(" . RESULT value_type_list ")" - 72 expr: "(" . expr1 ")" - 79 if_: "(" . THEN instr_list ")" "(" ELSE instr_list ")" - 80 | "(" . THEN instr_list ")" + 72 block_sig: "(" . RESULT value_type_list ")" + 79 expr: "(" . expr1 ")" + 89 if_: "(" . THEN instr_list ")" "(" ELSE instr_list ")" + 90 | "(" . THEN instr_list ")" NOP shift, and go to state 90 DROP shift, and go to state 91 - BLOCK shift, and go to state 153 - IF shift, and go to state 154 - THEN shift, and go to state 348 - LOOP shift, and go to state 155 + BLOCK shift, and go to state 159 + IF shift, and go to state 160 + THEN shift, and go to state 365 + LOOP shift, and go to state 161 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - RESULT shift, and go to state 335 - - plain_instr go to state 157 - expr1 go to state 158 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + RESULT shift, and go to state 348 + + plain_instr go to state 163 + expr1 go to state 164 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 165 -State 305 +State 317 - 77 if_block: block_sig . if_block + 87 if_block: block_sig . if_block - "(" shift, and go to state 304 + "(" shift, and go to state 316 - block_sig go to state 305 - expr go to state 306 - if_block go to state 349 - if_ go to state 308 + block_sig go to state 317 + expr go to state 318 + if_block go to state 366 + if_ go to state 320 -State 306 +State 318 - 81 if_: expr . "(" THEN instr_list ")" "(" ELSE instr_list ")" - 82 | expr . "(" THEN instr_list ")" - 83 | expr . expr expr - 84 | expr . expr + 91 if_: expr . "(" THEN instr_list ")" "(" ELSE instr_list ")" + 92 | expr . "(" THEN instr_list ")" + 93 | expr . expr expr + 94 | expr . expr - "(" shift, and go to state 350 + "(" shift, and go to state 367 - expr go to state 351 + expr go to state 368 -State 307 +State 319 - 76 expr1: IF labeling_opt if_block . + 83 expr1: IF labeling_opt if_block . - $default reduce using rule 76 (expr1) + $default reduce using rule 83 (expr1) -State 308 +State 320 - 78 if_block: if_ . + 88 if_block: if_ . - $default reduce using rule 78 (if_block) + $default reduce using rule 88 (if_block) -State 309 +State 321 - 75 expr1: LOOP labeling_opt block . + 82 expr1: LOOP labeling_opt block . - $default reduce using rule 75 (expr1) + $default reduce using rule 82 (expr1) -State 310 +State 322 - 110 offset: "(" OFFSET const_expr ")" . + 123 offset: "(" OFFSET const_expr ")" . - $default reduce using rule 110 (offset) + $default reduce using rule 123 (offset) -State 311 +State 323 - 88 expr_list: expr expr_list . + 101 expr_list: expr expr_list . - $default reduce using rule 88 (expr_list) + $default reduce using rule 101 (expr_list) -State 312 +State 324 - 112 elem: "(" ELEM var offset var_list ")" . + 84 expr1: try_check "(" BLOCK . labeling_opt block ")" catch_list - $default reduce using rule 112 (elem) + VAR shift, and go to state 50 + $default reduce using rule 32 (labeling_opt) -State 313 + bind_var go to state 198 + labeling_opt go to state 369 - 125 memory_fields: "(" DATA text_list_opt . ")" - ")" shift, and go to state 352 +State 325 + 125 elem: "(" ELEM var offset var_list ")" . -State 314 + $default reduce using rule 125 (elem) - 119 data: "(" DATA var offset text_list_opt ")" . - $default reduce using rule 119 (data) +State 326 + 138 memory_fields: "(" DATA text_list_opt . ")" + + ")" shift, and go to state 370 -State 315 - 130 import_desc: "(" FUNC . bind_var_opt type_use ")" - 131 | "(" FUNC . bind_var_opt func_sig ")" +State 327 + + 132 data: "(" DATA var offset text_list_opt ")" . + + $default reduce using rule 132 (data) + + +State 328 + + 143 import_desc: "(" FUNC . bind_var_opt type_use ")" + 144 | "(" FUNC . bind_var_opt func_sig ")" VAR shift, and go to state 50 $default reduce using rule 29 (bind_var_opt) - bind_var_opt go to state 353 + bind_var_opt go to state 371 bind_var go to state 52 -State 316 +State 329 - 134 import_desc: "(" GLOBAL . bind_var_opt global_type ")" + 147 import_desc: "(" GLOBAL . bind_var_opt global_type ")" VAR shift, and go to state 50 $default reduce using rule 29 (bind_var_opt) - bind_var_opt go to state 354 + bind_var_opt go to state 372 bind_var go to state 52 -State 317 +State 330 - 132 import_desc: "(" TABLE . bind_var_opt table_sig ")" + 145 import_desc: "(" TABLE . bind_var_opt table_sig ")" VAR shift, and go to state 50 $default reduce using rule 29 (bind_var_opt) - bind_var_opt go to state 355 + bind_var_opt go to state 373 bind_var go to state 52 -State 318 +State 331 - 133 import_desc: "(" MEMORY . bind_var_opt memory_sig ")" + 146 import_desc: "(" MEMORY . bind_var_opt memory_sig ")" VAR shift, and go to state 50 $default reduce using rule 29 (bind_var_opt) - bind_var_opt go to state 356 + bind_var_opt go to state 374 bind_var go to state 52 -State 319 +State 332 - 135 import: "(" IMPORT quoted_text quoted_text import_desc ")" . + 148 import: "(" IMPORT quoted_text quoted_text import_desc ")" . - $default reduce using rule 135 (import) + $default reduce using rule 148 (import) -State 320 +State 333 - 137 export_desc: "(" FUNC var . ")" + 150 export_desc: "(" FUNC var . ")" - ")" shift, and go to state 357 + ")" shift, and go to state 375 -State 321 +State 334 - 140 export_desc: "(" GLOBAL var . ")" + 153 export_desc: "(" GLOBAL var . ")" - ")" shift, and go to state 358 + ")" shift, and go to state 376 -State 322 +State 335 - 138 export_desc: "(" TABLE var . ")" + 151 export_desc: "(" TABLE var . ")" - ")" shift, and go to state 359 + ")" shift, and go to state 377 -State 323 +State 336 - 139 export_desc: "(" MEMORY var . ")" + 152 export_desc: "(" MEMORY var . ")" - ")" shift, and go to state 360 + ")" shift, and go to state 378 -State 324 +State 337 - 166 action: "(" INVOKE script_var_opt quoted_text const_list ")" . + 179 action: "(" INVOKE script_var_opt quoted_text const_list ")" . - $default reduce using rule 166 (action) + $default reduce using rule 179 (action) -State 325 +State 338 - 183 const: "(" CONST . literal ")" + 196 const: "(" CONST . literal ")" - NAT shift, and go to state 208 - INT shift, and go to state 209 - FLOAT shift, and go to state 210 + NAT shift, and go to state 215 + INT shift, and go to state 216 + FLOAT shift, and go to state 217 - literal go to state 361 + literal go to state 379 -State 326 +State 339 20 type_use: "(" TYPE var ")" . $default reduce using rule 20 (type_use) -State 327 +State 340 - 104 func_fields_body1: "(" PARAM value_type_list ")" . func_fields_body1 + 117 func_fields_body1: "(" PARAM value_type_list ")" . func_fields_body1 - "(" shift, and go to state 212 + "(" shift, and go to state 219 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -4138,57 +4438,63 @@ State 327 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 122 - func_fields_body1 go to state 362 - func_body go to state 126 - func_body1 go to state 127 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 128 + func_fields_body1 go to state 380 + func_body go to state 132 + func_body1 go to state 133 -State 328 +State 341 7 value_type_list: value_type_list VALUE_TYPE . $default reduce using rule 7 (value_type_list) -State 329 +State 342 - 105 func_fields_body1: "(" PARAM bind_var VALUE_TYPE . ")" func_fields_body1 + 118 func_fields_body1: "(" PARAM bind_var VALUE_TYPE . ")" func_fields_body1 - ")" shift, and go to state 363 + ")" shift, and go to state 381 -State 330 +State 343 - 103 func_fields_body1: "(" RESULT value_type_list ")" . func_body + 116 func_fields_body1: "(" RESULT value_type_list ")" . func_body - "(" shift, and go to state 364 + "(" shift, and go to state 382 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -4197,42 +4503,48 @@ State 330 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 122 - func_body go to state 365 - func_body1 go to state 127 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 128 + func_body go to state 383 + func_body1 go to state 133 -State 331 +State 344 - 108 func_body1: "(" LOCAL value_type_list ")" . func_body1 + 121 func_body1: "(" LOCAL value_type_list ")" . func_body1 - "(" shift, and go to state 364 + "(" shift, and go to state 382 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -4241,191 +4553,240 @@ State 331 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 122 - func_body1 go to state 366 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 128 + func_body1 go to state 384 -State 332 +State 345 - 109 func_body1: "(" LOCAL bind_var VALUE_TYPE . ")" func_body1 + 122 func_body1: "(" LOCAL bind_var VALUE_TYPE . ")" func_body1 - ")" shift, and go to state 367 + ")" shift, and go to state 385 -State 333 +State 346 - 136 inline_import: "(" IMPORT quoted_text quoted_text . ")" + 149 inline_import: "(" IMPORT quoted_text quoted_text . ")" - ")" shift, and go to state 368 + ")" shift, and go to state 386 -State 334 +State 347 - 142 inline_export: "(" EXPORT quoted_text ")" . + 155 inline_export: "(" EXPORT quoted_text ")" . - $default reduce using rule 142 (inline_export) + $default reduce using rule 155 (inline_export) -State 335 +State 348 - 69 block_sig: "(" RESULT . value_type_list ")" + 72 block_sig: "(" RESULT . value_type_list ")" $default reduce using rule 6 (value_type_list) - value_type_list go to state 369 + value_type_list go to state 387 -State 336 +State 349 - 70 block: block_sig block . + 73 block: block_sig block . - $default reduce using rule 70 (block) + $default reduce using rule 73 (block) -State 337 +State 350 - 65 block_instr: BLOCK labeling_opt block END . labeling_opt + 67 block_instr: BLOCK labeling_opt block END . labeling_opt VAR shift, and go to state 50 $default reduce using rule 32 (labeling_opt) - bind_var go to state 191 - labeling_opt go to state 370 + bind_var go to state 198 + labeling_opt go to state 388 -State 338 +State 351 - 67 block_instr: IF labeling_opt block END . labeling_opt + 69 block_instr: IF labeling_opt block END . labeling_opt VAR shift, and go to state 50 $default reduce using rule 32 (labeling_opt) - bind_var go to state 191 - labeling_opt go to state 371 + bind_var go to state 198 + labeling_opt go to state 389 -State 339 +State 352 - 68 block_instr: IF labeling_opt block ELSE . labeling_opt instr_list END labeling_opt + 70 block_instr: IF labeling_opt block ELSE . labeling_opt instr_list END labeling_opt VAR shift, and go to state 50 $default reduce using rule 32 (labeling_opt) - bind_var go to state 191 - labeling_opt go to state 372 + bind_var go to state 198 + labeling_opt go to state 390 -State 340 +State 353 - 66 block_instr: LOOP labeling_opt block END . labeling_opt + 68 block_instr: LOOP labeling_opt block END . labeling_opt VAR shift, and go to state 50 $default reduce using rule 32 (labeling_opt) - bind_var go to state 191 - labeling_opt go to state 373 + bind_var go to state 198 + labeling_opt go to state 391 -State 341 +State 354 + + 75 catch_instr: CATCH . var instr_list + + NAT shift, and go to state 53 + VAR shift, and go to state 54 + + nat go to state 55 + var go to state 392 + + +State 355 + + 76 catch_instr: CATCH_ALL . var instr_list + + NAT shift, and go to state 53 + VAR shift, and go to state 54 + + nat go to state 55 + var go to state 393 + + +State 356 + + 77 catch_instr_list: catch_instr . + 78 | catch_instr . catch_instr_list + + CATCH shift, and go to state 354 + CATCH_ALL shift, and go to state 355 + + $default reduce using rule 77 (catch_instr_list) + + catch_instr go to state 356 + catch_instr_list go to state 394 + + +State 357 + + 71 block_instr: try_check labeling_opt block catch_instr_list . END labeling_opt + + END shift, and go to state 395 + + +State 358 7 value_type_list: value_type_list . VALUE_TYPE - 99 func_fields_import1: "(" PARAM value_type_list . ")" func_fields_import1 + 112 func_fields_import1: "(" PARAM value_type_list . ")" func_fields_import1 - ")" shift, and go to state 374 - VALUE_TYPE shift, and go to state 328 + ")" shift, and go to state 396 + VALUE_TYPE shift, and go to state 341 -State 342 +State 359 - 100 func_fields_import1: "(" PARAM bind_var . VALUE_TYPE ")" func_fields_import1 + 113 func_fields_import1: "(" PARAM bind_var . VALUE_TYPE ")" func_fields_import1 - VALUE_TYPE shift, and go to state 375 + VALUE_TYPE shift, and go to state 397 -State 343 +State 360 7 value_type_list: value_type_list . VALUE_TYPE - 98 func_fields_import1: "(" RESULT value_type_list . ")" + 111 func_fields_import1: "(" RESULT value_type_list . ")" - ")" shift, and go to state 376 - VALUE_TYPE shift, and go to state 328 + ")" shift, and go to state 398 + VALUE_TYPE shift, and go to state 341 -State 344 +State 361 7 value_type_list: value_type_list . VALUE_TYPE 13 func_sig: "(" PARAM value_type_list . ")" 14 | "(" PARAM value_type_list . ")" "(" RESULT value_type_list ")" - ")" shift, and go to state 377 - VALUE_TYPE shift, and go to state 328 + ")" shift, and go to state 399 + VALUE_TYPE shift, and go to state 341 -State 345 +State 362 7 value_type_list: value_type_list . VALUE_TYPE 15 func_sig: "(" RESULT value_type_list . ")" - ")" shift, and go to state 378 - VALUE_TYPE shift, and go to state 328 + ")" shift, and go to state 400 + VALUE_TYPE shift, and go to state 341 -State 346 +State 363 10 global_type: "(" MUT VALUE_TYPE ")" . $default reduce using rule 10 (global_type) -State 347 +State 364 28 var_list: var_list . var - 118 table_fields: elem_type "(" ELEM var_list . ")" + 131 table_fields: elem_type "(" ELEM var_list . ")" - ")" shift, and go to state 379 + ")" shift, and go to state 401 NAT shift, and go to state 53 VAR shift, and go to state 54 nat go to state 55 - var go to state 250 + var go to state 261 -State 348 +State 365 - 79 if_: "(" THEN . instr_list ")" "(" ELSE instr_list ")" - 80 | "(" THEN . instr_list ")" + 89 if_: "(" THEN . instr_list ")" "(" ELSE instr_list ")" + 90 | "(" THEN . instr_list ")" - "(" shift, and go to state 214 + "(" shift, and go to state 221 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -4434,192 +4795,254 @@ State 348 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 380 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 402 -State 349 +State 366 - 77 if_block: block_sig if_block . + 87 if_block: block_sig if_block . - $default reduce using rule 77 (if_block) + $default reduce using rule 87 (if_block) -State 350 +State 367 - 72 expr: "(" . expr1 ")" - 81 if_: expr "(" . THEN instr_list ")" "(" ELSE instr_list ")" - 82 | expr "(" . THEN instr_list ")" + 79 expr: "(" . expr1 ")" + 91 if_: expr "(" . THEN instr_list ")" "(" ELSE instr_list ")" + 92 | expr "(" . THEN instr_list ")" NOP shift, and go to state 90 DROP shift, and go to state 91 - BLOCK shift, and go to state 153 - IF shift, and go to state 154 - THEN shift, and go to state 381 - LOOP shift, and go to state 155 + BLOCK shift, and go to state 159 + IF shift, and go to state 160 + THEN shift, and go to state 403 + LOOP shift, and go to state 161 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - plain_instr go to state 157 - expr1 go to state 158 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + plain_instr go to state 163 + expr1 go to state 164 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 165 -State 351 +State 368 - 83 if_: expr expr . expr - 84 | expr expr . + 93 if_: expr expr . expr + 94 | expr expr . - "(" shift, and go to state 214 + "(" shift, and go to state 221 - $default reduce using rule 84 (if_) + $default reduce using rule 94 (if_) - expr go to state 382 + expr go to state 404 -State 352 +State 369 + + 84 expr1: try_check "(" BLOCK labeling_opt . block ")" catch_list - 125 memory_fields: "(" DATA text_list_opt ")" . + "(" shift, and go to state 295 + NOP shift, and go to state 90 + DROP shift, and go to state 91 + BLOCK shift, and go to state 92 + IF shift, and go to state 93 + LOOP shift, and go to state 94 + BR shift, and go to state 95 + BR_IF shift, and go to state 96 + BR_TABLE shift, and go to state 97 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + block_sig go to state 296 + block go to state 405 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 298 - $default reduce using rule 125 (memory_fields) +State 370 -State 353 + 138 memory_fields: "(" DATA text_list_opt ")" . - 130 import_desc: "(" FUNC bind_var_opt . type_use ")" - 131 | "(" FUNC bind_var_opt . func_sig ")" + $default reduce using rule 138 (memory_fields) - "(" shift, and go to state 383 + +State 371 + + 143 import_desc: "(" FUNC bind_var_opt . type_use ")" + 144 | "(" FUNC bind_var_opt . func_sig ")" + + "(" shift, and go to state 406 $default reduce using rule 12 (func_sig) - func_sig go to state 384 - type_use go to state 385 + func_sig go to state 407 + type_use go to state 408 -State 354 +State 372 - 134 import_desc: "(" GLOBAL bind_var_opt . global_type ")" + 147 import_desc: "(" GLOBAL bind_var_opt . global_type ")" - "(" shift, and go to state 229 - VALUE_TYPE shift, and go to state 135 + "(" shift, and go to state 239 + VALUE_TYPE shift, and go to state 141 - global_type go to state 386 + global_type go to state 409 -State 355 +State 373 - 132 import_desc: "(" TABLE bind_var_opt . table_sig ")" + 145 import_desc: "(" TABLE bind_var_opt . table_sig ")" NAT shift, and go to state 53 - table_sig go to state 387 - limits go to state 148 - nat go to state 149 + table_sig go to state 410 + limits go to state 154 + nat go to state 155 -State 356 +State 374 - 133 import_desc: "(" MEMORY bind_var_opt . memory_sig ")" + 146 import_desc: "(" MEMORY bind_var_opt . memory_sig ")" NAT shift, and go to state 53 - memory_sig go to state 388 - limits go to state 163 - nat go to state 149 + memory_sig go to state 411 + limits go to state 170 + nat go to state 155 -State 357 +State 375 - 137 export_desc: "(" FUNC var ")" . + 150 export_desc: "(" FUNC var ")" . - $default reduce using rule 137 (export_desc) + $default reduce using rule 150 (export_desc) -State 358 +State 376 - 140 export_desc: "(" GLOBAL var ")" . + 153 export_desc: "(" GLOBAL var ")" . - $default reduce using rule 140 (export_desc) + $default reduce using rule 153 (export_desc) -State 359 +State 377 - 138 export_desc: "(" TABLE var ")" . + 151 export_desc: "(" TABLE var ")" . - $default reduce using rule 138 (export_desc) + $default reduce using rule 151 (export_desc) -State 360 +State 378 - 139 export_desc: "(" MEMORY var ")" . + 152 export_desc: "(" MEMORY var ")" . - $default reduce using rule 139 (export_desc) + $default reduce using rule 152 (export_desc) -State 361 +State 379 - 183 const: "(" CONST literal . ")" + 196 const: "(" CONST literal . ")" - ")" shift, and go to state 389 + ")" shift, and go to state 412 -State 362 +State 380 - 104 func_fields_body1: "(" PARAM value_type_list ")" func_fields_body1 . + 117 func_fields_body1: "(" PARAM value_type_list ")" func_fields_body1 . - $default reduce using rule 104 (func_fields_body1) + $default reduce using rule 117 (func_fields_body1) -State 363 +State 381 - 105 func_fields_body1: "(" PARAM bind_var VALUE_TYPE ")" . func_fields_body1 + 118 func_fields_body1: "(" PARAM bind_var VALUE_TYPE ")" . func_fields_body1 - "(" shift, and go to state 212 + "(" shift, and go to state 219 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -4628,96 +5051,108 @@ State 363 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 122 - func_fields_body1 go to state 390 - func_body go to state 126 - func_body1 go to state 127 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 128 + func_fields_body1 go to state 413 + func_body go to state 132 + func_body1 go to state 133 -State 364 +State 382 - 72 expr: "(" . expr1 ")" - 108 func_body1: "(" . LOCAL value_type_list ")" func_body1 - 109 | "(" . LOCAL bind_var VALUE_TYPE ")" func_body1 + 79 expr: "(" . expr1 ")" + 121 func_body1: "(" . LOCAL value_type_list ")" func_body1 + 122 | "(" . LOCAL bind_var VALUE_TYPE ")" func_body1 NOP shift, and go to state 90 DROP shift, and go to state 91 - BLOCK shift, and go to state 153 - IF shift, and go to state 154 - LOOP shift, and go to state 155 + BLOCK shift, and go to state 159 + IF shift, and go to state 160 + LOOP shift, and go to state 161 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - LOCAL shift, and go to state 188 - - plain_instr go to state 157 - expr1 go to state 158 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + LOCAL shift, and go to state 195 + + plain_instr go to state 163 + expr1 go to state 164 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 165 -State 365 +State 383 - 103 func_fields_body1: "(" RESULT value_type_list ")" func_body . + 116 func_fields_body1: "(" RESULT value_type_list ")" func_body . - $default reduce using rule 103 (func_fields_body1) + $default reduce using rule 116 (func_fields_body1) -State 366 +State 384 - 108 func_body1: "(" LOCAL value_type_list ")" func_body1 . + 121 func_body1: "(" LOCAL value_type_list ")" func_body1 . - $default reduce using rule 108 (func_body1) + $default reduce using rule 121 (func_body1) -State 367 +State 385 - 109 func_body1: "(" LOCAL bind_var VALUE_TYPE ")" . func_body1 + 122 func_body1: "(" LOCAL bind_var VALUE_TYPE ")" . func_body1 - "(" shift, and go to state 364 + "(" shift, and go to state 382 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -4726,71 +5161,77 @@ State 367 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 122 - func_body1 go to state 391 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 128 + func_body1 go to state 414 -State 368 +State 386 - 136 inline_import: "(" IMPORT quoted_text quoted_text ")" . + 149 inline_import: "(" IMPORT quoted_text quoted_text ")" . - $default reduce using rule 136 (inline_import) + $default reduce using rule 149 (inline_import) -State 369 +State 387 7 value_type_list: value_type_list . VALUE_TYPE - 69 block_sig: "(" RESULT value_type_list . ")" + 72 block_sig: "(" RESULT value_type_list . ")" - ")" shift, and go to state 392 - VALUE_TYPE shift, and go to state 328 + ")" shift, and go to state 415 + VALUE_TYPE shift, and go to state 341 -State 370 +State 388 - 65 block_instr: BLOCK labeling_opt block END labeling_opt . + 67 block_instr: BLOCK labeling_opt block END labeling_opt . - $default reduce using rule 65 (block_instr) + $default reduce using rule 67 (block_instr) -State 371 +State 389 - 67 block_instr: IF labeling_opt block END labeling_opt . + 69 block_instr: IF labeling_opt block END labeling_opt . - $default reduce using rule 67 (block_instr) + $default reduce using rule 69 (block_instr) -State 372 +State 390 - 68 block_instr: IF labeling_opt block ELSE labeling_opt . instr_list END labeling_opt + 70 block_instr: IF labeling_opt block ELSE labeling_opt . instr_list END labeling_opt - "(" shift, and go to state 214 + "(" shift, and go to state 221 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -4799,105 +5240,226 @@ State 372 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 393 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 416 -State 373 +State 391 - 66 block_instr: LOOP labeling_opt block END labeling_opt . + 68 block_instr: LOOP labeling_opt block END labeling_opt . - $default reduce using rule 66 (block_instr) + $default reduce using rule 68 (block_instr) -State 374 +State 392 - 99 func_fields_import1: "(" PARAM value_type_list ")" . func_fields_import1 + 75 catch_instr: CATCH var . instr_list - "(" shift, and go to state 296 + "(" shift, and go to state 221 + NOP shift, and go to state 90 + DROP shift, and go to state 91 + BLOCK shift, and go to state 92 + IF shift, and go to state 93 + LOOP shift, and go to state 94 + BR shift, and go to state 95 + BR_IF shift, and go to state 96 + BR_TABLE shift, and go to state 97 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 417 - $default reduce using rule 97 (func_fields_import1) - func_fields_import1 go to state 394 +State 393 + 76 catch_instr: CATCH_ALL var . instr_list -State 375 + "(" shift, and go to state 221 + NOP shift, and go to state 90 + DROP shift, and go to state 91 + BLOCK shift, and go to state 92 + IF shift, and go to state 93 + LOOP shift, and go to state 94 + BR shift, and go to state 95 + BR_IF shift, and go to state 96 + BR_TABLE shift, and go to state 97 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 418 - 100 func_fields_import1: "(" PARAM bind_var VALUE_TYPE . ")" func_fields_import1 - ")" shift, and go to state 395 +State 394 + 78 catch_instr_list: catch_instr catch_instr_list . -State 376 + $default reduce using rule 78 (catch_instr_list) - 98 func_fields_import1: "(" RESULT value_type_list ")" . - $default reduce using rule 98 (func_fields_import1) +State 395 + 71 block_instr: try_check labeling_opt block catch_instr_list END . labeling_opt + + VAR shift, and go to state 50 + + $default reduce using rule 32 (labeling_opt) + + bind_var go to state 198 + labeling_opt go to state 419 + + +State 396 + + 112 func_fields_import1: "(" PARAM value_type_list ")" . func_fields_import1 + + "(" shift, and go to state 308 + + $default reduce using rule 110 (func_fields_import1) + + func_fields_import1 go to state 420 -State 377 + +State 397 + + 113 func_fields_import1: "(" PARAM bind_var VALUE_TYPE . ")" func_fields_import1 + + ")" shift, and go to state 421 + + +State 398 + + 111 func_fields_import1: "(" RESULT value_type_list ")" . + + $default reduce using rule 111 (func_fields_import1) + + +State 399 13 func_sig: "(" PARAM value_type_list ")" . 14 | "(" PARAM value_type_list ")" . "(" RESULT value_type_list ")" - "(" shift, and go to state 396 + "(" shift, and go to state 422 $default reduce using rule 13 (func_sig) -State 378 +State 400 15 func_sig: "(" RESULT value_type_list ")" . $default reduce using rule 15 (func_sig) -State 379 +State 401 - 118 table_fields: elem_type "(" ELEM var_list ")" . + 131 table_fields: elem_type "(" ELEM var_list ")" . - $default reduce using rule 118 (table_fields) + $default reduce using rule 131 (table_fields) -State 380 +State 402 - 79 if_: "(" THEN instr_list . ")" "(" ELSE instr_list ")" - 80 | "(" THEN instr_list . ")" + 89 if_: "(" THEN instr_list . ")" "(" ELSE instr_list ")" + 90 | "(" THEN instr_list . ")" - ")" shift, and go to state 397 + ")" shift, and go to state 423 -State 381 +State 403 - 81 if_: expr "(" THEN . instr_list ")" "(" ELSE instr_list ")" - 82 | expr "(" THEN . instr_list ")" + 91 if_: expr "(" THEN . instr_list ")" "(" ELSE instr_list ")" + 92 | expr "(" THEN . instr_list ")" - "(" shift, and go to state 214 + "(" shift, and go to state 221 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -4906,268 +5468,329 @@ State 381 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 398 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + + $default reduce using rule 98 (instr_list) + + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 424 -State 382 +State 404 - 83 if_: expr expr expr . + 93 if_: expr expr expr . - $default reduce using rule 83 (if_) + $default reduce using rule 93 (if_) -State 383 +State 405 + + 84 expr1: try_check "(" BLOCK labeling_opt block . ")" catch_list + + ")" shift, and go to state 425 + + +State 406 13 func_sig: "(" . PARAM value_type_list ")" 14 | "(" . PARAM value_type_list ")" "(" RESULT value_type_list ")" 15 | "(" . RESULT value_type_list ")" 20 type_use: "(" . TYPE var ")" - TYPE shift, and go to state 185 - PARAM shift, and go to state 298 - RESULT shift, and go to state 299 + TYPE shift, and go to state 192 + PARAM shift, and go to state 310 + RESULT shift, and go to state 311 -State 384 +State 407 - 131 import_desc: "(" FUNC bind_var_opt func_sig . ")" + 144 import_desc: "(" FUNC bind_var_opt func_sig . ")" - ")" shift, and go to state 399 + ")" shift, and go to state 426 -State 385 +State 408 - 130 import_desc: "(" FUNC bind_var_opt type_use . ")" + 143 import_desc: "(" FUNC bind_var_opt type_use . ")" - ")" shift, and go to state 400 + ")" shift, and go to state 427 -State 386 +State 409 - 134 import_desc: "(" GLOBAL bind_var_opt global_type . ")" + 147 import_desc: "(" GLOBAL bind_var_opt global_type . ")" - ")" shift, and go to state 401 + ")" shift, and go to state 428 -State 387 +State 410 - 132 import_desc: "(" TABLE bind_var_opt table_sig . ")" + 145 import_desc: "(" TABLE bind_var_opt table_sig . ")" - ")" shift, and go to state 402 + ")" shift, and go to state 429 -State 388 +State 411 - 133 import_desc: "(" MEMORY bind_var_opt memory_sig . ")" + 146 import_desc: "(" MEMORY bind_var_opt memory_sig . ")" - ")" shift, and go to state 403 + ")" shift, and go to state 430 -State 389 +State 412 - 183 const: "(" CONST literal ")" . + 196 const: "(" CONST literal ")" . - $default reduce using rule 183 (const) + $default reduce using rule 196 (const) -State 390 +State 413 - 105 func_fields_body1: "(" PARAM bind_var VALUE_TYPE ")" func_fields_body1 . + 118 func_fields_body1: "(" PARAM bind_var VALUE_TYPE ")" func_fields_body1 . - $default reduce using rule 105 (func_fields_body1) + $default reduce using rule 118 (func_fields_body1) -State 391 +State 414 - 109 func_body1: "(" LOCAL bind_var VALUE_TYPE ")" func_body1 . + 122 func_body1: "(" LOCAL bind_var VALUE_TYPE ")" func_body1 . - $default reduce using rule 109 (func_body1) + $default reduce using rule 122 (func_body1) -State 392 +State 415 - 69 block_sig: "(" RESULT value_type_list ")" . + 72 block_sig: "(" RESULT value_type_list ")" . - $default reduce using rule 69 (block_sig) + $default reduce using rule 72 (block_sig) -State 393 +State 416 - 68 block_instr: IF labeling_opt block ELSE labeling_opt instr_list . END labeling_opt + 70 block_instr: IF labeling_opt block ELSE labeling_opt instr_list . END labeling_opt - END shift, and go to state 404 + END shift, and go to state 431 -State 394 +State 417 - 99 func_fields_import1: "(" PARAM value_type_list ")" func_fields_import1 . + 75 catch_instr: CATCH var instr_list . - $default reduce using rule 99 (func_fields_import1) + $default reduce using rule 75 (catch_instr) -State 395 +State 418 - 100 func_fields_import1: "(" PARAM bind_var VALUE_TYPE ")" . func_fields_import1 + 76 catch_instr: CATCH_ALL var instr_list . - "(" shift, and go to state 296 + $default reduce using rule 76 (catch_instr) - $default reduce using rule 97 (func_fields_import1) - func_fields_import1 go to state 405 +State 419 + 71 block_instr: try_check labeling_opt block catch_instr_list END labeling_opt . -State 396 + $default reduce using rule 71 (block_instr) + + +State 420 + + 112 func_fields_import1: "(" PARAM value_type_list ")" func_fields_import1 . + + $default reduce using rule 112 (func_fields_import1) + + +State 421 + + 113 func_fields_import1: "(" PARAM bind_var VALUE_TYPE ")" . func_fields_import1 + + "(" shift, and go to state 308 + + $default reduce using rule 110 (func_fields_import1) + + func_fields_import1 go to state 432 + + +State 422 14 func_sig: "(" PARAM value_type_list ")" "(" . RESULT value_type_list ")" - RESULT shift, and go to state 406 + RESULT shift, and go to state 433 -State 397 +State 423 - 79 if_: "(" THEN instr_list ")" . "(" ELSE instr_list ")" - 80 | "(" THEN instr_list ")" . + 89 if_: "(" THEN instr_list ")" . "(" ELSE instr_list ")" + 90 | "(" THEN instr_list ")" . - "(" shift, and go to state 407 + "(" shift, and go to state 434 - $default reduce using rule 80 (if_) + $default reduce using rule 90 (if_) -State 398 +State 424 - 81 if_: expr "(" THEN instr_list . ")" "(" ELSE instr_list ")" - 82 | expr "(" THEN instr_list . ")" + 91 if_: expr "(" THEN instr_list . ")" "(" ELSE instr_list ")" + 92 | expr "(" THEN instr_list . ")" - ")" shift, and go to state 408 + ")" shift, and go to state 435 -State 399 +State 425 - 131 import_desc: "(" FUNC bind_var_opt func_sig ")" . + 84 expr1: try_check "(" BLOCK labeling_opt block ")" . catch_list - $default reduce using rule 131 (import_desc) + "(" shift, and go to state 436 + catch_list go to state 437 -State 400 - 130 import_desc: "(" FUNC bind_var_opt type_use ")" . +State 426 - $default reduce using rule 130 (import_desc) + 144 import_desc: "(" FUNC bind_var_opt func_sig ")" . + $default reduce using rule 144 (import_desc) -State 401 - 134 import_desc: "(" GLOBAL bind_var_opt global_type ")" . +State 427 - $default reduce using rule 134 (import_desc) + 143 import_desc: "(" FUNC bind_var_opt type_use ")" . + $default reduce using rule 143 (import_desc) -State 402 - 132 import_desc: "(" TABLE bind_var_opt table_sig ")" . +State 428 - $default reduce using rule 132 (import_desc) + 147 import_desc: "(" GLOBAL bind_var_opt global_type ")" . + $default reduce using rule 147 (import_desc) -State 403 - 133 import_desc: "(" MEMORY bind_var_opt memory_sig ")" . +State 429 - $default reduce using rule 133 (import_desc) + 145 import_desc: "(" TABLE bind_var_opt table_sig ")" . + $default reduce using rule 145 (import_desc) -State 404 - 68 block_instr: IF labeling_opt block ELSE labeling_opt instr_list END . labeling_opt +State 430 + + 146 import_desc: "(" MEMORY bind_var_opt memory_sig ")" . + + $default reduce using rule 146 (import_desc) + + +State 431 + + 70 block_instr: IF labeling_opt block ELSE labeling_opt instr_list END . labeling_opt VAR shift, and go to state 50 $default reduce using rule 32 (labeling_opt) - bind_var go to state 191 - labeling_opt go to state 409 + bind_var go to state 198 + labeling_opt go to state 438 -State 405 +State 432 - 100 func_fields_import1: "(" PARAM bind_var VALUE_TYPE ")" func_fields_import1 . + 113 func_fields_import1: "(" PARAM bind_var VALUE_TYPE ")" func_fields_import1 . - $default reduce using rule 100 (func_fields_import1) + $default reduce using rule 113 (func_fields_import1) -State 406 +State 433 14 func_sig: "(" PARAM value_type_list ")" "(" RESULT . value_type_list ")" $default reduce using rule 6 (value_type_list) - value_type_list go to state 410 + value_type_list go to state 439 -State 407 +State 434 - 79 if_: "(" THEN instr_list ")" "(" . ELSE instr_list ")" + 89 if_: "(" THEN instr_list ")" "(" . ELSE instr_list ")" - ELSE shift, and go to state 411 + ELSE shift, and go to state 440 -State 408 +State 435 - 81 if_: expr "(" THEN instr_list ")" . "(" ELSE instr_list ")" - 82 | expr "(" THEN instr_list ")" . + 91 if_: expr "(" THEN instr_list ")" . "(" ELSE instr_list ")" + 92 | expr "(" THEN instr_list ")" . - "(" shift, and go to state 412 + "(" shift, and go to state 441 - $default reduce using rule 82 (if_) + $default reduce using rule 92 (if_) -State 409 +State 436 - 68 block_instr: IF labeling_opt block ELSE labeling_opt instr_list END labeling_opt . + 85 catch_list: "(" . catch_instr ")" + 86 | "(" . catch_instr ")" catch_list - $default reduce using rule 68 (block_instr) + CATCH shift, and go to state 354 + CATCH_ALL shift, and go to state 355 + catch_instr go to state 442 + + +State 437 + + 84 expr1: try_check "(" BLOCK labeling_opt block ")" catch_list . + + $default reduce using rule 84 (expr1) + + +State 438 + + 70 block_instr: IF labeling_opt block ELSE labeling_opt instr_list END labeling_opt . + + $default reduce using rule 70 (block_instr) -State 410 + +State 439 7 value_type_list: value_type_list . VALUE_TYPE 14 func_sig: "(" PARAM value_type_list ")" "(" RESULT value_type_list . ")" - ")" shift, and go to state 413 - VALUE_TYPE shift, and go to state 328 + ")" shift, and go to state 443 + VALUE_TYPE shift, and go to state 341 -State 411 +State 440 - 79 if_: "(" THEN instr_list ")" "(" ELSE . instr_list ")" + 89 if_: "(" THEN instr_list ")" "(" ELSE . instr_list ")" - "(" shift, and go to state 214 + "(" shift, and go to state 221 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -5176,61 +5799,75 @@ State 411 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 414 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + $default reduce using rule 98 (instr_list) -State 412 + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 444 - 81 if_: expr "(" THEN instr_list ")" "(" . ELSE instr_list ")" - ELSE shift, and go to state 415 +State 441 + 91 if_: expr "(" THEN instr_list ")" "(" . ELSE instr_list ")" -State 413 + ELSE shift, and go to state 445 + + +State 442 + + 85 catch_list: "(" catch_instr . ")" + 86 | "(" catch_instr . ")" catch_list + + ")" shift, and go to state 446 + + +State 443 14 func_sig: "(" PARAM value_type_list ")" "(" RESULT value_type_list ")" . $default reduce using rule 14 (func_sig) -State 414 +State 444 - 79 if_: "(" THEN instr_list ")" "(" ELSE instr_list . ")" + 89 if_: "(" THEN instr_list ")" "(" ELSE instr_list . ")" - ")" shift, and go to state 416 + ")" shift, and go to state 447 -State 415 +State 445 - 81 if_: expr "(" THEN instr_list ")" "(" ELSE . instr_list ")" + 91 if_: expr "(" THEN instr_list ")" "(" ELSE . instr_list ")" - "(" shift, and go to state 214 + "(" shift, and go to state 221 NOP shift, and go to state 90 DROP shift, and go to state 91 BLOCK shift, and go to state 92 @@ -5239,51 +5876,76 @@ State 415 BR shift, and go to state 95 BR_IF shift, and go to state 96 BR_TABLE shift, and go to state 97 - CALL shift, and go to state 98 - CALL_INDIRECT shift, and go to state 99 - RETURN shift, and go to state 100 - GET_LOCAL shift, and go to state 101 - SET_LOCAL shift, and go to state 102 - TEE_LOCAL shift, and go to state 103 - GET_GLOBAL shift, and go to state 104 - SET_GLOBAL shift, and go to state 105 - LOAD shift, and go to state 106 - STORE shift, and go to state 107 - CONST shift, and go to state 108 - UNARY shift, and go to state 109 - BINARY shift, and go to state 110 - COMPARE shift, and go to state 111 - CONVERT shift, and go to state 112 - SELECT shift, and go to state 113 - UNREACHABLE shift, and go to state 114 - CURRENT_MEMORY shift, and go to state 115 - GROW_MEMORY shift, and go to state 116 - - $default reduce using rule 85 (instr_list) - - instr go to state 118 - plain_instr go to state 119 - block_instr go to state 120 - expr go to state 121 - instr_list go to state 417 + TRY shift, and go to state 98 + THROW shift, and go to state 99 + RETHROW shift, and go to state 100 + CALL shift, and go to state 101 + CALL_INDIRECT shift, and go to state 102 + RETURN shift, and go to state 103 + GET_LOCAL shift, and go to state 104 + SET_LOCAL shift, and go to state 105 + TEE_LOCAL shift, and go to state 106 + GET_GLOBAL shift, and go to state 107 + SET_GLOBAL shift, and go to state 108 + LOAD shift, and go to state 109 + STORE shift, and go to state 110 + CONST shift, and go to state 111 + UNARY shift, and go to state 112 + BINARY shift, and go to state 113 + COMPARE shift, and go to state 114 + CONVERT shift, and go to state 115 + SELECT shift, and go to state 116 + UNREACHABLE shift, and go to state 117 + CURRENT_MEMORY shift, and go to state 118 + GROW_MEMORY shift, and go to state 119 + $default reduce using rule 98 (instr_list) -State 416 + instr go to state 121 + plain_instr go to state 122 + block_instr go to state 123 + expr go to state 124 + rethrow_check go to state 125 + throw_check go to state 126 + try_check go to state 127 + instr_list go to state 448 - 79 if_: "(" THEN instr_list ")" "(" ELSE instr_list ")" . - $default reduce using rule 79 (if_) +State 446 + 85 catch_list: "(" catch_instr ")" . + 86 | "(" catch_instr ")" . catch_list -State 417 + "(" shift, and go to state 436 - 81 if_: expr "(" THEN instr_list ")" "(" ELSE instr_list . ")" + $default reduce using rule 85 (catch_list) - ")" shift, and go to state 418 + catch_list go to state 449 -State 418 +State 447 + + 89 if_: "(" THEN instr_list ")" "(" ELSE instr_list ")" . + + $default reduce using rule 89 (if_) + + +State 448 + + 91 if_: expr "(" THEN instr_list ")" "(" ELSE instr_list . ")" + + ")" shift, and go to state 450 + + +State 449 + + 86 catch_list: "(" catch_instr ")" catch_list . + + $default reduce using rule 86 (catch_list) + + +State 450 - 81 if_: expr "(" THEN instr_list ")" "(" ELSE instr_list ")" . + 91 if_: expr "(" THEN instr_list ")" "(" ELSE instr_list ")" . - $default reduce using rule 81 (if_) + $default reduce using rule 91 (if_) diff --git a/src/tools/wast2wasm.cc b/src/tools/wast2wasm.cc index 7226028b..6c84d66c 100644 --- a/src/tools/wast2wasm.cc +++ b/src/tools/wast2wasm.cc @@ -48,6 +48,7 @@ static WriteBinarySpecOptions s_write_binary_spec_options = WABT_WRITE_BINARY_SPEC_OPTIONS_DEFAULT; static bool s_spec; static bool s_validate = true; +static WastParseOptions s_parse_options; static std::unique_ptr<FileStream> s_log_stream; @@ -64,6 +65,8 @@ enum { FLAG_NO_CANONICALIZE_LEB128S, FLAG_DEBUG_NAMES, FLAG_NO_CHECK, + FLAG_EXCEPTIONS, + FLAG_DEBUG_PARSER, NUM_FLAGS }; @@ -90,8 +93,12 @@ static Option s_options[] = { {FLAG_VERBOSE, 'v', "verbose", nullptr, NOPE, "use multiple times for more info"}, {FLAG_HELP, 'h', "help", nullptr, NOPE, "print this help message"}, + {FLAG_DEBUG_PARSER, 0, "debug-parser", nullptr, NOPE, + "Turn on debugging the parser of wast files"}, {FLAG_DUMP_MODULE, 'd', "dump-module", nullptr, NOPE, "print a hexdump of the module to stdout"}, + {FLAG_EXCEPTIONS, 0, "future-exceptions", nullptr, NOPE, + "Test future extension for exception handling"}, {FLAG_OUTPUT, 'o', "output", "FILE", YEP, "output wasm binary file"}, {FLAG_RELOCATABLE, 'r', nullptr, nullptr, NOPE, "create a relocatable wasm binary (suitable for linking with wasm-link)"}, @@ -103,7 +110,7 @@ static Option s_options[] = { {FLAG_DEBUG_NAMES, 0, "debug-names", nullptr, NOPE, "Write debug names to the generated binary file"}, {FLAG_NO_CHECK, 0, "no-check", nullptr, NOPE, - "Don't check for invalid modules"}, + "Don't check for invalid modules"} }; WABT_STATIC_ASSERT(NUM_FLAGS == WABT_ARRAY_SIZE(s_options)); @@ -149,6 +156,14 @@ static void on_option(struct OptionParser* parser, case FLAG_NO_CHECK: s_validate = false; break; + + case FLAG_EXCEPTIONS: + s_parse_options.allow_exceptions = true; + break; + + case FLAG_DEBUG_PARSER: + s_parse_options.debug_parsing = true; + break; } } @@ -204,7 +219,8 @@ int ProgramMain(int argc, char** argv) { SourceErrorHandlerFile error_handler; Script* script; - Result result = parse_wast(lexer.get(), &script, &error_handler); + Result result = parse_wast(lexer.get(), &script, &error_handler, + &s_parse_options); if (WABT_SUCCEEDED(result)) { result = resolve_names_script(lexer.get(), script, &error_handler); diff --git a/src/validator.cc b/src/validator.cc index 5e048bb5..b251a75c 100644 --- a/src/validator.cc +++ b/src/validator.cc @@ -470,6 +470,16 @@ void Validator::CheckExpr(const Expr* expr) { break; } + case ExprType::Catch: + // TODO(karlschimpf) Define. + PrintError(&expr->loc, "Catch: don't know how to validate"); + break; + + case ExprType::CatchAll: + // TODO(karlschimpf) Define. + PrintError(&expr->loc, "CatchAll: don't know how to validate"); + break; + case ExprType::Compare: typechecker_.OnCompare(expr->compare.opcode); break; @@ -533,6 +543,11 @@ void Validator::CheckExpr(const Expr* expr) { case ExprType::Nop: break; + case ExprType::Rethrow: + // TODO(karlschimpf) Define. + PrintError(&expr->loc, "Rethrow: don't know how to validate"); + break; + case ExprType::Return: typechecker_.OnReturn(); break; @@ -561,6 +576,16 @@ void Validator::CheckExpr(const Expr* expr) { typechecker_.OnTeeLocal(GetLocalVarTypeOrAny(&expr->tee_local.var)); break; + case ExprType::Throw: + // TODO(karlschimpf) Define. + PrintError(&expr->loc, "Throw: don't know how to validate"); + break; + + case ExprType::TryBlock: + // TODO(karlschimpf) Define. + PrintError(&expr->loc, "TryBlock: don't know how to validate"); + break; + case ExprType::Unary: typechecker_.OnUnary(expr->unary.opcode); break; diff --git a/src/wast-lexer.cc b/src/wast-lexer.cc index 7ae2b4cd..81d6109c 100644 --- a/src/wast-lexer.cc +++ b/src/wast-lexer.cc @@ -460,6 +460,11 @@ int WastLexer::GetToken(Token* lval, Location* loc, WastParser* parser) { RETURN(ASSERT_RETURN_ARITHMETIC_NAN); } <i> "assert_trap" { RETURN(ASSERT_TRAP); } <i> "assert_exhaustion" { RETURN(ASSERT_EXHAUSTION); } + <i> "try" { RETURN(TRY); } + <i> "catch" { RETURN(CATCH); } + <i> "catch_all" { RETURN(CATCH_ALL); } + <i> "throw" { RETURN(THROW); } + <i> "rethrow" { RETURN(RETHROW); } <i> name { TEXT; RETURN(VAR); } <i> ";;" => LINE_COMMENT { continue; } diff --git a/src/wast-parser-lexer-shared.h b/src/wast-parser-lexer-shared.h index 4b36a917..8cf3c780 100644 --- a/src/wast-parser-lexer-shared.h +++ b/src/wast-parser-lexer-shared.h @@ -23,7 +23,7 @@ #include "common.h" #include "ir.h" #include "source-error-handler.h" -#include "wast-lexer.h" +#include "wast-parser.h" #define WABT_WAST_PARSER_STYPE Token #define WABT_WAST_PARSER_LTYPE Location @@ -103,6 +103,7 @@ struct WastParser { int16_t* yyssa; YYSTYPE* yyvsa; YYLTYPE* yylsa; + WastParseOptions* options; }; int wast_lexer_lex(union Token*, diff --git a/src/wast-parser.h b/src/wast-parser.h index f195d7ee..53ba4422 100644 --- a/src/wast-parser.h +++ b/src/wast-parser.h @@ -24,7 +24,13 @@ namespace wabt { struct Script; class SourceErrorHandler; -Result parse_wast(WastLexer* lexer, Script** out_script, SourceErrorHandler*); +struct WastParseOptions { + bool allow_exceptions = false; + bool debug_parsing = false; +}; + +Result parse_wast(WastLexer* lexer, Script** out_script, SourceErrorHandler*, + WastParseOptions* options = nullptr); } // namespace wabt diff --git a/src/wast-parser.y b/src/wast-parser.y index 2443c94a..208b0cd9 100644 --- a/src/wast-parser.y +++ b/src/wast-parser.y @@ -29,6 +29,8 @@ #include "wast-parser.h" #include "wast-parser-lexer-shared.h" +#define YYDEBUG 1 + #define RELOCATE_STACK(type, array, stack_base, old_size, new_size) \ do { \ type* new_stack = new type[new_size](); \ @@ -93,6 +95,14 @@ } \ } while (0) +#define CHECK_ALLOW_EXCEPTIONS(loc, opcode_name) \ + do { \ + if (!parser->options->allow_exceptions) { \ + wast_parser_error(loc, lexer, parser, "opcode not allowed: %s", \ + opcode_name); \ + } \ + } while (0) + #define YYMALLOC(size) new char [size] #define YYFREE(p) delete [] (p) @@ -102,6 +112,7 @@ namespace wabt { static ExprList join_exprs1(Location* loc, Expr* expr1); static ExprList join_exprs2(Location* loc, ExprList* expr1, Expr* expr2); +static ExprList join_expr_lists(ExprList* expr1, ExprList* expr2); static Result parse_const(Type type, LiteralType literal_type, @@ -151,6 +162,7 @@ class BinaryErrorHandlerModule : public BinaryErrorHandler { %token RPAR ")" %token NAT INT FLOAT TEXT VAR VALUE_TYPE ANYFUNC MUT %token NOP DROP BLOCK END IF THEN ELSE LOOP BR BR_IF BR_TABLE +%token TRY CATCH CATCH_ALL THROW RETHROW %token CALL CALL_INDIRECT RETURN %token GET_LOCAL SET_LOCAL TEE_LOCAL GET_GLOBAL SET_GLOBAL %token LOAD STORE OFFSET_EQ_NAT ALIGN_EQ_NAT @@ -178,6 +190,7 @@ class BinaryErrorHandlerModule : public BinaryErrorHandler { %type<consts> const_list %type<export_> export_desc inline_export %type<expr> plain_instr block_instr +%type<expr_list> catch_instr catch_list catch_instr_list %type<expr_list> instr instr_list expr expr1 expr_list if_ if_block const_expr offset %type<func> func_fields_body func_fields_body1 func_body func_body1 func_fields_import func_fields_import1 %type<func_sig> func_sig func_type @@ -436,8 +449,9 @@ align_opt : instr : plain_instr { $$ = join_exprs1(&@1, $1); } | block_instr { $$ = join_exprs1(&@1, $1); } - | expr { $$ = $1; } + | expr ; + plain_instr : UNREACHABLE { $$ = Expr::CreateUnreachable(); @@ -521,7 +535,14 @@ plain_instr : | GROW_MEMORY { $$ = Expr::CreateGrowMemory(); } + | throw_check var { + $$ = Expr::CreateThrow($2); + } + | rethrow_check var { + $$ = Expr::CreateRethrow($2); + } ; + block_instr : BLOCK labeling_opt block END labeling_opt { $$ = Expr::CreateBlock($3); @@ -544,7 +565,13 @@ block_instr : CHECK_END_LABEL(@5, $$->if_.true_->label, $5); CHECK_END_LABEL(@8, $$->if_.true_->label, $8); } + | try_check labeling_opt block catch_instr_list END labeling_opt { + $3->label = $2; + $$ = Expr::CreateTry($3, $4.first); + CHECK_END_LABEL(@6, $3->label, $6); + } ; + block_sig : LPAR RESULT value_type_list RPAR { $$ = $3; } ; @@ -560,6 +587,24 @@ block : } ; +catch_instr : + CATCH var instr_list { + Expr* expr = Expr::CreateCatch($2, $3.first); + $$ = join_exprs1(&@1, expr); + } + | CATCH_ALL var instr_list { + Expr* expr = Expr::CreateCatchAll($2, $3.first); + $$ = join_exprs1(&@1, expr); + } + ; + +catch_instr_list : + catch_instr + | catch_instr catch_instr_list { + $$ = join_expr_lists(&$1, &$2); + } + ; + expr : LPAR expr1 RPAR { $$ = $2; } ; @@ -584,7 +629,22 @@ expr1 : assert(if_->type == ExprType::If); if_->if_.true_->label = $2; } -; + | try_check LPAR BLOCK labeling_opt block RPAR catch_list { + $5->label = $4; + Expr* try_ = Expr::CreateTry($5, $7.first); + $$ = join_exprs1(&@1, try_); + } + ; + +catch_list : + LPAR catch_instr RPAR { + $$ = $2; + } + | LPAR catch_instr RPAR catch_list { + $$ = join_expr_lists(&$2, &$4); + } + ; + if_block : block_sig if_block { Expr* if_ = $2.last; @@ -623,6 +683,23 @@ if_ : } ; +rethrow_check : + RETHROW { + CHECK_ALLOW_EXCEPTIONS(&@1, "rethrow"); + } + ; +throw_check : + THROW { + CHECK_ALLOW_EXCEPTIONS(&@1, "throw"); + } + ; + +try_check : + TRY { + CHECK_ALLOW_EXCEPTIONS(&@1, "try"); + } + ; + instr_list : /* empty */ { WABT_ZERO_MEMORY($$); } | instr instr_list { @@ -1462,6 +1539,14 @@ ExprList join_exprs2(Location* loc, ExprList* expr1, Expr* expr2) { return result; } +ExprList join_expr_lists(ExprList* expr1, ExprList* expr2) { + ExprList result; + WABT_ZERO_MEMORY(result); + append_expr_list(&result, expr1); + append_expr_list(&result, expr2); + return result; +} + Result parse_const(Type type, LiteralType literal_type, const char* s, @@ -1737,10 +1822,16 @@ void append_module_fields(Module* module, ModuleField* first) { } Result parse_wast(WastLexer* lexer, Script** out_script, - SourceErrorHandler* error_handler) { + SourceErrorHandler* error_handler, + WastParseOptions* options) { WastParser parser; WABT_ZERO_MEMORY(parser); + static WastParseOptions default_options; + if (options == nullptr) + options = &default_options; + parser.options = options; parser.error_handler = error_handler; + wabt_wast_parser_debug = int(options->debug_parsing); int result = wabt_wast_parser_parse(lexer, &parser); delete [] parser.yyssa; delete [] parser.yyvsa; |