From f645678b01c424a87b7a35d8e176ec9d52f25418 Mon Sep 17 00:00:00 2001 From: James Ring Date: Tue, 11 Nov 2025 10:40:58 -0800 Subject: [PATCH] wast-parser: add support for '(module definition ...)' WASM v3 spec tests added the '(module definition ...)' construct to WAST. This tells the test runner that the module should not be instantiated immediately. The '(module instance ...)' construct (not yet supported in wabt) instructs the test runner to instantiate the module. This change adds an `is_definition` field to ScriptModule. The field reflects whether the `definition` keyword was encountered after the `module` keyword. When WastParser encounters a TextModule in a script command, it now returns a ScriptModule with the corresponding ScriptTextModule if the module is definition-only. This change allows wabt to parse WASM v3 spec tests that use the `(module definition ...)` construct (specifically, `memory.wast`), so that test runners built on wabt can support WASM v3 spec tests. --- include/wabt/ir.h | 2 + include/wabt/token.def | 1 + include/wabt/wast-parser.h | 1 + src/lexer-keywords.txt | 1 + src/prebuilt/lexer-keywords.cc | 1237 +++++++++++++++++--------------- src/test-wast-parser.cc | 19 + src/wast-parser.cc | 33 +- 7 files changed, 709 insertions(+), 585 deletions(-) diff --git a/include/wabt/ir.h b/include/wabt/ir.h index 9102297dc8..f125a47013 100644 --- a/include/wabt/ir.h +++ b/include/wabt/ir.h @@ -1368,6 +1368,8 @@ class ScriptModule { ScriptModuleType type() const { return type_; } virtual const Location& location() const = 0; + bool is_definition = false; + protected: explicit ScriptModule(ScriptModuleType type) : type_(type) {} diff --git a/include/wabt/token.def b/include/wabt/token.def index 22b333cb73..4e7a569677 100644 --- a/include/wabt/token.def +++ b/include/wabt/token.def @@ -34,6 +34,7 @@ WABT_TOKEN(Bin, "bin") WABT_TOKEN(Item, "item") WABT_TOKEN(Data, "data") WABT_TOKEN(Declare, "declare") +WABT_TOKEN(Definition, "definition") WABT_TOKEN(Delegate, "delegate") WABT_TOKEN(Do, "do") WABT_TOKEN(Either, "either") diff --git a/include/wabt/wast-parser.h b/include/wabt/wast-parser.h index ad1c935da3..ec6e20980d 100644 --- a/include/wabt/wast-parser.h +++ b/include/wabt/wast-parser.h @@ -160,6 +160,7 @@ class WastParser { Result Synchronize(SynchronizeFunc); bool ParseBindVarOpt(std::string* name); + bool ParseDefinitionOpt(); Result ParseVar(Var* out_var); bool ParseVarOpt(Var* out_var, Var default_var = Var()); Result ParseOffsetExpr(ExprList* out_expr_list); diff --git a/src/lexer-keywords.txt b/src/lexer-keywords.txt index eda61a3b7e..011ab0310a 100644 --- a/src/lexer-keywords.txt +++ b/src/lexer-keywords.txt @@ -46,6 +46,7 @@ code, TokenType::Code data.drop, TokenType::DataDrop, Opcode::DataDrop data, TokenType::Data declare, TokenType::Declare +definition, TokenType::Definition delegate, TokenType::Delegate do, TokenType::Do drop, TokenType::Drop, Opcode::Drop diff --git a/src/prebuilt/lexer-keywords.cc b/src/prebuilt/lexer-keywords.cc index 8dd541f499..c6fcbfdf72 100644 --- a/src/prebuilt/lexer-keywords.cc +++ b/src/prebuilt/lexer-keywords.cc @@ -1,4 +1,4 @@ -/* C++ code produced by gperf version 3.1 */ +/* C++ code produced by gperf version 3.2.1 */ /* Command-line: gperf -m 50 -L C++ -N InWordSet -E -t -c --output-file=src/prebuilt/lexer-keywords.cc src/lexer-keywords.txt */ /* Computed positions: -k'1,3,5-8,10,12,15,17-19,23,27,$' */ @@ -96,54 +96,119 @@ Perfect_Hash::hash (const char *str, size_t len) { default: hval += asso_values[static_cast(str[26])]; +#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9))) + [[fallthrough]]; +#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10) + __attribute__ ((__fallthrough__)); +#endif /*FALLTHROUGH*/ case 26: case 25: case 24: case 23: hval += asso_values[static_cast(str[22])]; +#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9))) + [[fallthrough]]; +#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10) + __attribute__ ((__fallthrough__)); +#endif /*FALLTHROUGH*/ case 22: case 21: case 20: case 19: hval += asso_values[static_cast(str[18])]; +#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9))) + [[fallthrough]]; +#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10) + __attribute__ ((__fallthrough__)); +#endif /*FALLTHROUGH*/ case 18: hval += asso_values[static_cast(str[17])]; +#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9))) + [[fallthrough]]; +#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10) + __attribute__ ((__fallthrough__)); +#endif /*FALLTHROUGH*/ case 17: hval += asso_values[static_cast(str[16])]; +#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9))) + [[fallthrough]]; +#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10) + __attribute__ ((__fallthrough__)); +#endif /*FALLTHROUGH*/ case 16: case 15: hval += asso_values[static_cast(str[14])]; +#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9))) + [[fallthrough]]; +#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10) + __attribute__ ((__fallthrough__)); +#endif /*FALLTHROUGH*/ case 14: case 13: case 12: hval += asso_values[static_cast(str[11])]; +#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9))) + [[fallthrough]]; +#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10) + __attribute__ ((__fallthrough__)); +#endif /*FALLTHROUGH*/ case 11: case 10: hval += asso_values[static_cast(str[9])]; +#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9))) + [[fallthrough]]; +#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10) + __attribute__ ((__fallthrough__)); +#endif /*FALLTHROUGH*/ case 9: case 8: hval += asso_values[static_cast(str[7])]; +#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9))) + [[fallthrough]]; +#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10) + __attribute__ ((__fallthrough__)); +#endif /*FALLTHROUGH*/ case 7: hval += asso_values[static_cast(str[6])]; +#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9))) + [[fallthrough]]; +#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10) + __attribute__ ((__fallthrough__)); +#endif /*FALLTHROUGH*/ case 6: hval += asso_values[static_cast(str[5])]; +#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9))) + [[fallthrough]]; +#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10) + __attribute__ ((__fallthrough__)); +#endif /*FALLTHROUGH*/ case 5: hval += asso_values[static_cast(str[4])]; +#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9))) + [[fallthrough]]; +#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10) + __attribute__ ((__fallthrough__)); +#endif /*FALLTHROUGH*/ case 4: case 3: hval += asso_values[static_cast(str[2]+1)]; +#if (defined __cplusplus && (__cplusplus >= 201703L || (__cplusplus >= 201103L && defined __clang__ && __clang_major__ + (__clang_minor__ >= 9) > 3))) || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 202000L && ((defined __GNUC__ && __GNUC__ >= 10) || (defined __clang__ && __clang_major__ >= 9))) + [[fallthrough]]; +#elif (defined __GNUC__ && __GNUC__ >= 7) || (defined __clang__ && __clang_major__ >= 10) + __attribute__ ((__fallthrough__)); +#endif /*FALLTHROUGH*/ case 2: case 1: @@ -158,13 +223,17 @@ Perfect_Hash::InWordSet (const char *str, size_t len) { enum { - TOTAL_KEYWORDS = 606, + TOTAL_KEYWORDS = 607, MIN_WORD_LENGTH = 2, MAX_WORD_LENGTH = 35, MIN_HASH_VALUE = 37, MAX_HASH_VALUE = 2229 }; +#if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__ && __clang_major__ >= 3) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif static struct TokenInfo wordlist[] = { {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -175,1424 +244,1427 @@ Perfect_Hash::InWordSet (const char *str, size_t len) #line 37 "src/lexer-keywords.txt" {"br", TokenType::Br, Opcode::Br}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 154 "src/lexer-keywords.txt" +#line 155 "src/lexer-keywords.txt" {"f64", Type::F64}, {""}, {""}, #line 47 "src/lexer-keywords.txt" {"data", TokenType::Data}, {""}, {""}, {""}, -#line 466 "src/lexer-keywords.txt" +#line 467 "src/lexer-keywords.txt" {"i64", Type::I64}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 124 "src/lexer-keywords.txt" +#line 125 "src/lexer-keywords.txt" {"f32x4", TokenType::F32X4}, {""}, {""}, {""}, {""}, -#line 591 "src/lexer-keywords.txt" +#line 592 "src/lexer-keywords.txt" {"table", TokenType::Table}, -#line 50 "src/lexer-keywords.txt" +#line 51 "src/lexer-keywords.txt" {"do", TokenType::Do}, -#line 366 "src/lexer-keywords.txt" +#line 367 "src/lexer-keywords.txt" {"i32x4", TokenType::I32X4}, {""}, {""}, {""}, -#line 137 "src/lexer-keywords.txt" +#line 138 "src/lexer-keywords.txt" {"f64.ge", TokenType::Compare, Opcode::F64Ge}, -#line 76 "src/lexer-keywords.txt" +#line 77 "src/lexer-keywords.txt" {"f32.ge", TokenType::Compare, Opcode::F32Ge}, -#line 139 "src/lexer-keywords.txt" +#line 140 "src/lexer-keywords.txt" {"f64.le", TokenType::Compare, Opcode::F64Le}, -#line 78 "src/lexer-keywords.txt" +#line 79 "src/lexer-keywords.txt" {"f32.le", TokenType::Compare, Opcode::F32Le}, {""}, {""}, {""}, {""}, {""}, #line 30 "src/lexer-keywords.txt" {"before", TokenType::Before}, {""}, {""}, {""}, {""}, {""}, -#line 188 "src/lexer-keywords.txt" +#line 189 "src/lexer-keywords.txt" {"func", Type::FuncRef, TokenType::Func}, -#line 138 "src/lexer-keywords.txt" +#line 139 "src/lexer-keywords.txt" {"f64.gt", TokenType::Compare, Opcode::F64Gt}, -#line 77 "src/lexer-keywords.txt" +#line 78 "src/lexer-keywords.txt" {"f32.gt", TokenType::Compare, Opcode::F32Gt}, -#line 141 "src/lexer-keywords.txt" +#line 142 "src/lexer-keywords.txt" {"f64.lt", TokenType::Compare, Opcode::F64Lt}, -#line 80 "src/lexer-keywords.txt" +#line 81 "src/lexer-keywords.txt" {"f32.lt", TokenType::Compare, Opcode::F32Lt}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 45 "src/lexer-keywords.txt" {"code", TokenType::Code}, {""}, {""}, {""}, -#line 574 "src/lexer-keywords.txt" +#line 575 "src/lexer-keywords.txt" {"result", TokenType::Result}, {""}, -#line 102 "src/lexer-keywords.txt" +#line 103 "src/lexer-keywords.txt" {"f32x4.ge", TokenType::Compare, Opcode::F32X4Ge}, {""}, -#line 104 "src/lexer-keywords.txt" +#line 105 "src/lexer-keywords.txt" {"f32x4.le", TokenType::Compare, Opcode::F32X4Le}, {""}, -#line 583 "src/lexer-keywords.txt" +#line 584 "src/lexer-keywords.txt" {"struct", Type::Struct, TokenType::Struct}, {""}, {""}, {""}, {""}, {""}, -#line 557 "src/lexer-keywords.txt" +#line 558 "src/lexer-keywords.txt" {"mut", TokenType::Mut}, -#line 443 "src/lexer-keywords.txt" +#line 444 "src/lexer-keywords.txt" {"i64.or", TokenType::Binary, Opcode::I64Or}, -#line 300 "src/lexer-keywords.txt" +#line 301 "src/lexer-keywords.txt" {"i32.or", TokenType::Binary, Opcode::I32Or}, {""}, {""}, -#line 586 "src/lexer-keywords.txt" +#line 587 "src/lexer-keywords.txt" {"table.get", TokenType::TableGet, Opcode::TableGet}, -#line 103 "src/lexer-keywords.txt" +#line 104 "src/lexer-keywords.txt" {"f32x4.gt", TokenType::Compare, Opcode::F32X4Gt}, -#line 589 "src/lexer-keywords.txt" +#line 590 "src/lexer-keywords.txt" {"table.set", TokenType::TableSet, Opcode::TableSet}, -#line 105 "src/lexer-keywords.txt" +#line 106 "src/lexer-keywords.txt" {"f32x4.lt", TokenType::Compare, Opcode::F32X4Lt}, -#line 332 "src/lexer-keywords.txt" +#line 333 "src/lexer-keywords.txt" {"i32x4.ge_u", TokenType::Compare, Opcode::I32X4GeU}, {""}, -#line 336 "src/lexer-keywords.txt" +#line 337 "src/lexer-keywords.txt" {"i32x4.le_u", TokenType::Compare, Opcode::I32X4LeU}, {""}, -#line 331 "src/lexer-keywords.txt" +#line 332 "src/lexer-keywords.txt" {"i32x4.ge_s", TokenType::Compare, Opcode::I32X4GeS}, -#line 95 "src/lexer-keywords.txt" +#line 96 "src/lexer-keywords.txt" {"f32x4.ceil", TokenType::Unary, Opcode::F32X4Ceil}, -#line 335 "src/lexer-keywords.txt" +#line 336 "src/lexer-keywords.txt" {"i32x4.le_s", TokenType::Compare, Opcode::I32X4LeS}, {""}, -#line 334 "src/lexer-keywords.txt" +#line 335 "src/lexer-keywords.txt" {"i32x4.gt_u", TokenType::Compare, Opcode::I32X4GtU}, {""}, -#line 344 "src/lexer-keywords.txt" +#line 345 "src/lexer-keywords.txt" {"i32x4.lt_u", TokenType::Compare, Opcode::I32X4LtU}, {""}, -#line 333 "src/lexer-keywords.txt" +#line 334 "src/lexer-keywords.txt" {"i32x4.gt_s", TokenType::Compare, Opcode::I32X4GtS}, {""}, -#line 343 "src/lexer-keywords.txt" +#line 344 "src/lexer-keywords.txt" {"i32x4.lt_s", TokenType::Compare, Opcode::I32X4LtS}, -#line 147 "src/lexer-keywords.txt" +#line 148 "src/lexer-keywords.txt" {"f64.ne", TokenType::Compare, Opcode::F64Ne}, -#line 86 "src/lexer-keywords.txt" +#line 87 "src/lexer-keywords.txt" {"f32.ne", TokenType::Compare, Opcode::F32Ne}, {""}, {""}, {""}, -#line 556 "src/lexer-keywords.txt" +#line 557 "src/lexer-keywords.txt" {"module", TokenType::Module}, {""}, -#line 442 "src/lexer-keywords.txt" +#line 443 "src/lexer-keywords.txt" {"i64.ne", TokenType::Compare, Opcode::I64Ne}, -#line 299 "src/lexer-keywords.txt" +#line 300 "src/lexer-keywords.txt" {"i32.ne", TokenType::Compare, Opcode::I32Ne}, #line 48 "src/lexer-keywords.txt" {"declare", TokenType::Declare}, {""}, -#line 146 "src/lexer-keywords.txt" +#line 147 "src/lexer-keywords.txt" {"f64.neg", TokenType::Unary, Opcode::F64Neg}, -#line 85 "src/lexer-keywords.txt" +#line 86 "src/lexer-keywords.txt" {"f32.neg", TokenType::Unary, Opcode::F32Neg}, {""}, -#line 151 "src/lexer-keywords.txt" +#line 152 "src/lexer-keywords.txt" {"f64.store", TokenType::Store, Opcode::F64Store}, -#line 89 "src/lexer-keywords.txt" +#line 90 "src/lexer-keywords.txt" {"f32.store", TokenType::Store, Opcode::F32Store}, {""}, -#line 449 "src/lexer-keywords.txt" +#line 450 "src/lexer-keywords.txt" {"i64.rotr", TokenType::Binary, Opcode::I64Rotr}, -#line 306 "src/lexer-keywords.txt" +#line 307 "src/lexer-keywords.txt" {"i32.rotr", TokenType::Binary, Opcode::I32Rotr}, -#line 448 "src/lexer-keywords.txt" +#line 449 "src/lexer-keywords.txt" {"i64.rotl", TokenType::Binary, Opcode::I64Rotl}, -#line 305 "src/lexer-keywords.txt" +#line 306 "src/lexer-keywords.txt" {"i32.rotl", TokenType::Binary, Opcode::I32Rotl}, -#line 456 "src/lexer-keywords.txt" +#line 457 "src/lexer-keywords.txt" {"i64.store", TokenType::Store, Opcode::I64Store}, -#line 312 "src/lexer-keywords.txt" +#line 313 "src/lexer-keywords.txt" {"i32.store", TokenType::Store, Opcode::I32Store}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 572 "src/lexer-keywords.txt" +#line 573 "src/lexer-keywords.txt" {"ref.null", TokenType::RefNull, Opcode::RefNull}, -#line 110 "src/lexer-keywords.txt" +#line 111 "src/lexer-keywords.txt" {"f32x4.neg", TokenType::Unary, Opcode::F32X4Neg}, {""}, -#line 111 "src/lexer-keywords.txt" +#line 112 "src/lexer-keywords.txt" {"f32x4.ne", TokenType::Compare, Opcode::F32X4Ne}, {""}, {""}, {""}, {""}, -#line 351 "src/lexer-keywords.txt" +#line 352 "src/lexer-keywords.txt" {"i32x4.neg", TokenType::Unary, Opcode::I32X4Neg}, {""}, -#line 352 "src/lexer-keywords.txt" +#line 353 "src/lexer-keywords.txt" {"i32x4.ne", TokenType::Compare, Opcode::I32X4Ne}, {""}, {""}, -#line 153 "src/lexer-keywords.txt" +#line 154 "src/lexer-keywords.txt" {"f64.trunc", TokenType::Unary, Opcode::F64Trunc}, -#line 91 "src/lexer-keywords.txt" +#line 92 "src/lexer-keywords.txt" {"f32.trunc", TokenType::Unary, Opcode::F32Trunc}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 145 "src/lexer-keywords.txt" +#line 146 "src/lexer-keywords.txt" {"f64.nearest", TokenType::Unary, Opcode::F64Nearest}, -#line 84 "src/lexer-keywords.txt" +#line 85 "src/lexer-keywords.txt" {"f32.nearest", TokenType::Unary, Opcode::F32Nearest}, {""}, {""}, {""}, -#line 122 "src/lexer-keywords.txt" +#line 123 "src/lexer-keywords.txt" {"f32x4.trunc", TokenType::Unary, Opcode::F32X4Trunc}, -#line 579 "src/lexer-keywords.txt" +#line 580 "src/lexer-keywords.txt" {"return", TokenType::Return, Opcode::Return}, {""}, {""}, {""}, {""}, -#line 561 "src/lexer-keywords.txt" +#line 562 "src/lexer-keywords.txt" {"null", TokenType::Null}, -#line 455 "src/lexer-keywords.txt" +#line 456 "src/lexer-keywords.txt" {"i64.store8", TokenType::Store, Opcode::I64Store8}, -#line 311 "src/lexer-keywords.txt" +#line 312 "src/lexer-keywords.txt" {"i32.store8", TokenType::Store, Opcode::I32Store8}, -#line 144 "src/lexer-keywords.txt" +#line 145 "src/lexer-keywords.txt" {"f64.mul", TokenType::Binary, Opcode::F64Mul}, -#line 83 "src/lexer-keywords.txt" +#line 84 "src/lexer-keywords.txt" {"f32.mul", TokenType::Binary, Opcode::F32Mul}, -#line 94 "src/lexer-keywords.txt" +#line 95 "src/lexer-keywords.txt" {"f32x4.add", TokenType::Binary, Opcode::F32X4Add}, -#line 109 "src/lexer-keywords.txt" +#line 110 "src/lexer-keywords.txt" {"f32x4.nearest", TokenType::Unary, Opcode::F32X4Nearest}, {""}, {""}, {""}, -#line 441 "src/lexer-keywords.txt" +#line 442 "src/lexer-keywords.txt" {"i64.mul", TokenType::Binary, Opcode::I64Mul}, -#line 298 "src/lexer-keywords.txt" +#line 299 "src/lexer-keywords.txt" {"i32.mul", TokenType::Binary, Opcode::I32Mul}, -#line 325 "src/lexer-keywords.txt" +#line 326 "src/lexer-keywords.txt" {"i32x4.add", TokenType::Binary, Opcode::I32X4Add}, {""}, #line 40 "src/lexer-keywords.txt" {"call", TokenType::Call, Opcode::Call}, {""}, -#line 128 "src/lexer-keywords.txt" +#line 129 "src/lexer-keywords.txt" {"f64.const", TokenType::Const, Opcode::F64Const}, -#line 66 "src/lexer-keywords.txt" +#line 67 "src/lexer-keywords.txt" {"f32.const", TokenType::Const, Opcode::F32Const}, {""}, {""}, {""}, -#line 108 "src/lexer-keywords.txt" +#line 109 "src/lexer-keywords.txt" {"f32x4.mul", TokenType::Binary, Opcode::F32X4Mul}, {""}, -#line 415 "src/lexer-keywords.txt" +#line 416 "src/lexer-keywords.txt" {"i64.const", TokenType::Const, Opcode::I64Const}, -#line 277 "src/lexer-keywords.txt" +#line 278 "src/lexer-keywords.txt" {"i32.const", TokenType::Const, Opcode::I32Const}, {""}, -#line 580 "src/lexer-keywords.txt" +#line 581 "src/lexer-keywords.txt" {"select", TokenType::Select, Opcode::Select}, {""}, -#line 350 "src/lexer-keywords.txt" +#line 351 "src/lexer-keywords.txt" {"i32x4.mul", TokenType::Binary, Opcode::I32X4Mul}, {""}, -#line 545 "src/lexer-keywords.txt" +#line 546 "src/lexer-keywords.txt" {"local", TokenType::Local}, {""}, {""}, {""}, -#line 498 "src/lexer-keywords.txt" +#line 499 "src/lexer-keywords.txt" {"i64.xor", TokenType::Binary, Opcode::I64Xor}, -#line 375 "src/lexer-keywords.txt" +#line 376 "src/lexer-keywords.txt" {"i32.xor", TokenType::Binary, Opcode::I32Xor}, -#line 49 "src/lexer-keywords.txt" +#line 50 "src/lexer-keywords.txt" {"delegate", TokenType::Delegate}, {""}, {""}, {""}, -#line 126 "src/lexer-keywords.txt" +#line 127 "src/lexer-keywords.txt" {"f64.add", TokenType::Binary, Opcode::F64Add}, -#line 64 "src/lexer-keywords.txt" +#line 65 "src/lexer-keywords.txt" {"f32.add", TokenType::Binary, Opcode::F32Add}, -#line 140 "src/lexer-keywords.txt" +#line 141 "src/lexer-keywords.txt" {"f64.load", TokenType::Load, Opcode::F64Load}, -#line 79 "src/lexer-keywords.txt" +#line 80 "src/lexer-keywords.txt" {"f32.load", TokenType::Load, Opcode::F32Load}, {""}, {""}, {""}, -#line 376 "src/lexer-keywords.txt" +#line 377 "src/lexer-keywords.txt" {"i64.add", TokenType::Binary, Opcode::I64Add}, -#line 247 "src/lexer-keywords.txt" +#line 248 "src/lexer-keywords.txt" {"i32.add", TokenType::Binary, Opcode::I32Add}, -#line 438 "src/lexer-keywords.txt" +#line 439 "src/lexer-keywords.txt" {"i64.load", TokenType::Load, Opcode::I64Load}, -#line 295 "src/lexer-keywords.txt" +#line 296 "src/lexer-keywords.txt" {"i32.load", TokenType::Load, Opcode::I32Load}, {""}, {""}, {""}, {""}, -#line 118 "src/lexer-keywords.txt" +#line 119 "src/lexer-keywords.txt" {"f32x4.replace_lane", TokenType::SimdLaneOp, Opcode::F32X4ReplaceLane}, {""}, {""}, {""}, -#line 377 "src/lexer-keywords.txt" +#line 378 "src/lexer-keywords.txt" {"i64.and", TokenType::Binary, Opcode::I64And}, -#line 248 "src/lexer-keywords.txt" +#line 249 "src/lexer-keywords.txt" {"i32.and", TokenType::Binary, Opcode::I32And}, {""}, -#line 354 "src/lexer-keywords.txt" +#line 355 "src/lexer-keywords.txt" {"i32x4.replace_lane", TokenType::SimdLaneOp, Opcode::I32X4ReplaceLane}, {""}, {""}, {""}, -#line 427 "src/lexer-keywords.txt" +#line 428 "src/lexer-keywords.txt" {"i64.ge_u", TokenType::Compare, Opcode::I64GeU}, -#line 286 "src/lexer-keywords.txt" +#line 287 "src/lexer-keywords.txt" {"i32.ge_u", TokenType::Compare, Opcode::I32GeU}, -#line 431 "src/lexer-keywords.txt" +#line 432 "src/lexer-keywords.txt" {"i64.le_u", TokenType::Compare, Opcode::I64LeU}, -#line 290 "src/lexer-keywords.txt" +#line 291 "src/lexer-keywords.txt" {"i32.le_u", TokenType::Compare, Opcode::I32LeU}, -#line 426 "src/lexer-keywords.txt" +#line 427 "src/lexer-keywords.txt" {"i64.ge_s", TokenType::Compare, Opcode::I64GeS}, -#line 285 "src/lexer-keywords.txt" +#line 286 "src/lexer-keywords.txt" {"i32.ge_s", TokenType::Compare, Opcode::I32GeS}, -#line 430 "src/lexer-keywords.txt" +#line 431 "src/lexer-keywords.txt" {"i64.le_s", TokenType::Compare, Opcode::I64LeS}, -#line 289 "src/lexer-keywords.txt" +#line 290 "src/lexer-keywords.txt" {"i32.le_s", TokenType::Compare, Opcode::I32LeS}, -#line 429 "src/lexer-keywords.txt" +#line 430 "src/lexer-keywords.txt" {"i64.gt_u", TokenType::Compare, Opcode::I64GtU}, -#line 288 "src/lexer-keywords.txt" +#line 289 "src/lexer-keywords.txt" {"i32.gt_u", TokenType::Compare, Opcode::I32GtU}, -#line 440 "src/lexer-keywords.txt" +#line 441 "src/lexer-keywords.txt" {"i64.lt_u", TokenType::Compare, Opcode::I64LtU}, -#line 297 "src/lexer-keywords.txt" +#line 298 "src/lexer-keywords.txt" {"i32.lt_u", TokenType::Compare, Opcode::I32LtU}, -#line 428 "src/lexer-keywords.txt" +#line 429 "src/lexer-keywords.txt" {"i64.gt_s", TokenType::Compare, Opcode::I64GtS}, -#line 287 "src/lexer-keywords.txt" +#line 288 "src/lexer-keywords.txt" {"i32.gt_s", TokenType::Compare, Opcode::I32GtS}, -#line 439 "src/lexer-keywords.txt" +#line 440 "src/lexer-keywords.txt" {"i64.lt_s", TokenType::Compare, Opcode::I64LtS}, -#line 296 "src/lexer-keywords.txt" +#line 297 "src/lexer-keywords.txt" {"i32.lt_s", TokenType::Compare, Opcode::I32LtS}, {""}, {""}, {""}, -#line 542 "src/lexer-keywords.txt" +#line 543 "src/lexer-keywords.txt" {"local.get", TokenType::LocalGet, Opcode::LocalGet}, {""}, -#line 543 "src/lexer-keywords.txt" - {"local.set", TokenType::LocalSet, Opcode::LocalSet}, #line 544 "src/lexer-keywords.txt" + {"local.set", TokenType::LocalSet, Opcode::LocalSet}, +#line 545 "src/lexer-keywords.txt" {"local.tee", TokenType::LocalTee, Opcode::LocalTee}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 353 "src/lexer-keywords.txt" +#line 354 "src/lexer-keywords.txt" {"i32x4.relaxed_laneselect", TokenType::Ternary, Opcode::I32X4RelaxedLaneSelect}, -#line 326 "src/lexer-keywords.txt" +#line 327 "src/lexer-keywords.txt" {"i32x4.all_true", TokenType::Unary, Opcode::I32X4AllTrue}, {""}, -#line 127 "src/lexer-keywords.txt" +#line 128 "src/lexer-keywords.txt" {"f64.ceil", TokenType::Unary, Opcode::F64Ceil}, -#line 65 "src/lexer-keywords.txt" +#line 66 "src/lexer-keywords.txt" {"f32.ceil", TokenType::Unary, Opcode::F32Ceil}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 590 "src/lexer-keywords.txt" +#line 591 "src/lexer-keywords.txt" {"table.size", TokenType::TableSize, Opcode::TableSize}, {""}, {""}, {""}, -#line 106 "src/lexer-keywords.txt" +#line 107 "src/lexer-keywords.txt" {"f32x4.max", TokenType::Binary, Opcode::F32X4Max}, -#line 537 "src/lexer-keywords.txt" +#line 538 "src/lexer-keywords.txt" {"if", TokenType::If, Opcode::If}, -#line 413 "src/lexer-keywords.txt" +#line 414 "src/lexer-keywords.txt" {"i64.atomic.store", TokenType::AtomicStore, Opcode::I64AtomicStore}, -#line 275 "src/lexer-keywords.txt" +#line 276 "src/lexer-keywords.txt" {"i32.atomic.store", TokenType::AtomicStore, Opcode::I32AtomicStore}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 566 "src/lexer-keywords.txt" +#line 567 "src/lexer-keywords.txt" {"ref", TokenType::Ref}, {""}, {""}, -#line 406 "src/lexer-keywords.txt" +#line 407 "src/lexer-keywords.txt" {"i64.atomic.rmw.or", TokenType::AtomicRmw, Opcode::I64AtomicRmwOr}, -#line 269 "src/lexer-keywords.txt" +#line 270 "src/lexer-keywords.txt" {"i32.atomic.rmw.or", TokenType::AtomicRmw, Opcode::I32AtomicRmwOr}, {""}, {""}, {""}, {""}, {""}, -#line 578 "src/lexer-keywords.txt" +#line 579 "src/lexer-keywords.txt" {"return_call", TokenType::ReturnCall, Opcode::ReturnCall}, {""}, {""}, -#line 55 "src/lexer-keywords.txt" +#line 56 "src/lexer-keywords.txt" {"else", TokenType::Else, Opcode::Else}, {""}, {""}, {""}, {""}, {""}, -#line 57 "src/lexer-keywords.txt" +#line 58 "src/lexer-keywords.txt" {"tag", TokenType::Tag}, {""}, -#line 100 "src/lexer-keywords.txt" +#line 101 "src/lexer-keywords.txt" {"f32x4.extract_lane", TokenType::SimdLaneOp, Opcode::F32X4ExtractLane}, -#line 569 "src/lexer-keywords.txt" +#line 570 "src/lexer-keywords.txt" {"ref.extern", TokenType::RefExtern}, -#line 340 "src/lexer-keywords.txt" +#line 341 "src/lexer-keywords.txt" {"i32x4.relaxed_trunc_f64x2_u_zero", TokenType::Unary, Opcode::I32X4RelaxedTruncF64X2UZero}, -#line 92 "src/lexer-keywords.txt" +#line 93 "src/lexer-keywords.txt" {"f32", Type::F32}, -#line 339 "src/lexer-keywords.txt" +#line 340 "src/lexer-keywords.txt" {"i32x4.relaxed_trunc_f64x2_s_zero", TokenType::Unary, Opcode::I32X4RelaxedTruncF64X2SZero}, {""}, {""}, -#line 330 "src/lexer-keywords.txt" +#line 331 "src/lexer-keywords.txt" {"i32x4.extract_lane", TokenType::SimdLaneOp, Opcode::I32X4ExtractLane}, {""}, -#line 191 "src/lexer-keywords.txt" +#line 192 "src/lexer-keywords.txt" {"get", TokenType::Get}, -#line 322 "src/lexer-keywords.txt" +#line 323 "src/lexer-keywords.txt" {"i32", Type::I32}, -#line 52 "src/lexer-keywords.txt" +#line 53 "src/lexer-keywords.txt" {"either", TokenType::Either}, {""}, {""}, -#line 393 "src/lexer-keywords.txt" +#line 394 "src/lexer-keywords.txt" {"i64.atomic.rmw32.sub_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw32SubU}, -#line 437 "src/lexer-keywords.txt" +#line 438 "src/lexer-keywords.txt" {"i64.load8_u", TokenType::Load, Opcode::I64Load8U}, -#line 294 "src/lexer-keywords.txt" +#line 295 "src/lexer-keywords.txt" {"i32.load8_u", TokenType::Load, Opcode::I32Load8U}, -#line 436 "src/lexer-keywords.txt" +#line 437 "src/lexer-keywords.txt" {"i64.load8_s", TokenType::Load, Opcode::I64Load8S}, -#line 293 "src/lexer-keywords.txt" +#line 294 "src/lexer-keywords.txt" {"i32.load8_s", TokenType::Load, Opcode::I32Load8S}, {""}, -#line 412 "src/lexer-keywords.txt" +#line 413 "src/lexer-keywords.txt" {"i64.atomic.store8", TokenType::AtomicStore, Opcode::I64AtomicStore8}, -#line 274 "src/lexer-keywords.txt" +#line 275 "src/lexer-keywords.txt" {"i32.atomic.store8", TokenType::AtomicStore, Opcode::I32AtomicStore8}, -#line 433 "src/lexer-keywords.txt" +#line 434 "src/lexer-keywords.txt" {"i64.load16_u", TokenType::Load, Opcode::I64Load16U}, -#line 292 "src/lexer-keywords.txt" +#line 293 "src/lexer-keywords.txt" {"i32.load16_u", TokenType::Load, Opcode::I32Load16U}, -#line 459 "src/lexer-keywords.txt" +#line 460 "src/lexer-keywords.txt" {"i64.trunc_f32_u", TokenType::Convert, Opcode::I64TruncF32U}, -#line 315 "src/lexer-keywords.txt" +#line 316 "src/lexer-keywords.txt" {"i32.trunc_f32_u", TokenType::Convert, Opcode::I32TruncF32U}, -#line 432 "src/lexer-keywords.txt" +#line 433 "src/lexer-keywords.txt" {"i64.load16_s", TokenType::Load, Opcode::I64Load16S}, -#line 291 "src/lexer-keywords.txt" +#line 292 "src/lexer-keywords.txt" {"i32.load16_s", TokenType::Load, Opcode::I32Load16S}, -#line 458 "src/lexer-keywords.txt" +#line 459 "src/lexer-keywords.txt" {"i64.trunc_f32_s", TokenType::Convert, Opcode::I64TruncF32S}, -#line 314 "src/lexer-keywords.txt" +#line 315 "src/lexer-keywords.txt" {"i32.trunc_f32_s", TokenType::Convert, Opcode::I32TruncF32S}, -#line 447 "src/lexer-keywords.txt" +#line 448 "src/lexer-keywords.txt" {"i64.rem_u", TokenType::Binary, Opcode::I64RemU}, -#line 304 "src/lexer-keywords.txt" +#line 305 "src/lexer-keywords.txt" {"i32.rem_u", TokenType::Binary, Opcode::I32RemU}, -#line 446 "src/lexer-keywords.txt" +#line 447 "src/lexer-keywords.txt" {"i64.rem_s", TokenType::Binary, Opcode::I64RemS}, -#line 303 "src/lexer-keywords.txt" +#line 304 "src/lexer-keywords.txt" {"i32.rem_s", TokenType::Binary, Opcode::I32RemS}, {""}, -#line 56 "src/lexer-keywords.txt" +#line 57 "src/lexer-keywords.txt" {"end", TokenType::End, Opcode::End}, {""}, -#line 409 "src/lexer-keywords.txt" +#line 410 "src/lexer-keywords.txt" {"i64.atomic.rmw.xor", TokenType::AtomicRmw, Opcode::I64AtomicRmwXor}, -#line 272 "src/lexer-keywords.txt" +#line 273 "src/lexer-keywords.txt" {"i32.atomic.rmw.xor", TokenType::AtomicRmw, Opcode::I32AtomicRmwXor}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 592 "src/lexer-keywords.txt" +#line 593 "src/lexer-keywords.txt" {"then", TokenType::Then}, -#line 588 "src/lexer-keywords.txt" +#line 589 "src/lexer-keywords.txt" {"table.init", TokenType::TableInit, Opcode::TableInit}, {""}, {""}, -#line 346 "src/lexer-keywords.txt" +#line 347 "src/lexer-keywords.txt" {"i32x4.max_u", TokenType::Binary, Opcode::I32X4MaxU}, {""}, -#line 345 "src/lexer-keywords.txt" +#line 346 "src/lexer-keywords.txt" {"i32x4.max_s", TokenType::Binary, Opcode::I32X4MaxS}, #line 35 "src/lexer-keywords.txt" {"br_on_null", TokenType::BrOnNull, Opcode::BrOnNull}, -#line 392 "src/lexer-keywords.txt" +#line 393 "src/lexer-keywords.txt" {"i64.atomic.rmw32.or_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw32OrU}, -#line 450 "src/lexer-keywords.txt" +#line 451 "src/lexer-keywords.txt" {"i64.shl", TokenType::Binary, Opcode::I64Shl}, -#line 307 "src/lexer-keywords.txt" +#line 308 "src/lexer-keywords.txt" {"i32.shl", TokenType::Binary, Opcode::I32Shl}, {""}, {""}, -#line 116 "src/lexer-keywords.txt" +#line 117 "src/lexer-keywords.txt" {"f32x4.relaxed_min", TokenType::Binary, Opcode::F32X4RelaxedMin}, {""}, -#line 117 "src/lexer-keywords.txt" +#line 118 "src/lexer-keywords.txt" {"f32x4.relaxed_nmadd", TokenType::Ternary, Opcode::F32X4RelaxedNmadd}, -#line 142 "src/lexer-keywords.txt" +#line 143 "src/lexer-keywords.txt" {"f64.max", TokenType::Binary, Opcode::F64Max}, -#line 81 "src/lexer-keywords.txt" +#line 82 "src/lexer-keywords.txt" {"f32.max", TokenType::Binary, Opcode::F32Max}, {""}, {""}, -#line 162 "src/lexer-keywords.txt" +#line 163 "src/lexer-keywords.txt" {"f64x2.ge", TokenType::Compare, Opcode::F64X2Ge}, {""}, -#line 164 "src/lexer-keywords.txt" +#line 165 "src/lexer-keywords.txt" {"f64x2.le", TokenType::Compare, Opcode::F64X2Le}, {""}, {""}, -#line 389 "src/lexer-keywords.txt" +#line 390 "src/lexer-keywords.txt" {"i64.atomic.rmw32.add_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw32AddU}, {""}, -#line 355 "src/lexer-keywords.txt" +#line 356 "src/lexer-keywords.txt" {"i32x4.shl", TokenType::Binary, Opcode::I32X4Shl}, {""}, {""}, -#line 573 "src/lexer-keywords.txt" +#line 574 "src/lexer-keywords.txt" {"register", TokenType::Register}, -#line 381 "src/lexer-keywords.txt" +#line 382 "src/lexer-keywords.txt" {"i64.atomic.load", TokenType::AtomicLoad, Opcode::I64AtomicLoad}, -#line 251 "src/lexer-keywords.txt" +#line 252 "src/lexer-keywords.txt" {"i32.atomic.load", TokenType::AtomicLoad, Opcode::I32AtomicLoad}, {""}, {""}, {""}, -#line 163 "src/lexer-keywords.txt" +#line 164 "src/lexer-keywords.txt" {"f64x2.gt", TokenType::Compare, Opcode::F64X2Gt}, -#line 390 "src/lexer-keywords.txt" +#line 391 "src/lexer-keywords.txt" {"i64.atomic.rmw32.and_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw32AndU}, -#line 165 "src/lexer-keywords.txt" +#line 166 "src/lexer-keywords.txt" {"f64x2.lt", TokenType::Compare, Opcode::F64X2Lt}, {""}, -#line 60 "src/lexer-keywords.txt" +#line 61 "src/lexer-keywords.txt" {"exn", Type::ExnRef, TokenType::Exn}, {""}, {""}, -#line 477 "src/lexer-keywords.txt" +#line 478 "src/lexer-keywords.txt" {"i64x2.ge_s", TokenType::Binary, Opcode::I64X2GeS}, -#line 157 "src/lexer-keywords.txt" +#line 158 "src/lexer-keywords.txt" {"f64x2.ceil", TokenType::Unary, Opcode::F64X2Ceil}, -#line 476 "src/lexer-keywords.txt" +#line 477 "src/lexer-keywords.txt" {"i64x2.le_s", TokenType::Binary, Opcode::I64X2LeS}, {""}, {""}, {""}, {""}, {""}, -#line 475 "src/lexer-keywords.txt" +#line 476 "src/lexer-keywords.txt" {"i64x2.gt_s", TokenType::Binary, Opcode::I64X2GtS}, {""}, -#line 474 "src/lexer-keywords.txt" +#line 475 "src/lexer-keywords.txt" {"i64x2.lt_s", TokenType::Binary, Opcode::I64X2LtS}, -#line 101 "src/lexer-keywords.txt" +#line 102 "src/lexer-keywords.txt" {"f32x4.floor", TokenType::Unary, Opcode::F32X4Floor}, {""}, {""}, -#line 187 "src/lexer-keywords.txt" +#line 188 "src/lexer-keywords.txt" {"field", TokenType::Field}, -#line 114 "src/lexer-keywords.txt" +#line 115 "src/lexer-keywords.txt" {"f32x4.relaxed_madd", TokenType::Ternary, Opcode::F32X4RelaxedMadd}, {""}, {""}, {""}, {""}, {""}, -#line 421 "src/lexer-keywords.txt" +#line 422 "src/lexer-keywords.txt" {"i64.extend16_s", TokenType::Unary, Opcode::I64Extend16S}, -#line 283 "src/lexer-keywords.txt" +#line 284 "src/lexer-keywords.txt" {"i32.extend16_s", TokenType::Unary, Opcode::I32Extend16S}, {""}, -#line 541 "src/lexer-keywords.txt" +#line 542 "src/lexer-keywords.txt" {"item", TokenType::Item}, {""}, {""}, -#line 423 "src/lexer-keywords.txt" +#line 424 "src/lexer-keywords.txt" {"i64.extend8_s", TokenType::Unary, Opcode::I64Extend8S}, -#line 284 "src/lexer-keywords.txt" +#line 285 "src/lexer-keywords.txt" {"i32.extend8_s", TokenType::Unary, Opcode::I32Extend8S}, {""}, {""}, -#line 570 "src/lexer-keywords.txt" +#line 571 "src/lexer-keywords.txt" {"ref.func", TokenType::RefFunc, Opcode::RefFunc}, -#line 136 "src/lexer-keywords.txt" +#line 137 "src/lexer-keywords.txt" {"f64.floor", TokenType::Unary, Opcode::F64Floor}, -#line 75 "src/lexer-keywords.txt" +#line 76 "src/lexer-keywords.txt" {"f32.floor", TokenType::Unary, Opcode::F32Floor}, {""}, {""}, -#line 414 "src/lexer-keywords.txt" +#line 415 "src/lexer-keywords.txt" {"i64.clz", TokenType::Unary, Opcode::I64Clz}, -#line 276 "src/lexer-keywords.txt" +#line 277 "src/lexer-keywords.txt" {"i32.clz", TokenType::Unary, Opcode::I32Clz}, {""}, {""}, {""}, {""}, -#line 170 "src/lexer-keywords.txt" +#line 171 "src/lexer-keywords.txt" {"f64x2.neg", TokenType::Unary, Opcode::F64X2Neg}, -#line 107 "src/lexer-keywords.txt" +#line 108 "src/lexer-keywords.txt" {"f32x4.min", TokenType::Binary, Opcode::F32X4Min}, -#line 171 "src/lexer-keywords.txt" +#line 172 "src/lexer-keywords.txt" {"f64x2.ne", TokenType::Compare, Opcode::F64X2Ne}, -#line 416 "src/lexer-keywords.txt" +#line 417 "src/lexer-keywords.txt" {"i64.ctz", TokenType::Unary, Opcode::I64Ctz}, -#line 278 "src/lexer-keywords.txt" +#line 279 "src/lexer-keywords.txt" {"i32.ctz", TokenType::Unary, Opcode::I32Ctz}, {""}, {""}, -#line 479 "src/lexer-keywords.txt" +#line 480 "src/lexer-keywords.txt" {"i64x2.neg", TokenType::Unary, Opcode::I64X2Neg}, -#line 454 "src/lexer-keywords.txt" +#line 455 "src/lexer-keywords.txt" {"i64.store32", TokenType::Store, Opcode::I64Store32}, -#line 473 "src/lexer-keywords.txt" +#line 474 "src/lexer-keywords.txt" {"i64x2.ne", TokenType::Binary, Opcode::I64X2Ne}, {""}, -#line 58 "src/lexer-keywords.txt" +#line 59 "src/lexer-keywords.txt" {"extern", Type::ExternRef, TokenType::Extern}, -#line 396 "src/lexer-keywords.txt" +#line 397 "src/lexer-keywords.txt" {"i64.atomic.rmw8.add_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw8AddU}, -#line 259 "src/lexer-keywords.txt" +#line 260 "src/lexer-keywords.txt" {"i32.atomic.rmw8.add_u", TokenType::AtomicRmw, Opcode::I32AtomicRmw8AddU}, {""}, {""}, -#line 394 "src/lexer-keywords.txt" +#line 395 "src/lexer-keywords.txt" {"i64.atomic.rmw32.xchg_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw32XchgU}, {""}, -#line 115 "src/lexer-keywords.txt" +#line 116 "src/lexer-keywords.txt" {"f32x4.relaxed_max", TokenType::Binary, Opcode::F32X4RelaxedMax}, -#line 568 "src/lexer-keywords.txt" +#line 569 "src/lexer-keywords.txt" {"ref.as_non_null", TokenType::RefAsNonNull, Opcode::RefAsNonNull}, {""}, {""}, {""}, {""}, -#line 397 "src/lexer-keywords.txt" +#line 398 "src/lexer-keywords.txt" {"i64.atomic.rmw8.and_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw8AndU}, -#line 260 "src/lexer-keywords.txt" +#line 261 "src/lexer-keywords.txt" {"i32.atomic.rmw8.and_u", TokenType::AtomicRmw, Opcode::I32AtomicRmw8AndU}, {""}, {""}, -#line 190 "src/lexer-keywords.txt" +#line 191 "src/lexer-keywords.txt" {"function", TokenType::Function}, -#line 403 "src/lexer-keywords.txt" +#line 404 "src/lexer-keywords.txt" {"i64.atomic.rmw.add", TokenType::AtomicRmw, Opcode::I64AtomicRmwAdd}, -#line 266 "src/lexer-keywords.txt" +#line 267 "src/lexer-keywords.txt" {"i32.atomic.rmw.add", TokenType::AtomicRmw, Opcode::I32AtomicRmwAdd}, {""}, -#line 182 "src/lexer-keywords.txt" +#line 183 "src/lexer-keywords.txt" {"f64x2.trunc", TokenType::Unary, Opcode::F64X2Trunc}, {""}, {""}, -#line 395 "src/lexer-keywords.txt" +#line 396 "src/lexer-keywords.txt" {"i64.atomic.rmw32.xor_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw32XorU}, {""}, {""}, -#line 559 "src/lexer-keywords.txt" +#line 560 "src/lexer-keywords.txt" {"nan:canonical", TokenType::NanCanonical}, {""}, {""}, -#line 404 "src/lexer-keywords.txt" +#line 405 "src/lexer-keywords.txt" {"i64.atomic.rmw.and", TokenType::AtomicRmw, Opcode::I64AtomicRmwAnd}, -#line 267 "src/lexer-keywords.txt" +#line 268 "src/lexer-keywords.txt" {"i32.atomic.rmw.and", TokenType::AtomicRmw, Opcode::I32AtomicRmwAnd}, -#line 156 "src/lexer-keywords.txt" +#line 157 "src/lexer-keywords.txt" {"f64x2.add", TokenType::Binary, Opcode::F64X2Add}, -#line 169 "src/lexer-keywords.txt" +#line 170 "src/lexer-keywords.txt" {"f64x2.nearest", TokenType::Unary, Opcode::F64X2Nearest}, {""}, {""}, {""}, -#line 143 "src/lexer-keywords.txt" +#line 144 "src/lexer-keywords.txt" {"f64.min", TokenType::Binary, Opcode::F64Min}, -#line 82 "src/lexer-keywords.txt" +#line 83 "src/lexer-keywords.txt" {"f32.min", TokenType::Binary, Opcode::F32Min}, -#line 467 "src/lexer-keywords.txt" +#line 468 "src/lexer-keywords.txt" {"i64x2.add", TokenType::Binary, Opcode::I64X2Add}, {""}, {""}, -#line 402 "src/lexer-keywords.txt" +#line 403 "src/lexer-keywords.txt" {"i64.atomic.rmw8.xor_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw8XorU}, -#line 265 "src/lexer-keywords.txt" +#line 266 "src/lexer-keywords.txt" {"i32.atomic.rmw8.xor_u", TokenType::AtomicRmw, Opcode::I32AtomicRmw8XorU}, {""}, -#line 461 "src/lexer-keywords.txt" +#line 462 "src/lexer-keywords.txt" {"i64.trunc_f64_u", TokenType::Convert, Opcode::I64TruncF64U}, -#line 317 "src/lexer-keywords.txt" +#line 318 "src/lexer-keywords.txt" {"i32.trunc_f64_u", TokenType::Convert, Opcode::I32TruncF64U}, {""}, -#line 168 "src/lexer-keywords.txt" +#line 169 "src/lexer-keywords.txt" {"f64x2.mul", TokenType::Binary, Opcode::F64X2Mul}, -#line 460 "src/lexer-keywords.txt" +#line 461 "src/lexer-keywords.txt" {"i64.trunc_f64_s", TokenType::Convert, Opcode::I64TruncF64S}, -#line 316 "src/lexer-keywords.txt" +#line 317 "src/lexer-keywords.txt" {"i32.trunc_f64_s", TokenType::Convert, Opcode::I32TruncF64S}, -#line 571 "src/lexer-keywords.txt" +#line 572 "src/lexer-keywords.txt" {"ref.is_null", TokenType::RefIsNull, Opcode::RefIsNull}, -#line 610 "src/lexer-keywords.txt" +#line 611 "src/lexer-keywords.txt" {"v128", Type::V128}, {""}, {""}, -#line 471 "src/lexer-keywords.txt" +#line 472 "src/lexer-keywords.txt" {"i64x2.mul", TokenType::Binary, Opcode::I64X2Mul}, -#line 435 "src/lexer-keywords.txt" +#line 436 "src/lexer-keywords.txt" {"i64.load32_u", TokenType::Load, Opcode::I64Load32U}, {""}, {""}, {""}, -#line 434 "src/lexer-keywords.txt" +#line 435 "src/lexer-keywords.txt" {"i64.load32_s", TokenType::Load, Opcode::I64Load32S}, {""}, {""}, {""}, {""}, -#line 558 "src/lexer-keywords.txt" +#line 559 "src/lexer-keywords.txt" {"nan:arithmetic", TokenType::NanArithmetic}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 540 "src/lexer-keywords.txt" +#line 541 "src/lexer-keywords.txt" {"invoke", TokenType::Invoke}, {""}, {""}, {""}, {""}, {""}, -#line 380 "src/lexer-keywords.txt" +#line 381 "src/lexer-keywords.txt" {"i64.atomic.load8_u", TokenType::AtomicLoad, Opcode::I64AtomicLoad8U}, -#line 250 "src/lexer-keywords.txt" +#line 251 "src/lexer-keywords.txt" {"i32.atomic.load8_u", TokenType::AtomicLoad, Opcode::I32AtomicLoad8U}, {""}, -#line 178 "src/lexer-keywords.txt" +#line 179 "src/lexer-keywords.txt" {"f64x2.replace_lane", TokenType::SimdLaneOp, Opcode::F64X2ReplaceLane}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 487 "src/lexer-keywords.txt" +#line 488 "src/lexer-keywords.txt" {"i64x2.replace_lane", TokenType::SimdLaneOp, Opcode::I64X2ReplaceLane}, {""}, -#line 567 "src/lexer-keywords.txt" +#line 568 "src/lexer-keywords.txt" {"quote", TokenType::Quote}, #line 32 "src/lexer-keywords.txt" {"block", TokenType::Block, Opcode::Block}, {""}, {""}, -#line 452 "src/lexer-keywords.txt" +#line 453 "src/lexer-keywords.txt" {"i64.shr_u", TokenType::Binary, Opcode::I64ShrU}, -#line 309 "src/lexer-keywords.txt" +#line 310 "src/lexer-keywords.txt" {"i32.shr_u", TokenType::Binary, Opcode::I32ShrU}, -#line 451 "src/lexer-keywords.txt" +#line 452 "src/lexer-keywords.txt" {"i64.shr_s", TokenType::Binary, Opcode::I64ShrS}, -#line 308 "src/lexer-keywords.txt" +#line 309 "src/lexer-keywords.txt" {"i32.shr_s", TokenType::Binary, Opcode::I32ShrS}, -#line 399 "src/lexer-keywords.txt" +#line 400 "src/lexer-keywords.txt" {"i64.atomic.rmw8.or_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw8OrU}, -#line 262 "src/lexer-keywords.txt" +#line 263 "src/lexer-keywords.txt" {"i32.atomic.rmw8.or_u", TokenType::AtomicRmw, Opcode::I32AtomicRmw8OrU}, -#line 242 "src/lexer-keywords.txt" +#line 243 "src/lexer-keywords.txt" {"i16x8", TokenType::I16X8}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 357 "src/lexer-keywords.txt" +#line 358 "src/lexer-keywords.txt" {"i32x4.shr_u", TokenType::Binary, Opcode::I32X4ShrU}, -#line 348 "src/lexer-keywords.txt" +#line 349 "src/lexer-keywords.txt" {"i32x4.min_u", TokenType::Binary, Opcode::I32X4MinU}, -#line 356 "src/lexer-keywords.txt" +#line 357 "src/lexer-keywords.txt" {"i32x4.shr_s", TokenType::Binary, Opcode::I32X4ShrS}, -#line 347 "src/lexer-keywords.txt" +#line 348 "src/lexer-keywords.txt" {"i32x4.min_s", TokenType::Binary, Opcode::I32X4MinS}, -#line 605 "src/lexer-keywords.txt" +#line 606 "src/lexer-keywords.txt" {"v128.or", TokenType::Binary, Opcode::V128Or}, {""}, -#line 563 "src/lexer-keywords.txt" +#line 564 "src/lexer-keywords.txt" {"output", TokenType::Output}, {""}, {""}, -#line 562 "src/lexer-keywords.txt" +#line 563 "src/lexer-keywords.txt" {"offset", TokenType::Offset}, {""}, -#line 597 "src/lexer-keywords.txt" +#line 598 "src/lexer-keywords.txt" {"type", TokenType::Type}, -#line 595 "src/lexer-keywords.txt" +#line 596 "src/lexer-keywords.txt" {"try", TokenType::Try, Opcode::Try}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 585 "src/lexer-keywords.txt" +#line 586 "src/lexer-keywords.txt" {"table.fill", TokenType::TableFill, Opcode::TableFill}, {""}, -#line 486 "src/lexer-keywords.txt" +#line 487 "src/lexer-keywords.txt" {"i64x2.relaxed_laneselect", TokenType::Ternary, Opcode::I64X2RelaxedLaneSelect}, -#line 480 "src/lexer-keywords.txt" +#line 481 "src/lexer-keywords.txt" {"i64x2.all_true", TokenType::Unary, Opcode::I64X2AllTrue}, #line 34 "src/lexer-keywords.txt" {"br_on_non_null", TokenType::BrOnNonNull, Opcode::BrOnNonNull}, {""}, {""}, {""}, {""}, -#line 207 "src/lexer-keywords.txt" +#line 208 "src/lexer-keywords.txt" {"i16x8.ge_u", TokenType::Compare, Opcode::I16X8GeU}, -#line 422 "src/lexer-keywords.txt" +#line 423 "src/lexer-keywords.txt" {"i64.extend32_s", TokenType::Unary, Opcode::I64Extend32S}, -#line 211 "src/lexer-keywords.txt" +#line 212 "src/lexer-keywords.txt" {"i16x8.le_u", TokenType::Compare, Opcode::I16X8LeU}, {""}, -#line 206 "src/lexer-keywords.txt" +#line 207 "src/lexer-keywords.txt" {"i16x8.ge_s", TokenType::Compare, Opcode::I16X8GeS}, #line 42 "src/lexer-keywords.txt" {"catch_all", TokenType::CatchAll, Opcode::CatchAll}, -#line 210 "src/lexer-keywords.txt" +#line 211 "src/lexer-keywords.txt" {"i16x8.le_s", TokenType::Compare, Opcode::I16X8LeS}, -#line 338 "src/lexer-keywords.txt" +#line 339 "src/lexer-keywords.txt" {"i32x4.relaxed_trunc_f32x4_u", TokenType::Unary, Opcode::I32X4RelaxedTruncF32X4U}, -#line 209 "src/lexer-keywords.txt" +#line 210 "src/lexer-keywords.txt" {"i16x8.gt_u", TokenType::Compare, Opcode::I16X8GtU}, {""}, -#line 215 "src/lexer-keywords.txt" +#line 216 "src/lexer-keywords.txt" {"i16x8.lt_u", TokenType::Compare, Opcode::I16X8LtU}, -#line 337 "src/lexer-keywords.txt" +#line 338 "src/lexer-keywords.txt" {"i32x4.relaxed_trunc_f32x4_s", TokenType::Unary, Opcode::I32X4RelaxedTruncF32X4S}, -#line 208 "src/lexer-keywords.txt" +#line 209 "src/lexer-keywords.txt" {"i16x8.gt_s", TokenType::Compare, Opcode::I16X8GtS}, {""}, -#line 214 "src/lexer-keywords.txt" +#line 215 "src/lexer-keywords.txt" {"i16x8.lt_s", TokenType::Compare, Opcode::I16X8LtS}, {""}, {""}, -#line 72 "src/lexer-keywords.txt" +#line 73 "src/lexer-keywords.txt" {"f32.demote_f64", TokenType::Convert, Opcode::F32DemoteF64}, {""}, -#line 166 "src/lexer-keywords.txt" +#line 167 "src/lexer-keywords.txt" {"f64x2.max", TokenType::Binary, Opcode::F64X2Max}, {""}, -#line 119 "src/lexer-keywords.txt" +#line 120 "src/lexer-keywords.txt" {"f32x4.splat", TokenType::Unary, Opcode::F32X4Splat}, -#line 609 "src/lexer-keywords.txt" +#line 610 "src/lexer-keywords.txt" {"v128.store", TokenType::Store, Opcode::V128Store}, -#line 539 "src/lexer-keywords.txt" +#line 540 "src/lexer-keywords.txt" {"input", TokenType::Input}, {""}, {""}, -#line 576 "src/lexer-keywords.txt" +#line 577 "src/lexer-keywords.txt" {"return_call_indirect", TokenType::ReturnCallIndirect, Opcode::ReturnCallIndirect}, {""}, -#line 358 "src/lexer-keywords.txt" +#line 359 "src/lexer-keywords.txt" {"i32x4.splat", TokenType::Unary, Opcode::I32X4Splat}, -#line 510 "src/lexer-keywords.txt" +#line 511 "src/lexer-keywords.txt" {"i8x16.ge_u", TokenType::Compare, Opcode::I8X16GeU}, #line 33 "src/lexer-keywords.txt" {"br_if", TokenType::BrIf, Opcode::BrIf}, -#line 514 "src/lexer-keywords.txt" +#line 515 "src/lexer-keywords.txt" {"i8x16.le_u", TokenType::Compare, Opcode::I8X16LeU}, {""}, -#line 509 "src/lexer-keywords.txt" +#line 510 "src/lexer-keywords.txt" {"i8x16.ge_s", TokenType::Compare, Opcode::I8X16GeS}, {""}, -#line 513 "src/lexer-keywords.txt" +#line 514 "src/lexer-keywords.txt" {"i8x16.le_s", TokenType::Compare, Opcode::I8X16LeS}, {""}, -#line 512 "src/lexer-keywords.txt" +#line 513 "src/lexer-keywords.txt" {"i8x16.gt_u", TokenType::Compare, Opcode::I8X16GtU}, -#line 538 "src/lexer-keywords.txt" +#line 539 "src/lexer-keywords.txt" {"import", TokenType::Import}, -#line 516 "src/lexer-keywords.txt" +#line 517 "src/lexer-keywords.txt" {"i8x16.lt_u", TokenType::Compare, Opcode::I8X16LtU}, {""}, -#line 511 "src/lexer-keywords.txt" +#line 512 "src/lexer-keywords.txt" {"i8x16.gt_s", TokenType::Compare, Opcode::I8X16GtS}, {""}, -#line 515 "src/lexer-keywords.txt" +#line 516 "src/lexer-keywords.txt" {"i8x16.lt_s", TokenType::Compare, Opcode::I8X16LtS}, {""}, {""}, {""}, {""}, {""}, -#line 603 "src/lexer-keywords.txt" +#line 604 "src/lexer-keywords.txt" {"v128.load", TokenType::Load, Opcode::V128Load}, -#line 160 "src/lexer-keywords.txt" +#line 161 "src/lexer-keywords.txt" {"f64x2.extract_lane", TokenType::SimdLaneOp, Opcode::F64X2ExtractLane}, {""}, {""}, -#line 223 "src/lexer-keywords.txt" +#line 224 "src/lexer-keywords.txt" {"i16x8.neg", TokenType::Unary, Opcode::I16X8Neg}, {""}, -#line 225 "src/lexer-keywords.txt" +#line 226 "src/lexer-keywords.txt" {"i16x8.ne", TokenType::Compare, Opcode::I16X8Ne}, -#line 425 "src/lexer-keywords.txt" +#line 426 "src/lexer-keywords.txt" {"i64.extend_i32_u", TokenType::Convert, Opcode::I64ExtendI32U}, -#line 468 "src/lexer-keywords.txt" +#line 469 "src/lexer-keywords.txt" {"i64x2.extract_lane", TokenType::SimdLaneOp, Opcode::I64X2ExtractLane}, -#line 424 "src/lexer-keywords.txt" +#line 425 "src/lexer-keywords.txt" {"i64.extend_i32_s", TokenType::Convert, Opcode::I64ExtendI32S}, {""}, {""}, -#line 150 "src/lexer-keywords.txt" +#line 151 "src/lexer-keywords.txt" {"f64.sqrt", TokenType::Unary, Opcode::F64Sqrt}, -#line 88 "src/lexer-keywords.txt" +#line 89 "src/lexer-keywords.txt" {"f32.sqrt", TokenType::Unary, Opcode::F32Sqrt}, -#line 213 "src/lexer-keywords.txt" +#line 214 "src/lexer-keywords.txt" {"v128.load8x8_u", TokenType::Load, Opcode::V128Load8X8U}, {""}, -#line 212 "src/lexer-keywords.txt" +#line 213 "src/lexer-keywords.txt" {"v128.load8x8_s", TokenType::Load, Opcode::V128Load8X8S}, -#line 616 "src/lexer-keywords.txt" +#line 617 "src/lexer-keywords.txt" {"v128.load8_lane", TokenType::SimdLoadLane, Opcode::V128Load8Lane}, -#line 408 "src/lexer-keywords.txt" +#line 409 "src/lexer-keywords.txt" {"i64.atomic.rmw.xchg", TokenType::AtomicRmw, Opcode::I64AtomicRmwXchg}, -#line 271 "src/lexer-keywords.txt" +#line 272 "src/lexer-keywords.txt" {"i32.atomic.rmw.xchg", TokenType::AtomicRmw, Opcode::I32AtomicRmwXchg}, {""}, {""}, {""}, -#line 186 "src/lexer-keywords.txt" +#line 187 "src/lexer-keywords.txt" {"f64x2", TokenType::F64X2}, {""}, {""}, -#line 615 "src/lexer-keywords.txt" +#line 616 "src/lexer-keywords.txt" {"v128.load8_splat", TokenType::Load, Opcode::V128Load8Splat}, {""}, -#line 604 "src/lexer-keywords.txt" +#line 605 "src/lexer-keywords.txt" {"v128.not", TokenType::Unary, Opcode::V128Not}, -#line 623 "src/lexer-keywords.txt" +#line 624 "src/lexer-keywords.txt" {"v128.store64_lane", TokenType::SimdStoreLane, Opcode::V128Store64Lane}, -#line 497 "src/lexer-keywords.txt" +#line 498 "src/lexer-keywords.txt" {"i64x2", TokenType::I64X2}, -#line 120 "src/lexer-keywords.txt" +#line 121 "src/lexer-keywords.txt" {"f32x4.sqrt", TokenType::Unary, Opcode::F32X4Sqrt}, {""}, -#line 523 "src/lexer-keywords.txt" +#line 524 "src/lexer-keywords.txt" {"i8x16.neg", TokenType::Unary, Opcode::I8X16Neg}, {""}, -#line 525 "src/lexer-keywords.txt" +#line 526 "src/lexer-keywords.txt" {"i8x16.ne", TokenType::Compare, Opcode::I8X16Ne}, #line 46 "src/lexer-keywords.txt" {"data.drop", TokenType::DataDrop, Opcode::DataDrop}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 453 "src/lexer-keywords.txt" + {""}, {""}, +#line 49 "src/lexer-keywords.txt" + {"definition", TokenType::Definition}, + {""}, {""}, {""}, +#line 454 "src/lexer-keywords.txt" {"i64.store16", TokenType::Store, Opcode::I64Store16}, -#line 310 "src/lexer-keywords.txt" +#line 311 "src/lexer-keywords.txt" {"i32.store16", TokenType::Store, Opcode::I32Store16}, {""}, -#line 189 "src/lexer-keywords.txt" +#line 190 "src/lexer-keywords.txt" {"funcref", Type::FuncRef}, -#line 198 "src/lexer-keywords.txt" +#line 199 "src/lexer-keywords.txt" {"i16x8.add", TokenType::Binary, Opcode::I16X8Add}, {""}, {""}, {""}, -#line 602 "src/lexer-keywords.txt" +#line 603 "src/lexer-keywords.txt" {"v128.const", TokenType::Const, Opcode::V128Const}, {""}, -#line 611 "src/lexer-keywords.txt" +#line 612 "src/lexer-keywords.txt" {"v128.xor", TokenType::Binary, Opcode::V128Xor}, {""}, {""}, {""}, {""}, {""}, -#line 176 "src/lexer-keywords.txt" +#line 177 "src/lexer-keywords.txt" {"f64x2.relaxed_min", TokenType::Binary, Opcode::F64X2RelaxedMin}, {""}, -#line 177 "src/lexer-keywords.txt" +#line 178 "src/lexer-keywords.txt" {"f64x2.relaxed_nmadd", TokenType::Ternary, Opcode::F64X2RelaxedNmadd}, {""}, -#line 220 "src/lexer-keywords.txt" +#line 221 "src/lexer-keywords.txt" {"i16x8.mul", TokenType::Binary, Opcode::I16X8Mul}, {""}, -#line 378 "src/lexer-keywords.txt" +#line 379 "src/lexer-keywords.txt" {"i64.atomic.load16_u", TokenType::AtomicLoad, Opcode::I64AtomicLoad16U}, -#line 249 "src/lexer-keywords.txt" +#line 250 "src/lexer-keywords.txt" {"i32.atomic.load16_u", TokenType::AtomicLoad, Opcode::I32AtomicLoad16U}, {""}, {""}, {""}, #line 41 "src/lexer-keywords.txt" {"catch", TokenType::Catch, Opcode::Catch}, {""}, {""}, -#line 488 "src/lexer-keywords.txt" +#line 489 "src/lexer-keywords.txt" {"i64x2.shl", TokenType::Binary, Opcode::I64X2Shl}, {""}, {""}, -#line 502 "src/lexer-keywords.txt" +#line 503 "src/lexer-keywords.txt" {"i8x16.add", TokenType::Binary, Opcode::I8X16Add}, {""}, -#line 600 "src/lexer-keywords.txt" +#line 601 "src/lexer-keywords.txt" {"v128.and", TokenType::Binary, Opcode::V128And}, {""}, {""}, {""}, {""}, -#line 536 "src/lexer-keywords.txt" +#line 537 "src/lexer-keywords.txt" {"i8x16", TokenType::I8X16}, {""}, {""}, -#line 54 "src/lexer-keywords.txt" +#line 55 "src/lexer-keywords.txt" {"elem", TokenType::Elem}, {""}, -#line 59 "src/lexer-keywords.txt" +#line 60 "src/lexer-keywords.txt" {"externref", Type::ExternRef}, {""}, {""}, -#line 599 "src/lexer-keywords.txt" +#line 600 "src/lexer-keywords.txt" {"v128.andnot", TokenType::Binary, Opcode::V128Andnot}, {""}, {""}, -#line 386 "src/lexer-keywords.txt" +#line 387 "src/lexer-keywords.txt" {"i64.atomic.rmw16.sub_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw16SubU}, -#line 256 "src/lexer-keywords.txt" +#line 257 "src/lexer-keywords.txt" {"i32.atomic.rmw16.sub_u", TokenType::AtomicRmw, Opcode::I32AtomicRmw16SubU}, {""}, -#line 228 "src/lexer-keywords.txt" +#line 229 "src/lexer-keywords.txt" {"i16x8.replace_lane", TokenType::SimdLaneOp, Opcode::I16X8ReplaceLane}, {""}, {""}, -#line 161 "src/lexer-keywords.txt" +#line 162 "src/lexer-keywords.txt" {"f64x2.floor", TokenType::Unary, Opcode::F64X2Floor}, {""}, {""}, -#line 470 "src/lexer-keywords.txt" +#line 471 "src/lexer-keywords.txt" {"v128.load32x2_u", TokenType::Load, Opcode::V128Load32X2U}, -#line 174 "src/lexer-keywords.txt" +#line 175 "src/lexer-keywords.txt" {"f64x2.relaxed_madd", TokenType::Ternary, Opcode::F64X2RelaxedMadd}, {""}, {""}, -#line 469 "src/lexer-keywords.txt" +#line 470 "src/lexer-keywords.txt" {"v128.load32x2_s", TokenType::Load, Opcode::V128Load32X2S}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 38 "src/lexer-keywords.txt" {"call_indirect", TokenType::CallIndirect, Opcode::CallIndirect}, {""}, -#line 528 "src/lexer-keywords.txt" +#line 529 "src/lexer-keywords.txt" {"i8x16.replace_lane", TokenType::SimdLaneOp, Opcode::I8X16ReplaceLane}, {""}, {""}, {""}, {""}, {""}, -#line 167 "src/lexer-keywords.txt" +#line 168 "src/lexer-keywords.txt" {"f64x2.min", TokenType::Binary, Opcode::F64X2Min}, -#line 385 "src/lexer-keywords.txt" +#line 386 "src/lexer-keywords.txt" {"i64.atomic.rmw16.or_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw16OrU}, -#line 255 "src/lexer-keywords.txt" +#line 256 "src/lexer-keywords.txt" {"i32.atomic.rmw16.or_u", TokenType::AtomicRmw, Opcode::I32AtomicRmw16OrU}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 226 "src/lexer-keywords.txt" +#line 227 "src/lexer-keywords.txt" {"i16x8.relaxed_laneselect", TokenType::Ternary, Opcode::I16X8RelaxedLaneSelect}, -#line 199 "src/lexer-keywords.txt" +#line 200 "src/lexer-keywords.txt" {"i16x8.all_true", TokenType::Unary, Opcode::I16X8AllTrue}, {""}, {""}, #line 21 "src/lexer-keywords.txt" {"after", TokenType::After}, -#line 554 "src/lexer-keywords.txt" +#line 555 "src/lexer-keywords.txt" {"memory.size", TokenType::MemorySize, Opcode::MemorySize}, -#line 175 "src/lexer-keywords.txt" +#line 176 "src/lexer-keywords.txt" {"f64x2.relaxed_max", TokenType::Binary, Opcode::F64X2RelaxedMax}, -#line 382 "src/lexer-keywords.txt" +#line 383 "src/lexer-keywords.txt" {"i64.atomic.rmw16.add_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw16AddU}, -#line 252 "src/lexer-keywords.txt" +#line 253 "src/lexer-keywords.txt" {"i32.atomic.rmw16.add_u", TokenType::AtomicRmw, Opcode::I32AtomicRmw16AddU}, -#line 401 "src/lexer-keywords.txt" +#line 402 "src/lexer-keywords.txt" {"i64.atomic.rmw8.xchg_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw8XchgU}, -#line 264 "src/lexer-keywords.txt" +#line 265 "src/lexer-keywords.txt" {"i32.atomic.rmw8.xchg_u", TokenType::AtomicRmw, Opcode::I32AtomicRmw8XchgU}, -#line 234 "src/lexer-keywords.txt" +#line 235 "src/lexer-keywords.txt" {"i16x8.sub_sat_u", TokenType::Binary, Opcode::I16X8SubSatU}, {""}, {""}, {""}, -#line 233 "src/lexer-keywords.txt" +#line 234 "src/lexer-keywords.txt" {"i16x8.sub_sat_s", TokenType::Binary, Opcode::I16X8SubSatS}, {""}, {""}, {""}, -#line 383 "src/lexer-keywords.txt" +#line 384 "src/lexer-keywords.txt" {"i64.atomic.rmw16.and_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw16AndU}, -#line 253 "src/lexer-keywords.txt" +#line 254 "src/lexer-keywords.txt" {"i32.atomic.rmw16.and_u", TokenType::AtomicRmw, Opcode::I32AtomicRmw16AndU}, -#line 349 "src/lexer-keywords.txt" +#line 350 "src/lexer-keywords.txt" {"i32x4.dot_i16x8_s", TokenType::Binary, Opcode::I32X4DotI16X8S}, {""}, -#line 391 "src/lexer-keywords.txt" +#line 392 "src/lexer-keywords.txt" {"i64.atomic.rmw32.cmpxchg_u", TokenType::AtomicRmwCmpxchg, Opcode::I64AtomicRmw32CmpxchgU}, {""}, {""}, {""}, {""}, {""}, -#line 527 "src/lexer-keywords.txt" +#line 528 "src/lexer-keywords.txt" {"i8x16.relaxed_laneselect", TokenType::Ternary, Opcode::I8X16RelaxedLaneSelect}, -#line 503 "src/lexer-keywords.txt" +#line 504 "src/lexer-keywords.txt" {"i8x16.all_true", TokenType::Unary, Opcode::I8X16AllTrue}, {""}, {""}, {""}, {""}, -#line 582 "src/lexer-keywords.txt" +#line 583 "src/lexer-keywords.txt" {"start", TokenType::Start}, {""}, -#line 125 "src/lexer-keywords.txt" +#line 126 "src/lexer-keywords.txt" {"f64.abs", TokenType::Unary, Opcode::F64Abs}, -#line 63 "src/lexer-keywords.txt" +#line 64 "src/lexer-keywords.txt" {"f32.abs", TokenType::Unary, Opcode::F32Abs}, {""}, -#line 534 "src/lexer-keywords.txt" +#line 535 "src/lexer-keywords.txt" {"i8x16.sub_sat_u", TokenType::Binary, Opcode::I8X16SubSatU}, {""}, {""}, {""}, -#line 533 "src/lexer-keywords.txt" +#line 534 "src/lexer-keywords.txt" {"i8x16.sub_sat_s", TokenType::Binary, Opcode::I8X16SubSatS}, -#line 621 "src/lexer-keywords.txt" +#line 622 "src/lexer-keywords.txt" {"v128.store16_lane", TokenType::SimdStoreLane, Opcode::V128Store16Lane}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 121 "src/lexer-keywords.txt" +#line 122 "src/lexer-keywords.txt" {"f32x4.sub", TokenType::Binary, Opcode::F32X4Sub}, {""}, {""}, -#line 93 "src/lexer-keywords.txt" +#line 94 "src/lexer-keywords.txt" {"f32x4.abs", TokenType::Unary, Opcode::F32X4Abs}, {""}, -#line 613 "src/lexer-keywords.txt" +#line 614 "src/lexer-keywords.txt" {"v128.load32_splat", TokenType::Load, Opcode::V128Load32Splat}, -#line 565 "src/lexer-keywords.txt" +#line 566 "src/lexer-keywords.txt" {"param", TokenType::Param}, -#line 359 "src/lexer-keywords.txt" +#line 360 "src/lexer-keywords.txt" {"i32x4.sub", TokenType::Binary, Opcode::I32X4Sub}, -#line 98 "src/lexer-keywords.txt" +#line 99 "src/lexer-keywords.txt" {"f32x4.div", TokenType::Binary, Opcode::F32X4Div}, -#line 607 "src/lexer-keywords.txt" +#line 608 "src/lexer-keywords.txt" {"v128.load32_zero", TokenType::Load, Opcode::V128Load32Zero}, -#line 324 "src/lexer-keywords.txt" +#line 325 "src/lexer-keywords.txt" {"i32x4.abs", TokenType::Unary, Opcode::I32X4Abs}, #line 36 "src/lexer-keywords.txt" {"br_table", TokenType::BrTable, Opcode::BrTable}, {""}, {""}, {""}, -#line 197 "src/lexer-keywords.txt" +#line 198 "src/lexer-keywords.txt" {"i16x8.add_sat_u", TokenType::Binary, Opcode::I16X8AddSatU}, {""}, {""}, {""}, -#line 196 "src/lexer-keywords.txt" +#line 197 "src/lexer-keywords.txt" {"i16x8.add_sat_s", TokenType::Binary, Opcode::I16X8AddSatS}, {""}, -#line 113 "src/lexer-keywords.txt" +#line 114 "src/lexer-keywords.txt" {"f32x4.pmin", TokenType::Binary, Opcode::F32X4PMin}, #line 31 "src/lexer-keywords.txt" {"binary", TokenType::Bin}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 465 "src/lexer-keywords.txt" +#line 466 "src/lexer-keywords.txt" {"i64.trunc_sat_f64_u", TokenType::Convert, Opcode::I64TruncSatF64U}, -#line 321 "src/lexer-keywords.txt" +#line 322 "src/lexer-keywords.txt" {"i32.trunc_sat_f64_u", TokenType::Convert, Opcode::I32TruncSatF64U}, -#line 387 "src/lexer-keywords.txt" +#line 388 "src/lexer-keywords.txt" {"i64.atomic.rmw16.xchg_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw16XchgU}, -#line 257 "src/lexer-keywords.txt" +#line 258 "src/lexer-keywords.txt" {"i32.atomic.rmw16.xchg_u", TokenType::AtomicRmw, Opcode::I32AtomicRmw16XchgU}, -#line 464 "src/lexer-keywords.txt" +#line 465 "src/lexer-keywords.txt" {"i64.trunc_sat_f64_s", TokenType::Convert, Opcode::I64TruncSatF64S}, -#line 320 "src/lexer-keywords.txt" +#line 321 "src/lexer-keywords.txt" {"i32.trunc_sat_f64_s", TokenType::Convert, Opcode::I32TruncSatF64S}, {""}, {""}, -#line 618 "src/lexer-keywords.txt" +#line 619 "src/lexer-keywords.txt" {"v128.load32_lane", TokenType::SimdLoadLane, Opcode::V128Load32Lane}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 501 "src/lexer-keywords.txt" +#line 502 "src/lexer-keywords.txt" {"i8x16.add_sat_u", TokenType::Binary, Opcode::I8X16AddSatU}, -#line 379 "src/lexer-keywords.txt" +#line 380 "src/lexer-keywords.txt" {"i64.atomic.load32_u", TokenType::AtomicLoad, Opcode::I64AtomicLoad32U}, {""}, -#line 620 "src/lexer-keywords.txt" +#line 621 "src/lexer-keywords.txt" {"v128.store8_lane", TokenType::SimdStoreLane, Opcode::V128Store8Lane}, -#line 500 "src/lexer-keywords.txt" +#line 501 "src/lexer-keywords.txt" {"i8x16.add_sat_s", TokenType::Binary, Opcode::I8X16AddSatS}, {""}, -#line 388 "src/lexer-keywords.txt" +#line 389 "src/lexer-keywords.txt" {"i64.atomic.rmw16.xor_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw16XorU}, -#line 258 "src/lexer-keywords.txt" +#line 259 "src/lexer-keywords.txt" {"i32.atomic.rmw16.xor_u", TokenType::AtomicRmw, Opcode::I32AtomicRmw16XorU}, {""}, -#line 194 "src/lexer-keywords.txt" +#line 195 "src/lexer-keywords.txt" {"global", TokenType::Global}, -#line 217 "src/lexer-keywords.txt" +#line 218 "src/lexer-keywords.txt" {"i16x8.max_u", TokenType::Binary, Opcode::I16X8MaxU}, {""}, -#line 216 "src/lexer-keywords.txt" +#line 217 "src/lexer-keywords.txt" {"i16x8.max_s", TokenType::Binary, Opcode::I16X8MaxS}, {""}, {""}, {""}, {""}, -#line 490 "src/lexer-keywords.txt" +#line 491 "src/lexer-keywords.txt" {"i64x2.shr_u", TokenType::Binary, Opcode::I64X2ShrU}, {""}, -#line 489 "src/lexer-keywords.txt" +#line 490 "src/lexer-keywords.txt" {"i64x2.shr_s", TokenType::Binary, Opcode::I64X2ShrS}, {""}, -#line 551 "src/lexer-keywords.txt" +#line 552 "src/lexer-keywords.txt" {"memory.fill", TokenType::MemoryFill, Opcode::MemoryFill}, {""}, {""}, {""}, {""}, -#line 328 "src/lexer-keywords.txt" +#line 329 "src/lexer-keywords.txt" {"i32x4.relaxed_dot_i8x16_i7x16_add_s", TokenType::Ternary, Opcode::I32X4DotI8X16I7X16AddS}, #line 43 "src/lexer-keywords.txt" {"catch_ref", TokenType::CatchRef}, {""}, {""}, {""}, -#line 584 "src/lexer-keywords.txt" +#line 585 "src/lexer-keywords.txt" {"table.copy", TokenType::TableCopy, Opcode::TableCopy}, {""}, -#line 229 "src/lexer-keywords.txt" +#line 230 "src/lexer-keywords.txt" {"i16x8.shl", TokenType::Binary, Opcode::I16X8Shl}, {""}, {""}, {""}, {""}, {""}, -#line 518 "src/lexer-keywords.txt" +#line 519 "src/lexer-keywords.txt" {"i8x16.max_u", TokenType::Binary, Opcode::I8X16MaxU}, {""}, -#line 517 "src/lexer-keywords.txt" +#line 518 "src/lexer-keywords.txt" {"i8x16.max_s", TokenType::Binary, Opcode::I8X16MaxS}, {""}, {""}, -#line 581 "src/lexer-keywords.txt" +#line 582 "src/lexer-keywords.txt" {"shared", TokenType::Shared}, -#line 132 "src/lexer-keywords.txt" +#line 133 "src/lexer-keywords.txt" {"f64.convert_i64_u", TokenType::Convert, Opcode::F64ConvertI64U}, -#line 70 "src/lexer-keywords.txt" +#line 71 "src/lexer-keywords.txt" {"f32.convert_i64_u", TokenType::Convert, Opcode::F32ConvertI64U}, {""}, {""}, -#line 131 "src/lexer-keywords.txt" +#line 132 "src/lexer-keywords.txt" {"f64.convert_i64_s", TokenType::Convert, Opcode::F64ConvertI64S}, -#line 69 "src/lexer-keywords.txt" +#line 70 "src/lexer-keywords.txt" {"f32.convert_i64_s", TokenType::Convert, Opcode::F32ConvertI64S}, {""}, {""}, {""}, {""}, {""}, -#line 62 "src/lexer-keywords.txt" +#line 63 "src/lexer-keywords.txt" {"export", TokenType::Export}, {""}, {""}, {""}, {""}, {""}, -#line 529 "src/lexer-keywords.txt" +#line 530 "src/lexer-keywords.txt" {"i8x16.shl", TokenType::Binary, Opcode::I8X16Shl}, -#line 555 "src/lexer-keywords.txt" +#line 556 "src/lexer-keywords.txt" {"memory", TokenType::Memory}, -#line 598 "src/lexer-keywords.txt" +#line 599 "src/lexer-keywords.txt" {"unreachable", TokenType::Unreachable, Opcode::Unreachable}, {""}, -#line 179 "src/lexer-keywords.txt" +#line 180 "src/lexer-keywords.txt" {"f64x2.splat", TokenType::Unary, Opcode::F64X2Splat}, -#line 112 "src/lexer-keywords.txt" +#line 113 "src/lexer-keywords.txt" {"f32x4.pmax", TokenType::Binary, Opcode::F32X4PMax}, -#line 374 "src/lexer-keywords.txt" +#line 375 "src/lexer-keywords.txt" {"i32x4.trunc_sat_f64x2_u_zero", TokenType::Unary, Opcode::I32X4TruncSatF64X2UZero}, {""}, -#line 373 "src/lexer-keywords.txt" +#line 374 "src/lexer-keywords.txt" {"i32x4.trunc_sat_f64x2_s_zero", TokenType::Unary, Opcode::I32X4TruncSatF64X2SZero}, {""}, -#line 192 "src/lexer-keywords.txt" +#line 193 "src/lexer-keywords.txt" {"global.get", TokenType::GlobalGet, Opcode::GlobalGet}, -#line 491 "src/lexer-keywords.txt" +#line 492 "src/lexer-keywords.txt" {"i64x2.splat", TokenType::Unary, Opcode::I64X2Splat}, -#line 193 "src/lexer-keywords.txt" +#line 194 "src/lexer-keywords.txt" {"global.set", TokenType::GlobalSet, Opcode::GlobalSet}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 411 "src/lexer-keywords.txt" +#line 412 "src/lexer-keywords.txt" {"i64.atomic.store32", TokenType::AtomicStore, Opcode::I64AtomicStore32}, {""}, {""}, -#line 61 "src/lexer-keywords.txt" +#line 62 "src/lexer-keywords.txt" {"exnref", Type::ExnRef}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 614 "src/lexer-keywords.txt" +#line 615 "src/lexer-keywords.txt" {"v128.load64_splat", TokenType::Load, Opcode::V128Load64Splat}, -#line 622 "src/lexer-keywords.txt" +#line 623 "src/lexer-keywords.txt" {"v128.store32_lane", TokenType::SimdStoreLane, Opcode::V128Store32Lane}, -#line 180 "src/lexer-keywords.txt" +#line 181 "src/lexer-keywords.txt" {"f64x2.sqrt", TokenType::Unary, Opcode::F64X2Sqrt}, -#line 593 "src/lexer-keywords.txt" +#line 594 "src/lexer-keywords.txt" {"throw", TokenType::Throw, Opcode::Throw}, -#line 608 "src/lexer-keywords.txt" +#line 609 "src/lexer-keywords.txt" {"v128.load64_zero", TokenType::Load, Opcode::V128Load64Zero}, {""}, {""}, {""}, {""}, #line 39 "src/lexer-keywords.txt" {"call_ref", TokenType::CallRef, Opcode::CallRef}, {""}, {""}, -#line 553 "src/lexer-keywords.txt" +#line 554 "src/lexer-keywords.txt" {"memory.init", TokenType::MemoryInit, Opcode::MemoryInit}, -#line 418 "src/lexer-keywords.txt" +#line 419 "src/lexer-keywords.txt" {"i64.div_u", TokenType::Binary, Opcode::I64DivU}, -#line 280 "src/lexer-keywords.txt" +#line 281 "src/lexer-keywords.txt" {"i32.div_u", TokenType::Binary, Opcode::I32DivU}, -#line 417 "src/lexer-keywords.txt" +#line 418 "src/lexer-keywords.txt" {"i64.div_s", TokenType::Binary, Opcode::I64DivS}, -#line 279 "src/lexer-keywords.txt" +#line 280 "src/lexer-keywords.txt" {"i32.div_s", TokenType::Binary, Opcode::I32DivS}, {""}, {""}, {""}, {""}, -#line 420 "src/lexer-keywords.txt" +#line 421 "src/lexer-keywords.txt" {"i64.eqz", TokenType::Convert, Opcode::I64Eqz}, -#line 282 "src/lexer-keywords.txt" +#line 283 "src/lexer-keywords.txt" {"i32.eqz", TokenType::Convert, Opcode::I32Eqz}, {""}, {""}, -#line 594 "src/lexer-keywords.txt" +#line 595 "src/lexer-keywords.txt" {"throw_ref", TokenType::ThrowRef, Opcode::ThrowRef}, {""}, -#line 205 "src/lexer-keywords.txt" +#line 206 "src/lexer-keywords.txt" {"i16x8.extract_lane_u", TokenType::SimdLaneOp, Opcode::I16X8ExtractLaneU}, {""}, -#line 204 "src/lexer-keywords.txt" +#line 205 "src/lexer-keywords.txt" {"i16x8.extract_lane_s", TokenType::SimdLaneOp, Opcode::I16X8ExtractLaneS}, {""}, {""}, -#line 619 "src/lexer-keywords.txt" +#line 620 "src/lexer-keywords.txt" {"v128.load64_lane", TokenType::SimdLoadLane, Opcode::V128Load64Lane}, -#line 398 "src/lexer-keywords.txt" +#line 399 "src/lexer-keywords.txt" {"i64.atomic.rmw8.cmpxchg_u", TokenType::AtomicRmwCmpxchg, Opcode::I64AtomicRmw8CmpxchgU}, -#line 261 "src/lexer-keywords.txt" +#line 262 "src/lexer-keywords.txt" {"i32.atomic.rmw8.cmpxchg_u", TokenType::AtomicRmwCmpxchg, Opcode::I32AtomicRmw8CmpxchgU}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 410 "src/lexer-keywords.txt" +#line 411 "src/lexer-keywords.txt" {"i64.atomic.store16", TokenType::AtomicStore, Opcode::I64AtomicStore16}, -#line 273 "src/lexer-keywords.txt" +#line 274 "src/lexer-keywords.txt" {"i32.atomic.store16", TokenType::AtomicStore, Opcode::I32AtomicStore16}, {""}, {""}, -#line 596 "src/lexer-keywords.txt" +#line 597 "src/lexer-keywords.txt" {"try_table", TokenType::TryTable, Opcode::TryTable}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 606 "src/lexer-keywords.txt" +#line 607 "src/lexer-keywords.txt" {"v128.any_true", TokenType::Unary, Opcode::V128AnyTrue}, {""}, -#line 508 "src/lexer-keywords.txt" +#line 509 "src/lexer-keywords.txt" {"i8x16.extract_lane_u", TokenType::SimdLaneOp, Opcode::I8X16ExtractLaneU}, -#line 368 "src/lexer-keywords.txt" +#line 369 "src/lexer-keywords.txt" {"i32x4.trunc_sat_f32x4_u", TokenType::Unary, Opcode::I32X4TruncSatF32X4U}, -#line 507 "src/lexer-keywords.txt" +#line 508 "src/lexer-keywords.txt" {"i8x16.extract_lane_s", TokenType::SimdLaneOp, Opcode::I8X16ExtractLaneS}, {""}, {""}, -#line 367 "src/lexer-keywords.txt" +#line 368 "src/lexer-keywords.txt" {"i32x4.trunc_sat_f32x4_s", TokenType::Unary, Opcode::I32X4TruncSatF32X4S}, {""}, {""}, {""}, {""}, -#line 51 "src/lexer-keywords.txt" +#line 52 "src/lexer-keywords.txt" {"drop", TokenType::Drop, Opcode::Drop}, {""}, {""}, {""}, -#line 587 "src/lexer-keywords.txt" +#line 588 "src/lexer-keywords.txt" {"table.grow", TokenType::TableGrow, Opcode::TableGrow}, {""}, {""}, -#line 575 "src/lexer-keywords.txt" +#line 576 "src/lexer-keywords.txt" {"rethrow", TokenType::Rethrow, Opcode::Rethrow}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 231 "src/lexer-keywords.txt" +#line 232 "src/lexer-keywords.txt" {"i16x8.shr_u", TokenType::Binary, Opcode::I16X8ShrU}, -#line 219 "src/lexer-keywords.txt" +#line 220 "src/lexer-keywords.txt" {"i16x8.min_u", TokenType::Binary, Opcode::I16X8MinU}, -#line 230 "src/lexer-keywords.txt" +#line 231 "src/lexer-keywords.txt" {"i16x8.shr_s", TokenType::Binary, Opcode::I16X8ShrS}, -#line 218 "src/lexer-keywords.txt" +#line 219 "src/lexer-keywords.txt" {"i16x8.min_s", TokenType::Binary, Opcode::I16X8MinS}, {""}, {""}, {""}, {""}, {""}, -#line 405 "src/lexer-keywords.txt" +#line 406 "src/lexer-keywords.txt" {"i64.atomic.rmw.cmpxchg", TokenType::AtomicRmwCmpxchg, Opcode::I64AtomicRmwCmpxchg}, -#line 268 "src/lexer-keywords.txt" +#line 269 "src/lexer-keywords.txt" {"i32.atomic.rmw.cmpxchg", TokenType::AtomicRmwCmpxchg, Opcode::I32AtomicRmwCmpxchg}, {""}, -#line 123 "src/lexer-keywords.txt" +#line 124 "src/lexer-keywords.txt" {"f32x4.demote_f64x2_zero", TokenType::Unary, Opcode::F32X4DemoteF64X2Zero}, {""}, {""}, #line 44 "src/lexer-keywords.txt" {"catch_all_ref", TokenType::CatchAllRef}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 577 "src/lexer-keywords.txt" +#line 578 "src/lexer-keywords.txt" {"return_call_ref", TokenType::ReturnCallRef, Opcode::ReturnCallRef}, {""}, {""}, -#line 531 "src/lexer-keywords.txt" +#line 532 "src/lexer-keywords.txt" {"i8x16.shr_u", TokenType::Binary, Opcode::I8X16ShrU}, -#line 520 "src/lexer-keywords.txt" +#line 521 "src/lexer-keywords.txt" {"i8x16.min_u", TokenType::Binary, Opcode::I8X16MinU}, -#line 530 "src/lexer-keywords.txt" +#line 531 "src/lexer-keywords.txt" {"i8x16.shr_s", TokenType::Binary, Opcode::I8X16ShrS}, -#line 519 "src/lexer-keywords.txt" +#line 520 "src/lexer-keywords.txt" {"i8x16.min_s", TokenType::Binary, Opcode::I8X16MinS}, {""}, {""}, {""}, #line 26 "src/lexer-keywords.txt" {"assert_return", TokenType::AssertReturn}, -#line 552 "src/lexer-keywords.txt" +#line 553 "src/lexer-keywords.txt" {"memory.grow", TokenType::MemoryGrow, Opcode::MemoryGrow}, {""}, {""}, {""}, {""}, -#line 400 "src/lexer-keywords.txt" +#line 401 "src/lexer-keywords.txt" {"i64.atomic.rmw8.sub_u", TokenType::AtomicRmw, Opcode::I64AtomicRmw8SubU}, -#line 263 "src/lexer-keywords.txt" +#line 264 "src/lexer-keywords.txt" {"i32.atomic.rmw8.sub_u", TokenType::AtomicRmw, Opcode::I32AtomicRmw8SubU}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 200 "src/lexer-keywords.txt" +#line 201 "src/lexer-keywords.txt" {"i16x8.avgr_u", TokenType::Binary, Opcode::I16X8AvgrU}, -#line 232 "src/lexer-keywords.txt" +#line 233 "src/lexer-keywords.txt" {"i16x8.splat", TokenType::Unary, Opcode::I16X8Splat}, {""}, {""}, {""}, -#line 342 "src/lexer-keywords.txt" +#line 343 "src/lexer-keywords.txt" {"v128.load16x4_u", TokenType::Load, Opcode::V128Load16X4U}, {""}, -#line 560 "src/lexer-keywords.txt" +#line 561 "src/lexer-keywords.txt" {"nop", TokenType::Nop, Opcode::Nop}, {""}, -#line 341 "src/lexer-keywords.txt" +#line 342 "src/lexer-keywords.txt" {"v128.load16x4_s", TokenType::Load, Opcode::V128Load16X4S}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 181 "src/lexer-keywords.txt" +#line 182 "src/lexer-keywords.txt" {"f64x2.sub", TokenType::Binary, Opcode::F64X2Sub}, {""}, {""}, -#line 155 "src/lexer-keywords.txt" +#line 156 "src/lexer-keywords.txt" {"f64x2.abs", TokenType::Unary, Opcode::F64X2Abs}, {""}, {""}, {""}, -#line 492 "src/lexer-keywords.txt" +#line 493 "src/lexer-keywords.txt" {"i64x2.sub", TokenType::Binary, Opcode::I64X2Sub}, -#line 158 "src/lexer-keywords.txt" +#line 159 "src/lexer-keywords.txt" {"f64x2.div", TokenType::Binary, Opcode::F64X2Div}, {""}, -#line 478 "src/lexer-keywords.txt" +#line 479 "src/lexer-keywords.txt" {"i64x2.abs", TokenType::Unary, Opcode::I64X2Abs}, -#line 504 "src/lexer-keywords.txt" +#line 505 "src/lexer-keywords.txt" {"i8x16.avgr_u", TokenType::Binary, Opcode::I8X16AvgrU}, -#line 532 "src/lexer-keywords.txt" +#line 533 "src/lexer-keywords.txt" {"i8x16.splat", TokenType::Unary, Opcode::I8X16Splat}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 173 "src/lexer-keywords.txt" +#line 174 "src/lexer-keywords.txt" {"f64x2.pmin", TokenType::Binary, Opcode::F64X2PMin}, {""}, {""}, -#line 546 "src/lexer-keywords.txt" +#line 547 "src/lexer-keywords.txt" {"loop", TokenType::Loop, Opcode::Loop}, {""}, {""}, {""}, {""}, {""}, -#line 463 "src/lexer-keywords.txt" +#line 464 "src/lexer-keywords.txt" {"i64.trunc_sat_f32_u", TokenType::Convert, Opcode::I64TruncSatF32U}, -#line 319 "src/lexer-keywords.txt" +#line 320 "src/lexer-keywords.txt" {"i32.trunc_sat_f32_u", TokenType::Convert, Opcode::I32TruncSatF32U}, -#line 135 "src/lexer-keywords.txt" +#line 136 "src/lexer-keywords.txt" {"f64.eq", TokenType::Compare, Opcode::F64Eq}, -#line 74 "src/lexer-keywords.txt" +#line 75 "src/lexer-keywords.txt" {"f32.eq", TokenType::Compare, Opcode::F32Eq}, -#line 462 "src/lexer-keywords.txt" +#line 463 "src/lexer-keywords.txt" {"i64.trunc_sat_f32_s", TokenType::Convert, Opcode::I64TruncSatF32S}, -#line 318 "src/lexer-keywords.txt" +#line 319 "src/lexer-keywords.txt" {"i32.trunc_sat_f32_s", TokenType::Convert, Opcode::I32TruncSatF32S}, {""}, {""}, {""}, -#line 419 "src/lexer-keywords.txt" +#line 420 "src/lexer-keywords.txt" {"i64.eq", TokenType::Compare, Opcode::I64Eq}, -#line 281 "src/lexer-keywords.txt" +#line 282 "src/lexer-keywords.txt" {"i32.eq", TokenType::Compare, Opcode::I32Eq}, -#line 327 "src/lexer-keywords.txt" +#line 328 "src/lexer-keywords.txt" {"i32x4.bitmask", TokenType::Unary, Opcode::I32X4Bitmask}, {""}, {""}, {""}, {""}, -#line 444 "src/lexer-keywords.txt" +#line 445 "src/lexer-keywords.txt" {"i64.popcnt", TokenType::Unary, Opcode::I64Popcnt}, -#line 301 "src/lexer-keywords.txt" +#line 302 "src/lexer-keywords.txt" {"i32.popcnt", TokenType::Unary, Opcode::I32Popcnt}, {""}, {""}, -#line 384 "src/lexer-keywords.txt" +#line 385 "src/lexer-keywords.txt" {"i64.atomic.rmw16.cmpxchg_u", TokenType::AtomicRmwCmpxchg, Opcode::I64AtomicRmw16CmpxchgU}, -#line 254 "src/lexer-keywords.txt" +#line 255 "src/lexer-keywords.txt" {"i32.atomic.rmw16.cmpxchg_u", TokenType::AtomicRmwCmpxchg, Opcode::I32AtomicRmw16CmpxchgU}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 99 "src/lexer-keywords.txt" +#line 100 "src/lexer-keywords.txt" {"f32x4.eq", TokenType::Compare, Opcode::F32X4Eq}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 329 "src/lexer-keywords.txt" +#line 330 "src/lexer-keywords.txt" {"i32x4.eq", TokenType::Compare, Opcode::I32X4Eq}, {""}, {""}, {""}, {""}, {""}, -#line 484 "src/lexer-keywords.txt" +#line 485 "src/lexer-keywords.txt" {"i64x2.extend_low_i32x4_u", TokenType::Unary, Opcode::I64X2ExtendLowI32X4U}, {""}, -#line 482 "src/lexer-keywords.txt" +#line 483 "src/lexer-keywords.txt" {"i64x2.extend_low_i32x4_s", TokenType::Unary, Opcode::I64X2ExtendLowI32X4S}, -#line 524 "src/lexer-keywords.txt" +#line 525 "src/lexer-keywords.txt" {"i8x16.popcnt", TokenType::Unary, Opcode::I8X16Popcnt}, {""}, {""}, -#line 612 "src/lexer-keywords.txt" +#line 613 "src/lexer-keywords.txt" {"v128.load16_splat", TokenType::Load, Opcode::V128Load16Splat}, {""}, {""}, {""}, {""}, {""}, -#line 130 "src/lexer-keywords.txt" +#line 131 "src/lexer-keywords.txt" {"f64.convert_i32_u", TokenType::Convert, Opcode::F64ConvertI32U}, -#line 68 "src/lexer-keywords.txt" +#line 69 "src/lexer-keywords.txt" {"f32.convert_i32_u", TokenType::Convert, Opcode::F32ConvertI32U}, {""}, {""}, -#line 129 "src/lexer-keywords.txt" +#line 130 "src/lexer-keywords.txt" {"f64.convert_i32_s", TokenType::Convert, Opcode::F64ConvertI32S}, -#line 67 "src/lexer-keywords.txt" +#line 68 "src/lexer-keywords.txt" {"f32.convert_i32_s", TokenType::Convert, Opcode::F32ConvertI32S}, {""}, -#line 370 "src/lexer-keywords.txt" +#line 371 "src/lexer-keywords.txt" {"i32x4.extend_high_i16x8_u", TokenType::Unary, Opcode::I32X4ExtendHighI16X8U}, {""}, -#line 369 "src/lexer-keywords.txt" +#line 370 "src/lexer-keywords.txt" {"i32x4.extend_high_i16x8_s", TokenType::Unary, Opcode::I32X4ExtendHighI16X8S}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 172 "src/lexer-keywords.txt" +#line 173 "src/lexer-keywords.txt" {"f64x2.pmax", TokenType::Binary, Opcode::F64X2PMax}, {""}, {""}, {""}, {""}, -#line 617 "src/lexer-keywords.txt" +#line 618 "src/lexer-keywords.txt" {"v128.load16_lane", TokenType::SimdLoadLane, Opcode::V128Load16Lane}, {""}, {""}, -#line 624 "src/lexer-keywords.txt" +#line 625 "src/lexer-keywords.txt" {"i8x16.shuffle", TokenType::SimdShuffleOp, Opcode::I8X16Shuffle}, {""}, {""}, -#line 361 "src/lexer-keywords.txt" +#line 362 "src/lexer-keywords.txt" {"i32x4.extadd_pairwise_i16x8_u", TokenType::Unary, Opcode::I32X4ExtaddPairwiseI16X8U}, {""}, -#line 360 "src/lexer-keywords.txt" +#line 361 "src/lexer-keywords.txt" {"i32x4.extadd_pairwise_i16x8_s", TokenType::Unary, Opcode::I32X4ExtaddPairwiseI16X8S}, {""}, {""}, #line 25 "src/lexer-keywords.txt" {"assert_malformed", TokenType::AssertMalformed}, {""}, {""}, {""}, -#line 53 "src/lexer-keywords.txt" +#line 54 "src/lexer-keywords.txt" {"elem.drop", TokenType::ElemDrop, Opcode::ElemDrop}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 495 "src/lexer-keywords.txt" +#line 496 "src/lexer-keywords.txt" {"i64x2.extmul_low_i32x4_u", TokenType::Binary, Opcode::I64X2ExtmulLowI32X4U}, -#line 526 "src/lexer-keywords.txt" +#line 527 "src/lexer-keywords.txt" {"i8x16.relaxed_swizzle", TokenType::Binary, Opcode::I8X16RelaxedSwizzle}, -#line 493 "src/lexer-keywords.txt" +#line 494 "src/lexer-keywords.txt" {"i64x2.extmul_low_i32x4_s", TokenType::Binary, Opcode::I64X2ExtmulLowI32X4S}, {""}, {""}, {""}, {""}, {""}, -#line 372 "src/lexer-keywords.txt" +#line 373 "src/lexer-keywords.txt" {"i32x4.extend_low_i16x8_u", TokenType::Unary, Opcode::I32X4ExtendLowI16X8U}, {""}, -#line 371 "src/lexer-keywords.txt" +#line 372 "src/lexer-keywords.txt" {"i32x4.extend_low_i16x8_s", TokenType::Unary, Opcode::I32X4ExtendLowI16X8S}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 365 "src/lexer-keywords.txt" +#line 366 "src/lexer-keywords.txt" {"i32x4.extmul_high_i16x8_u", TokenType::Binary, Opcode::I32X4ExtmulHighI16X8U}, {""}, -#line 363 "src/lexer-keywords.txt" +#line 364 "src/lexer-keywords.txt" {"i32x4.extmul_high_i16x8_s", TokenType::Binary, Opcode::I32X4ExtmulHighI16X8S}, {""}, -#line 149 "src/lexer-keywords.txt" +#line 150 "src/lexer-keywords.txt" {"f64.reinterpret_i64", TokenType::Convert, Opcode::F64ReinterpretI64}, {""}, {""}, -#line 323 "src/lexer-keywords.txt" +#line 324 "src/lexer-keywords.txt" {"i32.wrap_i64", TokenType::Convert, Opcode::I32WrapI64}, {""}, {""}, {""}, {""}, -#line 625 "src/lexer-keywords.txt" +#line 626 "src/lexer-keywords.txt" {"i8x16.swizzle", TokenType::Binary, Opcode::I8X16Swizzle}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 134 "src/lexer-keywords.txt" +#line 135 "src/lexer-keywords.txt" {"f64.div", TokenType::Binary, Opcode::F64Div}, -#line 73 "src/lexer-keywords.txt" +#line 74 "src/lexer-keywords.txt" {"f32.div", TokenType::Binary, Opcode::F32Div}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 235 "src/lexer-keywords.txt" +#line 236 "src/lexer-keywords.txt" {"i16x8.sub", TokenType::Binary, Opcode::I16X8Sub}, {""}, {""}, -#line 195 "src/lexer-keywords.txt" +#line 196 "src/lexer-keywords.txt" {"i16x8.abs", TokenType::Unary, Opcode::I16X8Abs}, {""}, -#line 564 "src/lexer-keywords.txt" +#line 565 "src/lexer-keywords.txt" {"pagesize", TokenType::PageSize}, {""}, {""}, -#line 97 "src/lexer-keywords.txt" +#line 98 "src/lexer-keywords.txt" {"f32x4.convert_i32x4_u", TokenType::Unary, Opcode::F32X4ConvertI32X4U}, {""}, -#line 96 "src/lexer-keywords.txt" +#line 97 "src/lexer-keywords.txt" {"f32x4.convert_i32x4_s", TokenType::Unary, Opcode::F32X4ConvertI32X4S}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 364 "src/lexer-keywords.txt" +#line 365 "src/lexer-keywords.txt" {"i32x4.extmul_low_i16x8_u", TokenType::Binary, Opcode::I32X4ExtmulLowI16X8U}, {""}, -#line 362 "src/lexer-keywords.txt" +#line 363 "src/lexer-keywords.txt" {"i32x4.extmul_low_i16x8_s", TokenType::Binary, Opcode::I32X4ExtmulLowI16X8S}, {""}, {""}, -#line 133 "src/lexer-keywords.txt" +#line 134 "src/lexer-keywords.txt" {"f64.copysign", TokenType::Binary, Opcode::F64Copysign}, -#line 71 "src/lexer-keywords.txt" +#line 72 "src/lexer-keywords.txt" {"f32.copysign", TokenType::Binary, Opcode::F32Copysign}, -#line 535 "src/lexer-keywords.txt" +#line 536 "src/lexer-keywords.txt" {"i8x16.sub", TokenType::Binary, Opcode::I8X16Sub}, {""}, {""}, -#line 499 "src/lexer-keywords.txt" +#line 500 "src/lexer-keywords.txt" {"i8x16.abs", TokenType::Unary, Opcode::I8X16Abs}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 227 "src/lexer-keywords.txt" +#line 228 "src/lexer-keywords.txt" {"i16x8.relaxed_q15mulr_s", TokenType::Binary, Opcode::I16X8RelaxedQ15mulrS}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 202 "src/lexer-keywords.txt" +#line 203 "src/lexer-keywords.txt" {"i16x8.relaxed_dot_i8x16_i7x16_s", TokenType::Binary, Opcode::I16X8DotI8X16I7X16S}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 445 "src/lexer-keywords.txt" +#line 446 "src/lexer-keywords.txt" {"i64.reinterpret_f64", TokenType::Convert, Opcode::I64ReinterpretF64}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 246 "src/lexer-keywords.txt" +#line 247 "src/lexer-keywords.txt" {"i16x8.extend_low_i8x16_u", TokenType::Unary, Opcode::I16X8ExtendLowI8X16U}, {""}, -#line 245 "src/lexer-keywords.txt" +#line 246 "src/lexer-keywords.txt" {"i16x8.extend_low_i8x16_s", TokenType::Unary, Opcode::I16X8ExtendLowI8X16S}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -1601,36 +1673,36 @@ Perfect_Hash::InWordSet (const char *str, size_t len) {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 222 "src/lexer-keywords.txt" +#line 223 "src/lexer-keywords.txt" {"i16x8.narrow_i32x4_u", TokenType::Binary, Opcode::I16X8NarrowI32X4U}, {""}, -#line 221 "src/lexer-keywords.txt" +#line 222 "src/lexer-keywords.txt" {"i16x8.narrow_i32x4_s", TokenType::Binary, Opcode::I16X8NarrowI32X4S}, {""}, {""}, -#line 240 "src/lexer-keywords.txt" +#line 241 "src/lexer-keywords.txt" {"i16x8.extmul_low_i8x16_u", TokenType::Binary, Opcode::I16X8ExtmulLowI8X16U}, {""}, -#line 238 "src/lexer-keywords.txt" +#line 239 "src/lexer-keywords.txt" {"i16x8.extmul_low_i8x16_s", TokenType::Binary, Opcode::I16X8ExtmulLowI8X16S}, {""}, {""}, {""}, -#line 550 "src/lexer-keywords.txt" +#line 551 "src/lexer-keywords.txt" {"memory.copy", TokenType::MemoryCopy, Opcode::MemoryCopy}, {""}, -#line 481 "src/lexer-keywords.txt" +#line 482 "src/lexer-keywords.txt" {"i64x2.bitmask", TokenType::Unary, Opcode::I64X2Bitmask}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 159 "src/lexer-keywords.txt" +#line 160 "src/lexer-keywords.txt" {"f64x2.eq", TokenType::Compare, Opcode::F64X2Eq}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 472 "src/lexer-keywords.txt" +#line 473 "src/lexer-keywords.txt" {"i64x2.eq", TokenType::Binary, Opcode::I64X2Eq}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 485 "src/lexer-keywords.txt" +#line 486 "src/lexer-keywords.txt" {"i64x2.extend_high_i32x4_u", TokenType::Unary, Opcode::I64X2ExtendHighI32X4U}, {""}, -#line 483 "src/lexer-keywords.txt" +#line 484 "src/lexer-keywords.txt" {"i64x2.extend_high_i32x4_s", TokenType::Unary, Opcode::I64X2ExtendHighI32X4S}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 20 "src/lexer-keywords.txt" @@ -1639,28 +1711,28 @@ Perfect_Hash::InWordSet (const char *str, size_t len) #line 27 "src/lexer-keywords.txt" {"assert_trap", TokenType::AssertTrap}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 601 "src/lexer-keywords.txt" +#line 602 "src/lexer-keywords.txt" {"v128.bitselect", TokenType::Ternary, Opcode::V128BitSelect}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 152 "src/lexer-keywords.txt" +#line 153 "src/lexer-keywords.txt" {"f64.sub", TokenType::Binary, Opcode::F64Sub}, -#line 90 "src/lexer-keywords.txt" +#line 91 "src/lexer-keywords.txt" {"f32.sub", TokenType::Binary, Opcode::F32Sub}, {""}, {""}, {""}, {""}, {""}, -#line 457 "src/lexer-keywords.txt" +#line 458 "src/lexer-keywords.txt" {"i64.sub", TokenType::Binary, Opcode::I64Sub}, -#line 313 "src/lexer-keywords.txt" +#line 314 "src/lexer-keywords.txt" {"i32.sub", TokenType::Binary, Opcode::I32Sub}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 148 "src/lexer-keywords.txt" +#line 149 "src/lexer-keywords.txt" {"f64.promote_f32", TokenType::Convert, Opcode::F64PromoteF32}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 496 "src/lexer-keywords.txt" +#line 497 "src/lexer-keywords.txt" {"i64x2.extmul_high_i32x4_u", TokenType::Binary, Opcode::I64X2ExtmulHighI32X4U}, {""}, -#line 494 "src/lexer-keywords.txt" +#line 495 "src/lexer-keywords.txt" {"i64x2.extmul_high_i32x4_s", TokenType::Binary, Opcode::I64X2ExtmulHighI32X4S}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -1674,7 +1746,7 @@ Perfect_Hash::InWordSet (const char *str, size_t len) #line 22 "src/lexer-keywords.txt" {"assert_exception", TokenType::AssertException}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 201 "src/lexer-keywords.txt" +#line 202 "src/lexer-keywords.txt" {"i16x8.bitmask", TokenType::Unary, Opcode::I16X8Bitmask}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -1682,26 +1754,26 @@ Perfect_Hash::InWordSet (const char *str, size_t len) #line 23 "src/lexer-keywords.txt" {"assert_exhaustion", TokenType::AssertExhaustion}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 505 "src/lexer-keywords.txt" +#line 506 "src/lexer-keywords.txt" {"i8x16.bitmask", TokenType::Unary, Opcode::I8X16Bitmask}, {""}, -#line 203 "src/lexer-keywords.txt" +#line 204 "src/lexer-keywords.txt" {"i16x8.eq", TokenType::Compare, Opcode::I16X8Eq}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 506 "src/lexer-keywords.txt" +#line 507 "src/lexer-keywords.txt" {"i8x16.eq", TokenType::Compare, Opcode::I8X16Eq}, {""}, {""}, {""}, {""}, {""}, -#line 549 "src/lexer-keywords.txt" +#line 550 "src/lexer-keywords.txt" {"memory.atomic.wait64", TokenType::AtomicWait, Opcode::MemoryAtomicWait64}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 87 "src/lexer-keywords.txt" +#line 88 "src/lexer-keywords.txt" {"f32.reinterpret_i32", TokenType::Convert, Opcode::F32ReinterpretI32}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -1711,63 +1783,63 @@ Perfect_Hash::InWordSet (const char *str, size_t len) {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 407 "src/lexer-keywords.txt" +#line 408 "src/lexer-keywords.txt" {"i64.atomic.rmw.sub", TokenType::AtomicRmw, Opcode::I64AtomicRmwSub}, -#line 270 "src/lexer-keywords.txt" +#line 271 "src/lexer-keywords.txt" {"i32.atomic.rmw.sub", TokenType::AtomicRmw, Opcode::I32AtomicRmwSub}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 547 "src/lexer-keywords.txt" +#line 548 "src/lexer-keywords.txt" {"memory.atomic.notify", TokenType::AtomicNotify, Opcode::MemoryAtomicNotify}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 244 "src/lexer-keywords.txt" +#line 245 "src/lexer-keywords.txt" {"i16x8.extend_high_i8x16_u", TokenType::Unary, Opcode::I16X8ExtendHighI8X16U}, {""}, -#line 243 "src/lexer-keywords.txt" +#line 244 "src/lexer-keywords.txt" {"i16x8.extend_high_i8x16_s", TokenType::Unary, Opcode::I16X8ExtendHighI8X16S}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 28 "src/lexer-keywords.txt" {"assert_unlinkable", TokenType::AssertUnlinkable}, {""}, {""}, -#line 302 "src/lexer-keywords.txt" +#line 303 "src/lexer-keywords.txt" {"i32.reinterpret_f32", TokenType::Convert, Opcode::I32ReinterpretF32}, {""}, {""}, {""}, {""}, -#line 184 "src/lexer-keywords.txt" +#line 185 "src/lexer-keywords.txt" {"f64x2.convert_low_i32x4_u", TokenType::Unary, Opcode::F64X2ConvertLowI32X4U}, {""}, -#line 183 "src/lexer-keywords.txt" +#line 184 "src/lexer-keywords.txt" {"f64x2.convert_low_i32x4_s", TokenType::Unary, Opcode::F64X2ConvertLowI32X4S}, {""}, -#line 237 "src/lexer-keywords.txt" +#line 238 "src/lexer-keywords.txt" {"i16x8.extadd_pairwise_i8x16_u", TokenType::Unary, Opcode::I16X8ExtaddPairwiseI8X16U}, {""}, -#line 236 "src/lexer-keywords.txt" +#line 237 "src/lexer-keywords.txt" {"i16x8.extadd_pairwise_i8x16_s", TokenType::Unary, Opcode::I16X8ExtaddPairwiseI8X16S}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 548 "src/lexer-keywords.txt" +#line 549 "src/lexer-keywords.txt" {"memory.atomic.wait32", TokenType::AtomicWait, Opcode::MemoryAtomicWait32}, {""}, {""}, {""}, {""}, {""}, -#line 522 "src/lexer-keywords.txt" +#line 523 "src/lexer-keywords.txt" {"i8x16.narrow_i16x8_u", TokenType::Binary, Opcode::I8X16NarrowI16X8U}, {""}, -#line 521 "src/lexer-keywords.txt" +#line 522 "src/lexer-keywords.txt" {"i8x16.narrow_i16x8_s", TokenType::Binary, Opcode::I8X16NarrowI16X8S}, {""}, -#line 224 "src/lexer-keywords.txt" +#line 225 "src/lexer-keywords.txt" {"i16x8.q15mulr_sat_s", TokenType::Binary, Opcode::I16X8Q15mulrSatS}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, #line 29 "src/lexer-keywords.txt" {"atomic.fence", TokenType::AtomicFence, Opcode::AtomicFence}, {""}, {""}, {""}, {""}, -#line 241 "src/lexer-keywords.txt" +#line 242 "src/lexer-keywords.txt" {"i16x8.extmul_high_i8x16_u", TokenType::Binary, Opcode::I16X8ExtmulHighI8X16U}, {""}, -#line 239 "src/lexer-keywords.txt" +#line 240 "src/lexer-keywords.txt" {"i16x8.extmul_high_i8x16_s", TokenType::Binary, Opcode::I16X8ExtmulHighI8X16S}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -1785,9 +1857,12 @@ Perfect_Hash::InWordSet (const char *str, size_t len) {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 185 "src/lexer-keywords.txt" +#line 186 "src/lexer-keywords.txt" {"f64x2.promote_low_f32x4", TokenType::Unary, Opcode::F64X2PromoteLowF32X4} }; +#if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__ && __clang_major__ >= 3) +#pragma GCC diagnostic pop +#endif if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { @@ -1801,5 +1876,5 @@ Perfect_Hash::InWordSet (const char *str, size_t len) return &wordlist[key]; } } - return 0; + return static_cast (0); } diff --git a/src/test-wast-parser.cc b/src/test-wast-parser.cc index 2277fb2a9e..ebdcf4bf57 100644 --- a/src/test-wast-parser.cc +++ b/src/test-wast-parser.cc @@ -117,3 +117,22 @@ TEST(WastParser, InvalidBinaryModule) { EXPECT_EQ(expected_data, binary_mod->data); } + +TEST(WastParser, ModuleDefinition) { + std::string text = "(module definition)"; + + Errors errors; + auto lexer = + WastLexer::CreateBufferLexer("test", text.c_str(), text.size(), &errors); + Features features; + WastParseOptions options(features); + + std::unique_ptr