summaryrefslogtreecommitdiff
path: root/src/prebuilt/wast-lexer-gen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/prebuilt/wast-lexer-gen.cc')
-rw-r--r--src/prebuilt/wast-lexer-gen.cc7070
1 files changed, 7070 insertions, 0 deletions
diff --git a/src/prebuilt/wast-lexer-gen.cc b/src/prebuilt/wast-lexer-gen.cc
new file mode 100644
index 00000000..4545dfd7
--- /dev/null
+++ b/src/prebuilt/wast-lexer-gen.cc
@@ -0,0 +1,7070 @@
+/* Generated by re2c 0.16 */
+#line 1 "src/wast-lexer.cc"
+/*
+ * Copyright 2016 WebAssembly Community Group participants
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "wast-lexer.h"
+
+#include <assert.h>
+#include <stdio.h>
+
+#include "config.h"
+
+#include "wast-parser.h"
+#include "wast-parser-lexer-shared.h"
+
+/* must be included after so some typedefs will be defined */
+#include "wast-parser-gen.hh"
+
+#define YYMAXFILL 29
+
+#define INITIAL_LEXER_BUFFER_SIZE (64 * 1024)
+
+#define YY_USER_ACTION \
+ { \
+ loc->filename = lexer->filename; \
+ loc->line = lexer->line; \
+ loc->first_column = COLUMN(lexer->token); \
+ loc->last_column = COLUMN(lexer->cursor); \
+ }
+
+#define RETURN(name) \
+ YY_USER_ACTION; \
+ return WABT_TOKEN_TYPE_##name
+
+#define ERROR(...) \
+ YY_USER_ACTION; \
+ wast_parser_error(loc, lexer, parser, __VA_ARGS__)
+
+#define BEGIN(c) \
+ do { \
+ cond = c; \
+ } while (0)
+#define FILL(n) \
+ do { \
+ if (WABT_FAILED(fill(loc, lexer, parser, n))) { \
+ RETURN(EOF); \
+ continue; \
+ } \
+ } while (0)
+
+#define yytext (lexer->token)
+#define yyleng (lexer->cursor - lexer->token)
+
+/* p must be a pointer somewhere in the lexer buffer */
+#define FILE_OFFSET(p) ((p) - (lexer->buffer) + lexer->buffer_file_offset)
+#define COLUMN(p) (FILE_OFFSET(p) - lexer->line_file_offset + 1)
+
+#define COMMENT_NESTING (lexer->comment_nesting)
+#define NEWLINE \
+ do { \
+ lexer->line++; \
+ lexer->line_file_offset = FILE_OFFSET(lexer->cursor); \
+ } while (0)
+
+#define TEXT \
+ lval->text.start = yytext; \
+ lval->text.length = yyleng
+
+#define TEXT_AT(offset) \
+ lval->text.start = yytext + offset; \
+ lval->text.length = yyleng - offset
+
+#define TYPE(type_) lval->type = Type::type_
+
+#define OPCODE(name) lval->opcode = Opcode::name
+
+#define LITERAL(type_) \
+ lval->literal.type = LiteralType::type_; \
+ lval->literal.text.start = yytext; \
+ lval->literal.text.length = yyleng
+
+namespace wabt {
+
+static Result fill(Location* loc,
+ WastLexer* lexer,
+ WastParser* parser,
+ size_t need) {
+ if (lexer->eof)
+ return Result::Error;
+ size_t free = lexer->token - lexer->buffer;
+ assert(static_cast<size_t>(lexer->cursor - lexer->buffer) >= free);
+ /* our buffer is too small, need to realloc */
+ if (free < need) {
+ char* old_buffer = lexer->buffer;
+ size_t old_buffer_size = lexer->buffer_size;
+ size_t new_buffer_size =
+ old_buffer_size ? old_buffer_size * 2 : INITIAL_LEXER_BUFFER_SIZE;
+ /* make sure there is enough space for the bytes requested (need) and an
+ * additional YYMAXFILL bytes which is needed for the re2c lexer
+ * implementation when the eof is reached */
+ while ((new_buffer_size - old_buffer_size) + free < need + YYMAXFILL)
+ new_buffer_size *= 2;
+
+ char* new_buffer = new char[new_buffer_size];
+ if (!new_buffer) {
+ wast_parser_error(loc, lexer, parser,
+ "unable to reallocate lexer buffer.");
+ return Result::Error;
+ }
+ memmove(new_buffer, lexer->token, lexer->limit - lexer->token);
+ lexer->buffer = new_buffer;
+ lexer->buffer_size = new_buffer_size;
+ lexer->token = new_buffer + (lexer->token - old_buffer) - free;
+ lexer->marker = new_buffer + (lexer->marker - old_buffer) - free;
+ lexer->cursor = new_buffer + (lexer->cursor - old_buffer) - free;
+ lexer->limit = new_buffer + (lexer->limit - old_buffer) - free;
+ lexer->buffer_file_offset += free;
+ free += new_buffer_size - old_buffer_size;
+ delete[] old_buffer;
+ } else {
+ /* shift everything down to make more room in the buffer */
+ memmove(lexer->buffer, lexer->token, lexer->limit - lexer->token);
+ lexer->token -= free;
+ lexer->marker -= free;
+ lexer->cursor -= free;
+ lexer->limit -= free;
+ lexer->buffer_file_offset += free;
+ }
+ /* read the new data into the buffer */
+ if (lexer->source.type == WastLexerSourceType::File) {
+ lexer->limit += fread(lexer->limit, 1, free, lexer->source.file);
+ } else {
+ /* TODO(binji): could lex directly from buffer */
+ assert(lexer->source.type == WastLexerSourceType::Buffer);
+ size_t read_size = free;
+ size_t offset = lexer->source.buffer.read_offset;
+ size_t bytes_left = lexer->source.buffer.size - offset;
+ if (read_size > bytes_left)
+ read_size = bytes_left;
+ memcpy(lexer->limit,
+ static_cast<const char*>(lexer->source.buffer.data) + offset,
+ read_size);
+ lexer->source.buffer.read_offset += read_size;
+ lexer->limit += read_size;
+ }
+ /* if at the end of file, need to fill YYMAXFILL more characters with "fake
+ * characters", that are not a lexeme nor a lexeme suffix. see
+ * http://re2c.org/examples/example_03.html */
+ if (lexer->limit < lexer->buffer + lexer->buffer_size - YYMAXFILL) {
+ lexer->eof = true;
+ memset(lexer->limit, 0, YYMAXFILL);
+ lexer->limit += YYMAXFILL;
+ }
+ return Result::Ok;
+}
+
+int wast_lexer_lex(WABT_WAST_PARSER_STYPE* lval,
+ WABT_WAST_PARSER_LTYPE* loc,
+ WastLexer* lexer,
+ WastParser* parser) {
+ enum {
+ YYCOND_INIT,
+ YYCOND_BAD_TEXT,
+ YYCOND_LINE_COMMENT,
+ YYCOND_BLOCK_COMMENT,
+ YYCOND_i = YYCOND_INIT,
+ } cond = YYCOND_INIT;
+
+ for (;;) {
+ lexer->token = lexer->cursor;
+
+#line 186 "src/prebuilt/wast-lexer-gen.cc"
+{
+ unsigned char yych;
+ if (cond < 2) {
+ if (cond < 1) {
+ goto YYCOND_i;
+ } else {
+ goto YYCOND_BAD_TEXT;
+ }
+ } else {
+ if (cond < 3) {
+ goto YYCOND_LINE_COMMENT;
+ } else {
+ goto YYCOND_BLOCK_COMMENT;
+ }
+ }
+/* *********************************** */
+YYCOND_BAD_TEXT:
+ if ((lexer->limit - lexer->cursor) < 3) FILL(3);
+ yych = *lexer->cursor;
+ if (yych <= '!') {
+ if (yych <= '\t') {
+ if (yych >= 0x01) goto yy5;
+ } else {
+ if (yych <= '\n') goto yy7;
+ if (yych <= 0x1F) goto yy5;
+ goto yy9;
+ }
+ } else {
+ if (yych <= '\\') {
+ if (yych <= '"') goto yy11;
+ if (yych <= '[') goto yy9;
+ goto yy13;
+ } else {
+ if (yych == 0x7F) goto yy5;
+ goto yy9;
+ }
+ }
+ ++lexer->cursor;
+#line 237 "src/wast-lexer.cc"
+ { ERROR("unexpected EOF"); RETURN(EOF); }
+#line 227 "src/prebuilt/wast-lexer-gen.cc"
+yy5:
+ ++lexer->cursor;
+yy6:
+#line 238 "src/wast-lexer.cc"
+ { ERROR("illegal character in string");
+ continue; }
+#line 234 "src/prebuilt/wast-lexer-gen.cc"
+yy7:
+ ++lexer->cursor;
+ BEGIN(YYCOND_i);
+#line 230 "src/wast-lexer.cc"
+ { ERROR("newline in string");
+ NEWLINE;
+ continue; }
+#line 242 "src/prebuilt/wast-lexer-gen.cc"
+yy9:
+ ++lexer->cursor;
+#line 229 "src/wast-lexer.cc"
+ { continue; }
+#line 247 "src/prebuilt/wast-lexer-gen.cc"
+yy11:
+ ++lexer->cursor;
+ BEGIN(YYCOND_i);
+#line 236 "src/wast-lexer.cc"
+ { TEXT; RETURN(TEXT); }
+#line 253 "src/prebuilt/wast-lexer-gen.cc"
+yy13:
+ yych = *++lexer->cursor;
+ if (yych <= '@') {
+ if (yych <= '"') {
+ if (yych == '\n') goto yy6;
+ if (yych >= '"') goto yy9;
+ } else {
+ if (yych <= '\'') {
+ if (yych >= '\'') goto yy9;
+ } else {
+ if (yych <= '/') goto yy14;
+ if (yych <= '9') goto yy16;
+ }
+ }
+ } else {
+ if (yych <= 'f') {
+ if (yych <= '[') {
+ if (yych <= 'F') goto yy16;
+ } else {
+ if (yych <= '\\') goto yy9;
+ if (yych >= 'a') goto yy16;
+ }
+ } else {
+ if (yych <= 'n') {
+ if (yych >= 'n') goto yy9;
+ } else {
+ if (yych == 't') goto yy9;
+ }
+ }
+ }
+yy14:
+ ++lexer->cursor;
+yy15:
+#line 233 "src/wast-lexer.cc"
+ { ERROR("bad escape \"%.*s\"",
+ static_cast<int>(yyleng), yytext);
+ continue; }
+#line 291 "src/prebuilt/wast-lexer-gen.cc"
+yy16:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= '@') {
+ if (yych <= '/') goto yy15;
+ if (yych <= '9') goto yy9;
+ goto yy15;
+ } else {
+ if (yych <= 'F') goto yy9;
+ if (yych <= '`') goto yy15;
+ if (yych <= 'f') goto yy9;
+ goto yy15;
+ }
+/* *********************************** */
+YYCOND_BLOCK_COMMENT:
+ if ((lexer->limit - lexer->cursor) < 2) FILL(2);
+ yych = *lexer->cursor;
+ if (yych <= '\'') {
+ if (yych <= 0x00) goto yy19;
+ if (yych == '\n') goto yy23;
+ goto yy21;
+ } else {
+ if (yych <= '(') goto yy25;
+ if (yych == ';') goto yy26;
+ goto yy21;
+ }
+yy19:
+ ++lexer->cursor;
+#line 464 "src/wast-lexer.cc"
+ { ERROR("unexpected EOF"); RETURN(EOF); }
+#line 321 "src/prebuilt/wast-lexer-gen.cc"
+yy21:
+ ++lexer->cursor;
+yy22:
+#line 465 "src/wast-lexer.cc"
+ { continue; }
+#line 327 "src/prebuilt/wast-lexer-gen.cc"
+yy23:
+ ++lexer->cursor;
+#line 463 "src/wast-lexer.cc"
+ { NEWLINE; continue; }
+#line 332 "src/prebuilt/wast-lexer-gen.cc"
+yy25:
+ yych = *++lexer->cursor;
+ if (yych == ';') goto yy27;
+ goto yy22;
+yy26:
+ yych = *++lexer->cursor;
+ if (yych == ')') goto yy29;
+ goto yy22;
+yy27:
+ ++lexer->cursor;
+#line 459 "src/wast-lexer.cc"
+ { COMMENT_NESTING++; continue; }
+#line 345 "src/prebuilt/wast-lexer-gen.cc"
+yy29:
+ ++lexer->cursor;
+#line 460 "src/wast-lexer.cc"
+ { if (--COMMENT_NESTING == 0)
+ BEGIN(YYCOND_INIT);
+ continue; }
+#line 352 "src/prebuilt/wast-lexer-gen.cc"
+/* *********************************** */
+YYCOND_LINE_COMMENT:
+ {
+ static const unsigned char yybm[] = {
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 0, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ };
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+ if (yybm[0+yych] & 128) {
+ goto yy34;
+ }
+ goto yy36;
+yy33:
+#line 457 "src/wast-lexer.cc"
+ { continue; }
+#line 399 "src/prebuilt/wast-lexer-gen.cc"
+yy34:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+ if (yybm[0+yych] & 128) {
+ goto yy34;
+ }
+ goto yy33;
+yy36:
+ ++lexer->cursor;
+ BEGIN(YYCOND_i);
+#line 456 "src/wast-lexer.cc"
+ { NEWLINE; continue; }
+#line 413 "src/prebuilt/wast-lexer-gen.cc"
+ }
+/* *********************************** */
+YYCOND_i:
+ {
+ static const unsigned char yybm[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 8, 0, 0, 0, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 72, 80, 0, 80, 80, 80, 80, 80,
+ 64, 64, 80, 80, 64, 80, 80, 80,
+ 240, 240, 240, 240, 240, 240, 240, 240,
+ 240, 240, 80, 64, 80, 80, 80, 80,
+ 80, 208, 208, 208, 208, 208, 208, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 64, 16, 64, 80, 80,
+ 80, 208, 208, 208, 208, 208, 208, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 64, 80, 64, 80, 0,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ };
+ if ((lexer->limit - lexer->cursor) < 29) FILL(29);
+ yych = *lexer->cursor;
+ if (yybm[0+yych] & 8) {
+ goto yy44;
+ }
+ switch (yych) {
+ case 0x00: goto yy40;
+ case '\t':
+ case '\n': goto yy47;
+ case ' ':
+ case '!':
+ case '#':
+ case '%':
+ case '&':
+ case '\'':
+ case '*':
+ case '.':
+ case '/':
+ case ':':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '\\':
+ case '^':
+ case '_':
+ case '`':
+ case 'h':
+ case 'j':
+ case 'k':
+ case 'q':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case '|':
+ case '~': goto yy49;
+ case '"': goto yy52;
+ case '$': goto yy54;
+ case '(': goto yy55;
+ case ')': goto yy57;
+ case '+':
+ case '-': goto yy59;
+ case '0': goto yy60;
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy62;
+ case ';': goto yy64;
+ case 'a': goto yy65;
+ case 'b': goto yy66;
+ case 'c': goto yy67;
+ case 'd': goto yy68;
+ case 'e': goto yy69;
+ case 'f': goto yy70;
+ case 'g': goto yy71;
+ case 'i': goto yy72;
+ case 'l': goto yy73;
+ case 'm': goto yy74;
+ case 'n': goto yy75;
+ case 'o': goto yy76;
+ case 'p': goto yy77;
+ case 'r': goto yy78;
+ case 's': goto yy79;
+ case 't': goto yy80;
+ case 'u': goto yy81;
+ default: goto yy42;
+ }
+yy40:
+ ++lexer->cursor;
+#line 471 "src/wast-lexer.cc"
+ { RETURN(EOF); }
+#line 557 "src/prebuilt/wast-lexer-gen.cc"
+yy42:
+ ++lexer->cursor;
+yy43:
+#line 472 "src/wast-lexer.cc"
+ { ERROR("unexpected char"); continue; }
+#line 563 "src/prebuilt/wast-lexer-gen.cc"
+yy44:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+ if (yybm[0+yych] & 8) {
+ goto yy44;
+ }
+#line 467 "src/wast-lexer.cc"
+ { continue; }
+#line 573 "src/prebuilt/wast-lexer-gen.cc"
+yy47:
+ ++lexer->cursor;
+#line 466 "src/wast-lexer.cc"
+ { NEWLINE; continue; }
+#line 578 "src/prebuilt/wast-lexer-gen.cc"
+yy49:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+yy50:
+ if (yybm[0+yych] & 16) {
+ goto yy49;
+ }
+yy51:
+#line 468 "src/wast-lexer.cc"
+ { ERROR("unexpected token \"%.*s\"",
+ static_cast<int>(yyleng), yytext);
+ continue; }
+#line 592 "src/prebuilt/wast-lexer-gen.cc"
+yy52:
+ yych = *(lexer->marker = ++lexer->cursor);
+ if (yych <= 0x1F) goto yy53;
+ if (yych != 0x7F) goto yy83;
+yy53:
+ BEGIN(YYCOND_BAD_TEXT);
+#line 228 "src/wast-lexer.cc"
+ { continue; }
+#line 601 "src/prebuilt/wast-lexer-gen.cc"
+yy54:
+ yych = *++lexer->cursor;
+ if (yych <= ';') {
+ if (yych <= '\'') {
+ if (yych == '!') goto yy88;
+ if (yych <= '"') goto yy51;
+ goto yy88;
+ } else {
+ if (yych <= '+') {
+ if (yych <= ')') goto yy51;
+ goto yy88;
+ } else {
+ if (yych <= ',') goto yy51;
+ if (yych <= ':') goto yy88;
+ goto yy51;
+ }
+ }
+ } else {
+ if (yych <= 'z') {
+ if (yych <= '[') {
+ if (yych <= 'Z') goto yy88;
+ goto yy51;
+ } else {
+ if (yych == ']') goto yy51;
+ goto yy88;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych <= '{') goto yy51;
+ goto yy88;
+ } else {
+ if (yych == '~') goto yy88;
+ goto yy51;
+ }
+ }
+ }
+yy55:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) == ';') goto yy91;
+#line 219 "src/wast-lexer.cc"
+ { RETURN(LPAR); }
+#line 643 "src/prebuilt/wast-lexer-gen.cc"
+yy57:
+ ++lexer->cursor;
+#line 220 "src/wast-lexer.cc"
+ { RETURN(RPAR); }
+#line 648 "src/prebuilt/wast-lexer-gen.cc"
+yy59:
+ yych = *++lexer->cursor;
+ if (yych <= 'h') {
+ if (yych <= '/') goto yy50;
+ if (yych <= '0') goto yy93;
+ if (yych <= '9') goto yy95;
+ goto yy50;
+ } else {
+ if (yych <= 'i') goto yy97;
+ if (yych == 'n') goto yy98;
+ goto yy50;
+ }
+yy60:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 32) {
+ goto yy62;
+ }
+ if (yych <= 'E') {
+ if (yych <= '+') {
+ if (yych <= '"') {
+ if (yych == '!') goto yy49;
+ } else {
+ if (yych <= '\'') goto yy49;
+ if (yych >= '*') goto yy49;
+ }
+ } else {
+ if (yych <= '.') {
+ if (yych <= ',') goto yy61;
+ if (yych <= '-') goto yy49;
+ goto yy99;
+ } else {
+ if (yych == ';') goto yy61;
+ if (yych <= 'D') goto yy49;
+ goto yy102;
+ }
+ }
+ } else {
+ if (yych <= 'w') {
+ if (yych <= '\\') {
+ if (yych != '[') goto yy49;
+ } else {
+ if (yych <= ']') goto yy61;
+ if (yych == 'e') goto yy102;
+ goto yy49;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych <= 'x') goto yy103;
+ if (yych <= 'z') goto yy49;
+ } else {
+ if (yych == '}') goto yy61;
+ if (yych <= '~') goto yy49;
+ }
+ }
+ }
+yy61:
+#line 221 "src/wast-lexer.cc"
+ { LITERAL(Int); RETURN(NAT); }
+#line 707 "src/prebuilt/wast-lexer-gen.cc"
+yy62:
+ ++lexer->cursor;
+ if ((lexer->limit - lexer->cursor) < 3) FILL(3);
+ yych = *lexer->cursor;
+ if (yybm[0+yych] & 32) {
+ goto yy62;
+ }
+ if (yych <= 'D') {
+ if (yych <= '+') {
+ if (yych <= '"') {
+ if (yych == '!') goto yy49;
+ goto yy61;
+ } else {
+ if (yych <= '\'') goto yy49;
+ if (yych <= ')') goto yy61;
+ goto yy49;
+ }
+ } else {
+ if (yych <= '.') {
+ if (yych <= ',') goto yy61;
+ if (yych <= '-') goto yy49;
+ goto yy99;
+ } else {
+ if (yych == ';') goto yy61;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= 'd') {
+ if (yych <= '[') {
+ if (yych <= 'E') goto yy102;
+ if (yych <= 'Z') goto yy49;
+ goto yy61;
+ } else {
+ if (yych == ']') goto yy61;
+ goto yy49;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych <= 'e') goto yy102;
+ if (yych <= 'z') goto yy49;
+ goto yy61;
+ } else {
+ if (yych == '}') goto yy61;
+ if (yych <= '~') goto yy49;
+ goto yy61;
+ }
+ }
+ }
+yy64:
+ yych = *++lexer->cursor;
+ if (yych == ';') goto yy104;
+ goto yy43;
+yy65:
+ yych = *++lexer->cursor;
+ if (yych <= 'm') {
+ if (yych == 'l') goto yy106;
+ goto yy50;
+ } else {
+ if (yych <= 'n') goto yy107;
+ if (yych == 's') goto yy108;
+ goto yy50;
+ }
+yy66:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy109;
+ if (yych == 'r') goto yy110;
+ goto yy50;
+yy67:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy112;
+ if (yych == 'u') goto yy113;
+ goto yy50;
+yy68:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy114;
+ if (yych == 'r') goto yy115;
+ goto yy50;
+yy69:
+ yych = *++lexer->cursor;
+ if (yych <= 'm') {
+ if (yych == 'l') goto yy116;
+ goto yy50;
+ } else {
+ if (yych <= 'n') goto yy117;
+ if (yych == 'x') goto yy118;
+ goto yy50;
+ }
+yy70:
+ yych = *++lexer->cursor;
+ if (yych <= '5') {
+ if (yych == '3') goto yy119;
+ goto yy50;
+ } else {
+ if (yych <= '6') goto yy120;
+ if (yych == 'u') goto yy121;
+ goto yy50;
+ }
+yy71:
+ yych = *++lexer->cursor;
+ if (yych <= 'k') {
+ if (yych == 'e') goto yy122;
+ goto yy50;
+ } else {
+ if (yych <= 'l') goto yy123;
+ if (yych == 'r') goto yy124;
+ goto yy50;
+ }
+yy72:
+ yych = *++lexer->cursor;
+ if (yych <= 'e') {
+ if (yych <= '3') {
+ if (yych <= '2') goto yy50;
+ goto yy125;
+ } else {
+ if (yych == '6') goto yy126;
+ goto yy50;
+ }
+ } else {
+ if (yych <= 'l') {
+ if (yych <= 'f') goto yy127;
+ goto yy50;
+ } else {
+ if (yych <= 'm') goto yy129;
+ if (yych <= 'n') goto yy130;
+ goto yy50;
+ }
+ }
+yy73:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy131;
+ goto yy50;
+yy74:
+ yych = *++lexer->cursor;
+ if (yych <= 'n') {
+ if (yych == 'e') goto yy132;
+ goto yy50;
+ } else {
+ if (yych <= 'o') goto yy133;
+ if (yych == 'u') goto yy134;
+ goto yy50;
+ }
+yy75:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy135;
+ if (yych == 'o') goto yy136;
+ goto yy50;
+yy76:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy137;
+ if (yych == 'u') goto yy138;
+ goto yy50;
+yy77:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy139;
+ goto yy50;
+yy78:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy140;
+ goto yy50;
+yy79:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy141;
+ if (yych == 't') goto yy142;
+ goto yy50;
+yy80:
+ yych = *++lexer->cursor;
+ if (yych <= 'e') {
+ if (yych == 'a') goto yy143;
+ if (yych <= 'd') goto yy50;
+ goto yy144;
+ } else {
+ if (yych <= 'h') {
+ if (yych <= 'g') goto yy50;
+ goto yy145;
+ } else {
+ if (yych == 'y') goto yy146;
+ goto yy50;
+ }
+ }
+yy81:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy147;
+ goto yy50;
+yy82:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+yy83:
+ if (yybm[0+yych] & 64) {
+ goto yy82;
+ }
+ if (yych <= 0x1F) goto yy84;
+ if (yych <= '"') goto yy85;
+ if (yych <= '\\') goto yy87;
+yy84:
+ lexer->cursor = lexer->marker;
+ goto yy53;
+yy85:
+ ++lexer->cursor;
+#line 227 "src/wast-lexer.cc"
+ { TEXT; RETURN(TEXT); }
+#line 910 "src/prebuilt/wast-lexer-gen.cc"
+yy87:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+ if (yych <= 'F') {
+ if (yych <= '\'') {
+ if (yych == '"') goto yy82;
+ if (yych <= '&') goto yy84;
+ goto yy82;
+ } else {
+ if (yych <= '/') goto yy84;
+ if (yych <= '9') goto yy148;
+ if (yych <= '@') goto yy84;
+ goto yy148;
+ }
+ } else {
+ if (yych <= 'f') {
+ if (yych == '\\') goto yy82;
+ if (yych <= '`') goto yy84;
+ goto yy148;
+ } else {
+ if (yych <= 'n') {
+ if (yych <= 'm') goto yy84;
+ goto yy82;
+ } else {
+ if (yych == 't') goto yy82;
+ goto yy84;
+ }
+ }
+ }
+yy88:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+ if (yych <= ';') {
+ if (yych <= '\'') {
+ if (yych == '!') goto yy88;
+ if (yych >= '#') goto yy88;
+ } else {
+ if (yych <= '+') {
+ if (yych >= '*') goto yy88;
+ } else {
+ if (yych <= ',') goto yy90;
+ if (yych <= ':') goto yy88;
+ }
+ }
+ } else {
+ if (yych <= 'z') {
+ if (yych <= '[') {
+ if (yych <= 'Z') goto yy88;
+ } else {
+ if (yych != ']') goto yy88;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych >= '|') goto yy88;
+ } else {
+ if (yych == '~') goto yy88;
+ }
+ }
+ }
+yy90:
+#line 453 "src/wast-lexer.cc"
+ { TEXT; RETURN(VAR); }
+#line 975 "src/prebuilt/wast-lexer-gen.cc"
+yy91:
+ ++lexer->cursor;
+ BEGIN(YYCOND_BLOCK_COMMENT);
+#line 458 "src/wast-lexer.cc"
+ { COMMENT_NESTING = 1; continue; }
+#line 981 "src/prebuilt/wast-lexer-gen.cc"
+yy93:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= 'D') {
+ if (yych <= ',') {
+ if (yych <= '"') {
+ if (yych == '!') goto yy49;
+ } else {
+ if (yych <= '\'') goto yy49;
+ if (yych <= ')') goto yy94;
+ if (yych <= '+') goto yy49;
+ }
+ } else {
+ if (yych <= '/') {
+ if (yych == '.') goto yy99;
+ goto yy49;
+ } else {
+ if (yych <= '9') goto yy95;
+ if (yych != ';') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= 'e') {
+ if (yych <= '[') {
+ if (yych <= 'E') goto yy102;
+ if (yych <= 'Z') goto yy49;
+ } else {
+ if (yych == ']') goto yy94;
+ if (yych <= 'd') goto yy49;
+ goto yy102;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 'x') goto yy149;
+ if (yych <= 'z') goto yy49;
+ } else {
+ if (yych == '}') goto yy94;
+ if (yych <= '~') goto yy49;
+ }
+ }
+ }
+yy94:
+#line 222 "src/wast-lexer.cc"
+ { LITERAL(Int); RETURN(INT); }
+#line 1025 "src/prebuilt/wast-lexer-gen.cc"
+yy95:
+ ++lexer->cursor;
+ if ((lexer->limit - lexer->cursor) < 3) FILL(3);
+ yych = *lexer->cursor;
+ if (yych <= ';') {
+ if (yych <= '+') {
+ if (yych <= '"') {
+ if (yych == '!') goto yy49;
+ goto yy94;
+ } else {
+ if (yych <= '\'') goto yy49;
+ if (yych <= ')') goto yy94;
+ goto yy49;
+ }
+ } else {
+ if (yych <= '.') {
+ if (yych <= ',') goto yy94;
+ if (yych <= '-') goto yy49;
+ goto yy99;
+ } else {
+ if (yych <= '/') goto yy49;
+ if (yych <= '9') goto yy95;
+ if (yych <= ':') goto yy49;
+ goto yy94;
+ }
+ }
+ } else {
+ if (yych <= 'd') {
+ if (yych <= 'Z') {
+ if (yych == 'E') goto yy102;
+ goto yy49;
+ } else {
+ if (yych == '\\') goto yy49;
+ if (yych <= ']') goto yy94;
+ goto yy49;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych <= 'e') goto yy102;
+ if (yych <= 'z') goto yy49;
+ goto yy94;
+ } else {
+ if (yych == '}') goto yy94;
+ if (yych <= '~') goto yy49;
+ goto yy94;
+ }
+ }
+ }
+yy97:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy150;
+ goto yy50;
+yy98:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy135;
+ goto yy50;
+yy99:
+ ++lexer->cursor;
+ if ((lexer->limit - lexer->cursor) < 3) FILL(3);
+ yych = *lexer->cursor;
+ if (yych <= 'D') {
+ if (yych <= '+') {
+ if (yych <= '"') {
+ if (yych == '!') goto yy49;
+ } else {
+ if (yych <= '\'') goto yy49;
+ if (yych >= '*') goto yy49;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= ',') goto yy101;
+ if (yych <= '/') goto yy49;
+ goto yy99;
+ } else {
+ if (yych != ';') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= 'd') {
+ if (yych <= '[') {
+ if (yych <= 'E') goto yy102;
+ if (yych <= 'Z') goto yy49;
+ } else {
+ if (yych != ']') goto yy49;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych <= 'e') goto yy102;
+ if (yych <= 'z') goto yy49;
+ } else {
+ if (yych == '}') goto yy101;
+ if (yych <= '~') goto yy49;
+ }
+ }
+ }
+yy101:
+#line 223 "src/wast-lexer.cc"
+ { LITERAL(Float); RETURN(FLOAT); }
+#line 1124 "src/prebuilt/wast-lexer-gen.cc"
+yy102:
+ yych = *++lexer->cursor;
+ if (yych <= ',') {
+ if (yych == '+') goto yy151;
+ goto yy50;
+ } else {
+ if (yych <= '-') goto yy151;
+ if (yych <= '/') goto yy50;
+ if (yych <= '9') goto yy152;
+ goto yy50;
+ }
+yy103:
+ yych = *++lexer->cursor;
+ if (yybm[0+yych] & 128) {
+ goto yy154;
+ }
+ goto yy50;
+yy104:
+ ++lexer->cursor;
+ BEGIN(YYCOND_LINE_COMMENT);
+#line 455 "src/wast-lexer.cc"
+ { continue; }
+#line 1147 "src/prebuilt/wast-lexer-gen.cc"
+yy106:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy156;
+ goto yy50;
+yy107:
+ yych = *++lexer->cursor;
+ if (yych == 'y') goto yy157;
+ goto yy50;
+yy108:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy158;
+ goto yy50;
+yy109:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy159;
+ goto yy50;
+yy110:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= 'Z') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy111;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych != ';') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= '_') {
+ if (yych <= '\\') {
+ if (yych >= '\\') goto yy49;
+ } else {
+ if (yych <= ']') goto yy111;
+ if (yych <= '^') goto yy49;
+ goto yy160;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy111:
+#line 253 "src/wast-lexer.cc"
+ { RETURN(BR); }
+#line 1201 "src/prebuilt/wast-lexer-gen.cc"
+yy112:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy161;
+ goto yy50;
+yy113:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy162;
+ goto yy50;
+yy114:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy163;
+ goto yy50;
+yy115:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy164;
+ goto yy50;
+yy116:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy165;
+ if (yych == 's') goto yy166;
+ goto yy50;
+yy117:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy167;
+ goto yy50;
+yy118:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy169;
+ goto yy50;
+yy119:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy170;
+ goto yy50;
+yy120:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy172;
+ goto yy50;
+yy121:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy174;
+ goto yy50;
+yy122:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy175;
+ goto yy50;
+yy123:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy177;
+ goto yy50;
+yy124:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy178;
+ goto yy50;
+yy125:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy179;
+ goto yy50;
+yy126:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy181;
+ goto yy50;
+yy127:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= 'Z') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy128;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych != ';') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= '_') {
+ if (yych <= '\\') {
+ if (yych >= '\\') goto yy49;
+ } else {
+ if (yych <= ']') goto yy128;
+ if (yych <= '^') goto yy49;
+ goto yy183;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy128:
+#line 248 "src/wast-lexer.cc"
+ { RETURN(IF); }
+#line 1300 "src/prebuilt/wast-lexer-gen.cc"
+yy129:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy184;
+ goto yy50;
+yy130:
+ yych = *++lexer->cursor;
+ if (yych <= 'o') {
+ if (yych == 'f') goto yy185;
+ goto yy50;
+ } else {
+ if (yych <= 'p') goto yy187;
+ if (yych == 'v') goto yy188;
+ goto yy50;
+ }
+yy131:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy189;
+ if (yych == 'o') goto yy190;
+ goto yy50;
+yy132:
+ yych = *++lexer->cursor;
+ if (yych == 'm') goto yy191;
+ goto yy50;
+yy133:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy192;
+ goto yy50;
+yy134:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy193;
+ goto yy50;
+yy135:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy195;
+ goto yy50;
+yy136:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy197;
+ goto yy50;
+yy137:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy199;
+ goto yy50;
+yy138:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy200;
+ goto yy50;
+yy139:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy201;
+ goto yy50;
+yy140:
+ yych = *++lexer->cursor;
+ if (yych <= 'r') {
+ if (yych == 'g') goto yy202;
+ goto yy50;
+ } else {
+ if (yych <= 's') goto yy203;
+ if (yych <= 't') goto yy204;
+ goto yy50;
+ }
+yy141:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy205;
+ if (yych == 't') goto yy206;
+ goto yy50;
+yy142:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy207;
+ goto yy50;
+yy143:
+ yych = *++lexer->cursor;
+ if (yych == 'b') goto yy208;
+ goto yy50;
+yy144:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy209;
+ goto yy50;
+yy145:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy210;
+ goto yy50;
+yy146:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy211;
+ goto yy50;
+yy147:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy212;
+ goto yy50;
+yy148:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+ if (yych <= '@') {
+ if (yych <= '/') goto yy84;
+ if (yych <= '9') goto yy82;
+ goto yy84;
+ } else {
+ if (yych <= 'F') goto yy82;
+ if (yych <= '`') goto yy84;
+ if (yych <= 'f') goto yy82;
+ goto yy84;
+ }
+yy149:
+ yych = *++lexer->cursor;
+ if (yych <= '@') {
+ if (yych <= '/') goto yy50;
+ if (yych <= '9') goto yy213;
+ goto yy50;
+ } else {
+ if (yych <= 'F') goto yy213;
+ if (yych <= '`') goto yy50;
+ if (yych <= 'f') goto yy213;
+ goto yy50;
+ }
+yy150:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy185;
+ goto yy50;
+yy151:
+ yych = *++lexer->cursor;
+ if (yych <= '/') goto yy50;
+ if (yych >= ':') goto yy50;
+yy152:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+ if (yych <= ':') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych <= ' ') goto yy101;
+ goto yy49;
+ } else {
+ if (yych <= '"') goto yy101;
+ if (yych <= '\'') goto yy49;
+ goto yy101;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ goto yy101;
+ } else {
+ if (yych <= '/') goto yy49;
+ if (yych <= '9') goto yy152;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= 'Z') {
+ if (yych <= ';') goto yy101;
+ goto yy49;
+ } else {
+ if (yych == '\\') goto yy49;
+ goto yy101;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych == '{') goto yy101;
+ goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ goto yy101;
+ }
+ }
+ }
+yy154:
+ ++lexer->cursor;
+ if ((lexer->limit - lexer->cursor) < 3) FILL(3);
+ yych = *lexer->cursor;
+ if (yybm[0+yych] & 128) {
+ goto yy154;
+ }
+ if (yych <= ';') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych <= ' ') goto yy61;
+ goto yy49;
+ } else {
+ if (yych <= '"') goto yy61;
+ if (yych <= '\'') goto yy49;
+ goto yy61;
+ }
+ } else {
+ if (yych <= '-') {
+ if (yych == ',') goto yy61;
+ goto yy49;
+ } else {
+ if (yych <= '.') goto yy215;
+ if (yych <= ':') goto yy49;
+ goto yy61;
+ }
+ }
+ } else {
+ if (yych <= 'p') {
+ if (yych <= '\\') {
+ if (yych == '[') goto yy61;
+ goto yy49;
+ } else {
+ if (yych <= ']') goto yy61;
+ if (yych <= 'o') goto yy49;
+ goto yy217;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych == '{') goto yy61;
+ goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ goto yy61;
+ }
+ }
+ }
+yy156:
+ yych = *++lexer->cursor;
+ if (yych == 'g') goto yy218;
+ goto yy50;
+yy157:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy219;
+ goto yy50;
+yy158:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy220;
+ goto yy50;
+yy159:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy221;
+ goto yy50;
+yy160:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy222;
+ if (yych == 't') goto yy223;
+ goto yy50;
+yy161:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy224;
+ goto yy50;
+yy162:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy226;
+ goto yy50;
+yy163:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy227;
+ goto yy50;
+yy164:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy229;
+ goto yy50;
+yy165:
+ yych = *++lexer->cursor;
+ if (yych == 'm') goto yy231;
+ goto yy50;
+yy166:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy233;
+ goto yy50;
+yy167:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 260 "src/wast-lexer.cc"
+ { RETURN(END); }
+#line 1567 "src/prebuilt/wast-lexer-gen.cc"
+yy169:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy235;
+ goto yy50;
+yy170:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= ':') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy171;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych == '.') goto yy236;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= 'Z') {
+ if (yych >= '<') goto yy49;
+ } else {
+ if (yych == '\\') goto yy49;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy171:
+#line 242 "src/wast-lexer.cc"
+ { TYPE(F32); RETURN(VALUE_TYPE); }
+#line 1608 "src/prebuilt/wast-lexer-gen.cc"
+yy172:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= ':') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy173;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych == '.') goto yy237;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= 'Z') {
+ if (yych >= '<') goto yy49;
+ } else {
+ if (yych == '\\') goto yy49;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy173:
+#line 243 "src/wast-lexer.cc"
+ { TYPE(F64); RETURN(VALUE_TYPE); }
+#line 1645 "src/prebuilt/wast-lexer-gen.cc"
+yy174:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy238;
+ goto yy50;
+yy175:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= 'Z') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy176;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych != ';') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= '_') {
+ if (yych <= '\\') {
+ if (yych >= '\\') goto yy49;
+ } else {
+ if (yych <= ']') goto yy176;
+ if (yych <= '^') goto yy49;
+ goto yy240;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy176:
+#line 440 "src/wast-lexer.cc"
+ { RETURN(GET); }
+#line 1687 "src/prebuilt/wast-lexer-gen.cc"
+yy177:
+ yych = *++lexer->cursor;
+ if (yych == 'b') goto yy241;
+ goto yy50;
+yy178:
+ yych = *++lexer->cursor;
+ if (yych == 'w') goto yy242;
+ goto yy50;
+yy179:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= ':') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy180;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych == '.') goto yy243;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= 'Z') {
+ if (yych >= '<') goto yy49;
+ } else {
+ if (yych == '\\') goto yy49;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy180:
+#line 240 "src/wast-lexer.cc"
+ { TYPE(I32); RETURN(VALUE_TYPE); }
+#line 1732 "src/prebuilt/wast-lexer-gen.cc"
+yy181:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= ':') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy182;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych == '.') goto yy244;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= 'Z') {
+ if (yych >= '<') goto yy49;
+ } else {
+ if (yych == '\\') goto yy49;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy182:
+#line 241 "src/wast-lexer.cc"
+ { TYPE(I64); RETURN(VALUE_TYPE); }
+#line 1769 "src/prebuilt/wast-lexer-gen.cc"
+yy183:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy245;
+ goto yy50;
+yy184:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy246;
+ goto yy50;
+yy185:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= 'Z') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy186;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych != ';') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= 'i') {
+ if (yych <= '\\') {
+ if (yych >= '\\') goto yy49;
+ } else {
+ if (yych <= ']') goto yy186;
+ if (yych <= 'h') goto yy49;
+ goto yy247;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy186:
+#line 225 "src/wast-lexer.cc"
+ { LITERAL(Infinity); RETURN(FLOAT); }
+#line 1815 "src/prebuilt/wast-lexer-gen.cc"
+yy187:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy248;
+ goto yy50;
+yy188:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy249;
+ goto yy50;
+yy189:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy250;
+ goto yy50;
+yy190:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy251;
+ goto yy50;
+yy191:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy253;
+ goto yy50;
+yy192:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy254;
+ goto yy50;
+yy193:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 245 "src/wast-lexer.cc"
+ { RETURN(MUT); }
+#line 1847 "src/prebuilt/wast-lexer-gen.cc"
+yy195:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= ';') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy196;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych <= '9') goto yy49;
+ if (yych <= ':') goto yy255;
+ }
+ }
+ } else {
+ if (yych <= 'z') {
+ if (yych <= '[') {
+ if (yych <= 'Z') goto yy49;
+ } else {
+ if (yych != ']') goto yy49;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych >= '|') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy196:
+#line 226 "src/wast-lexer.cc"
+ { LITERAL(Nan); RETURN(FLOAT); }
+#line 1884 "src/prebuilt/wast-lexer-gen.cc"
+yy197:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 246 "src/wast-lexer.cc"
+ { RETURN(NOP); }
+#line 1892 "src/prebuilt/wast-lexer-gen.cc"
+yy199:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy256;
+ goto yy50;
+yy200:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy257;
+ goto yy50;
+yy201:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy258;
+ goto yy50;
+yy202:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy259;
+ goto yy50;
+yy203:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy260;
+ goto yy50;
+yy204:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy261;
+ goto yy50;
+yy205:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy262;
+ goto yy50;
+yy206:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy263;
+ goto yy50;
+yy207:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy264;
+ goto yy50;
+yy208:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy265;
+ goto yy50;
+yy209:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy266;
+ goto yy50;
+yy210:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy267;
+ goto yy50;
+yy211:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy269;
+ goto yy50;
+yy212:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy271;
+ goto yy50;
+yy213:
+ ++lexer->cursor;
+ if ((lexer->limit - lexer->cursor) < 3) FILL(3);
+ yych = *lexer->cursor;
+ if (yych <= '@') {
+ if (yych <= ',') {
+ if (yych <= '"') {
+ if (yych == '!') goto yy49;
+ goto yy94;
+ } else {
+ if (yych <= '\'') goto yy49;
+ if (yych <= ')') goto yy94;
+ if (yych <= '+') goto yy49;
+ goto yy94;
+ }
+ } else {
+ if (yych <= '/') {
+ if (yych != '.') goto yy49;
+ } else {
+ if (yych <= '9') goto yy213;
+ if (yych == ';') goto yy94;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= 'f') {
+ if (yych <= '[') {
+ if (yych <= 'F') goto yy213;
+ if (yych <= 'Z') goto yy49;
+ goto yy94;
+ } else {
+ if (yych == ']') goto yy94;
+ if (yych <= '`') goto yy49;
+ goto yy213;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych == 'p') goto yy217;
+ if (yych <= 'z') goto yy49;
+ goto yy94;
+ } else {
+ if (yych == '}') goto yy94;
+ if (yych <= '~') goto yy49;
+ goto yy94;
+ }
+ }
+ }
+yy215:
+ ++lexer->cursor;
+ if ((lexer->limit - lexer->cursor) < 3) FILL(3);
+ yych = *lexer->cursor;
+ if (yych <= 'F') {
+ if (yych <= '+') {
+ if (yych <= '"') {
+ if (yych == '!') goto yy49;
+ goto yy51;
+ } else {
+ if (yych <= '\'') goto yy49;
+ if (yych <= ')') goto yy51;
+ goto yy49;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= ',') goto yy51;
+ if (yych <= '/') goto yy49;
+ goto yy215;
+ } else {
+ if (yych == ';') goto yy51;
+ if (yych <= '@') goto yy49;
+ goto yy215;
+ }
+ }
+ } else {
+ if (yych <= 'o') {
+ if (yych <= '\\') {
+ if (yych == '[') goto yy51;
+ goto yy49;
+ } else {
+ if (yych <= ']') goto yy51;
+ if (yych <= '`') goto yy49;
+ if (yych <= 'f') goto yy215;
+ goto yy49;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych <= 'p') goto yy217;
+ if (yych <= 'z') goto yy49;
+ goto yy51;
+ } else {
+ if (yych == '}') goto yy51;
+ if (yych <= '~') goto yy49;
+ goto yy51;
+ }
+ }
+ }
+yy217:
+ yych = *++lexer->cursor;
+ if (yych <= ',') {
+ if (yych == '+') goto yy272;
+ goto yy50;
+ } else {
+ if (yych <= '-') goto yy272;
+ if (yych <= '/') goto yy50;
+ if (yych <= '9') goto yy273;
+ goto yy50;
+ }
+yy218:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy276;
+ goto yy50;
+yy219:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy277;
+ goto yy50;
+yy220:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy278;
+ goto yy50;
+yy221:
+ yych = *++lexer->cursor;
+ if (yych == 'k') goto yy279;
+ goto yy50;
+yy222:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy281;
+ goto yy50;
+yy223:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy283;
+ goto yy50;
+yy224:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= 'Z') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy225;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych != ';') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= '_') {
+ if (yych <= '\\') {
+ if (yych >= '\\') goto yy49;
+ } else {
+ if (yych <= ']') goto yy225;
+ if (yych <= '^') goto yy49;
+ goto yy284;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy225:
+#line 256 "src/wast-lexer.cc"
+ { RETURN(CALL); }
+#line 2116 "src/prebuilt/wast-lexer-gen.cc"
+yy226:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy285;
+ goto yy50;
+yy227:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 434 "src/wast-lexer.cc"
+ { RETURN(DATA); }
+#line 2128 "src/prebuilt/wast-lexer-gen.cc"
+yy229:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 259 "src/wast-lexer.cc"
+ { RETURN(DROP); }
+#line 2136 "src/prebuilt/wast-lexer-gen.cc"
+yy231:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 433 "src/wast-lexer.cc"
+ { RETURN(ELEM); }
+#line 2144 "src/prebuilt/wast-lexer-gen.cc"
+yy233:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 251 "src/wast-lexer.cc"
+ { RETURN(ELSE); }
+#line 2152 "src/prebuilt/wast-lexer-gen.cc"
+yy235:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy286;
+ goto yy50;
+yy236:
+ yych = *++lexer->cursor;
+ switch (yych) {
+ case 'a': goto yy287;
+ case 'c': goto yy288;
+ case 'd': goto yy289;
+ case 'e': goto yy290;
+ case 'f': goto yy291;
+ case 'g': goto yy292;
+ case 'l': goto yy293;
+ case 'm': goto yy294;
+ case 'n': goto yy295;
+ case 'r': goto yy296;
+ case 's': goto yy297;
+ case 't': goto yy298;
+ default: goto yy50;
+ }
+yy237:
+ yych = *++lexer->cursor;
+ switch (yych) {
+ case 'a': goto yy299;
+ case 'c': goto yy300;
+ case 'd': goto yy301;
+ case 'e': goto yy302;
+ case 'f': goto yy303;
+ case 'g': goto yy304;
+ case 'l': goto yy305;
+ case 'm': goto yy306;
+ case 'n': goto yy307;
+ case 'p': goto yy308;
+ case 'r': goto yy309;
+ case 's': goto yy310;
+ case 't': goto yy311;
+ default: goto yy50;
+ }
+yy238:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 424 "src/wast-lexer.cc"
+ { RETURN(FUNC); }
+#line 2199 "src/prebuilt/wast-lexer-gen.cc"
+yy240:
+ yych = *++lexer->cursor;
+ if (yych == 'g') goto yy312;
+ if (yych == 'l') goto yy313;
+ goto yy50;
+yy241:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy314;
+ goto yy50;
+yy242:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy315;
+ goto yy50;
+yy243:
+ yych = *++lexer->cursor;
+ switch (yych) {
+ case 'a': goto yy316;
+ case 'c': goto yy317;
+ case 'd': goto yy318;
+ case 'e': goto yy319;
+ case 'g': goto yy320;
+ case 'l': goto yy321;
+ case 'm': goto yy322;
+ case 'n': goto yy323;
+ case 'o': goto yy324;
+ case 'p': goto yy325;
+ case 'r': goto yy326;
+ case 's': goto yy327;
+ case 't': goto yy328;
+ case 'w': goto yy329;
+ case 'x': goto yy330;
+ default: goto yy50;
+ }
+yy244:
+ yych = *++lexer->cursor;
+ switch (yych) {
+ case 'a': goto yy331;
+ case 'c': goto yy332;
+ case 'd': goto yy333;
+ case 'e': goto yy334;
+ case 'g': goto yy335;
+ case 'l': goto yy336;
+ case 'm': goto yy337;
+ case 'n': goto yy338;
+ case 'o': goto yy339;
+ case 'p': goto yy340;
+ case 'r': goto yy341;
+ case 's': goto yy342;
+ case 't': goto yy343;
+ case 'x': goto yy344;
+ default: goto yy50;
+ }
+yy245:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy345;
+ goto yy50;
+yy246:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy346;
+ goto yy50;
+yy247:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy347;
+ goto yy50;
+yy248:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy348;
+ goto yy50;
+yy249:
+ yych = *++lexer->cursor;
+ if (yych == 'k') goto yy350;
+ goto yy50;
+yy250:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy351;
+ goto yy50;
+yy251:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 252 "src/wast-lexer.cc"
+ { RETURN(LOOP); }
+#line 2283 "src/prebuilt/wast-lexer-gen.cc"
+yy253:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy353;
+ goto yy50;
+yy254:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy354;
+ goto yy50;
+yy255:
+ yych = *++lexer->cursor;
+ if (yych == '0') goto yy355;
+ goto yy50;
+yy256:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy356;
+ goto yy50;
+yy257:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy357;
+ goto yy50;
+yy258:
+ yych = *++lexer->cursor;
+ if (yych == 'm') goto yy358;
+ goto yy50;
+yy259:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy360;
+ goto yy50;
+yy260:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy361;
+ goto yy50;
+yy261:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy362;
+ goto yy50;
+yy262:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy363;
+ goto yy50;
+yy263:
+ yych = *++lexer->cursor;
+ if (yych == 'g') goto yy364;
+ if (yych == 'l') goto yy365;
+ goto yy50;
+yy264:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy366;
+ goto yy50;
+yy265:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy368;
+ goto yy50;
+yy266:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy370;
+ goto yy50;
+yy267:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 250 "src/wast-lexer.cc"
+ { RETURN(THEN); }
+#line 2348 "src/prebuilt/wast-lexer-gen.cc"
+yy269:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 423 "src/wast-lexer.cc"
+ { RETURN(TYPE); }
+#line 2356 "src/prebuilt/wast-lexer-gen.cc"
+yy271:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy371;
+ goto yy50;
+yy272:
+ yych = *++lexer->cursor;
+ if (yych <= '/') goto yy50;
+ if (yych >= ':') goto yy50;
+yy273:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+ if (yych <= ':') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy275;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych <= '/') goto yy49;
+ if (yych <= '9') goto yy273;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= 'Z') {
+ if (yych >= '<') goto yy49;
+ } else {
+ if (yych == '\\') goto yy49;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy275:
+#line 224 "src/wast-lexer.cc"
+ { LITERAL(Hexfloat); RETURN(FLOAT); }
+#line 2404 "src/prebuilt/wast-lexer-gen.cc"
+yy276:
+ yych = *++lexer->cursor;
+ if (yych == '=') goto yy372;
+ goto yy50;
+yy277:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy373;
+ goto yy50;
+yy278:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy374;
+ goto yy50;
+yy279:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 247 "src/wast-lexer.cc"
+ { RETURN(BLOCK); }
+#line 2424 "src/prebuilt/wast-lexer-gen.cc"
+yy281:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 254 "src/wast-lexer.cc"
+ { RETURN(BR_IF); }
+#line 2432 "src/prebuilt/wast-lexer-gen.cc"
+yy283:
+ yych = *++lexer->cursor;
+ if (yych == 'b') goto yy375;
+ goto yy50;
+yy284:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy376;
+ goto yy50;
+yy285:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy377;
+ goto yy50;
+yy286:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy378;
+ goto yy50;
+yy287:
+ yych = *++lexer->cursor;
+ if (yych == 'b') goto yy380;
+ if (yych == 'd') goto yy381;
+ goto yy50;
+yy288:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy382;
+ if (yych == 'o') goto yy383;
+ goto yy50;
+yy289:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy384;
+ if (yych == 'i') goto yy385;
+ goto yy50;
+yy290:
+ yych = *++lexer->cursor;
+ if (yych == 'q') goto yy386;
+ goto yy50;
+yy291:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy388;
+ goto yy50;
+yy292:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy389;
+ if (yych == 't') goto yy391;
+ goto yy50;
+yy293:
+ yych = *++lexer->cursor;
+ if (yych <= 'n') {
+ if (yych == 'e') goto yy393;
+ goto yy50;
+ } else {
+ if (yych <= 'o') goto yy395;
+ if (yych == 't') goto yy396;
+ goto yy50;
+ }
+yy294:
+ yych = *++lexer->cursor;
+ if (yych <= 'h') {
+ if (yych == 'a') goto yy398;
+ goto yy50;
+ } else {
+ if (yych <= 'i') goto yy399;
+ if (yych == 'u') goto yy400;
+ goto yy50;
+ }
+yy295:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy401;
+ goto yy50;
+yy296:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy403;
+ goto yy50;
+yy297:
+ yych = *++lexer->cursor;
+ if (yych <= 's') {
+ if (yych == 'q') goto yy404;
+ goto yy50;
+ } else {
+ if (yych <= 't') goto yy405;
+ if (yych <= 'u') goto yy406;
+ goto yy50;
+ }
+yy298:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy407;
+ goto yy50;
+yy299:
+ yych = *++lexer->cursor;
+ if (yych == 'b') goto yy408;
+ if (yych == 'd') goto yy409;
+ goto yy50;
+yy300:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy410;
+ if (yych == 'o') goto yy411;
+ goto yy50;
+yy301:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy412;
+ goto yy50;
+yy302:
+ yych = *++lexer->cursor;
+ if (yych == 'q') goto yy413;
+ goto yy50;
+yy303:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy415;
+ goto yy50;
+yy304:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy416;
+ if (yych == 't') goto yy418;
+ goto yy50;
+yy305:
+ yych = *++lexer->cursor;
+ if (yych <= 'n') {
+ if (yych == 'e') goto yy420;
+ goto yy50;
+ } else {
+ if (yych <= 'o') goto yy422;
+ if (yych == 't') goto yy423;
+ goto yy50;
+ }
+yy306:
+ yych = *++lexer->cursor;
+ if (yych <= 'h') {
+ if (yych == 'a') goto yy425;
+ goto yy50;
+ } else {
+ if (yych <= 'i') goto yy426;
+ if (yych == 'u') goto yy427;
+ goto yy50;
+ }
+yy307:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy428;
+ goto yy50;
+yy308:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy430;
+ goto yy50;
+yy309:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy431;
+ goto yy50;
+yy310:
+ yych = *++lexer->cursor;
+ if (yych <= 's') {
+ if (yych == 'q') goto yy432;
+ goto yy50;
+ } else {
+ if (yych <= 't') goto yy433;
+ if (yych <= 'u') goto yy434;
+ goto yy50;
+ }
+yy311:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy435;
+ goto yy50;
+yy312:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy436;
+ goto yy50;
+yy313:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy437;
+ goto yy50;
+yy314:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy438;
+ goto yy50;
+yy315:
+ yych = *++lexer->cursor;
+ if (yych == 'm') goto yy440;
+ goto yy50;
+yy316:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy441;
+ if (yych == 'n') goto yy442;
+ goto yy50;
+yy317:
+ yych = *++lexer->cursor;
+ if (yych <= 'n') {
+ if (yych == 'l') goto yy443;
+ goto yy50;
+ } else {
+ if (yych <= 'o') goto yy444;
+ if (yych == 't') goto yy445;
+ goto yy50;
+ }
+yy318:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy446;
+ goto yy50;
+yy319:
+ yych = *++lexer->cursor;
+ if (yych == 'q') goto yy447;
+ goto yy50;
+yy320:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy449;
+ if (yych == 't') goto yy450;
+ goto yy50;
+yy321:
+ yych = *++lexer->cursor;
+ if (yych <= 'n') {
+ if (yych == 'e') goto yy451;
+ goto yy50;
+ } else {
+ if (yych <= 'o') goto yy452;
+ if (yych == 't') goto yy453;
+ goto yy50;
+ }
+yy322:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy454;
+ goto yy50;
+yy323:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy455;
+ goto yy50;
+yy324:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy457;
+ goto yy50;
+yy325:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy459;
+ goto yy50;
+yy326:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy460;
+ if (yych == 'o') goto yy461;
+ goto yy50;
+yy327:
+ yych = *++lexer->cursor;
+ if (yych <= 's') {
+ if (yych == 'h') goto yy462;
+ goto yy50;
+ } else {
+ if (yych <= 't') goto yy463;
+ if (yych <= 'u') goto yy464;
+ goto yy50;
+ }
+yy328:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy465;
+ goto yy50;
+yy329:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy466;
+ goto yy50;
+yy330:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy467;
+ goto yy50;
+yy331:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy468;
+ if (yych == 'n') goto yy469;
+ goto yy50;
+yy332:
+ yych = *++lexer->cursor;
+ if (yych <= 'n') {
+ if (yych == 'l') goto yy470;
+ goto yy50;
+ } else {
+ if (yych <= 'o') goto yy471;
+ if (yych == 't') goto yy472;
+ goto yy50;
+ }
+yy333:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy473;
+ goto yy50;
+yy334:
+ yych = *++lexer->cursor;
+ if (yych == 'q') goto yy474;
+ if (yych == 'x') goto yy476;
+ goto yy50;
+yy335:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy477;
+ if (yych == 't') goto yy478;
+ goto yy50;
+yy336:
+ yych = *++lexer->cursor;
+ if (yych <= 'n') {
+ if (yych == 'e') goto yy479;
+ goto yy50;
+ } else {
+ if (yych <= 'o') goto yy480;
+ if (yych == 't') goto yy481;
+ goto yy50;
+ }
+yy337:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy482;
+ goto yy50;
+yy338:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy483;
+ goto yy50;
+yy339:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy485;
+ goto yy50;
+yy340:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy487;
+ goto yy50;
+yy341:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy488;
+ if (yych == 'o') goto yy489;
+ goto yy50;
+yy342:
+ yych = *++lexer->cursor;
+ if (yych <= 's') {
+ if (yych == 'h') goto yy490;
+ goto yy50;
+ } else {
+ if (yych <= 't') goto yy491;
+ if (yych <= 'u') goto yy492;
+ goto yy50;
+ }
+yy343:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy493;
+ goto yy50;
+yy344:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy494;
+ goto yy50;
+yy345:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy495;
+ goto yy50;
+yy346:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy496;
+ goto yy50;
+yy347:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy498;
+ goto yy50;
+yy348:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 451 "src/wast-lexer.cc"
+ { RETURN(INPUT); }
+#line 2786 "src/prebuilt/wast-lexer-gen.cc"
+yy350:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy499;
+ goto yy50;
+yy351:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 427 "src/wast-lexer.cc"
+ { RETURN(LOCAL); }
+#line 2798 "src/prebuilt/wast-lexer-gen.cc"
+yy353:
+ yych = *++lexer->cursor;
+ if (yych == 'y') goto yy501;
+ goto yy50;
+yy354:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy503;
+ goto yy50;
+yy355:
+ yych = *++lexer->cursor;
+ if (yych == 'x') goto yy505;
+ goto yy50;
+yy356:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy506;
+ goto yy50;
+yy357:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy508;
+ goto yy50;
+yy358:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 425 "src/wast-lexer.cc"
+ { RETURN(PARAM); }
+#line 2826 "src/prebuilt/wast-lexer-gen.cc"
+yy360:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy510;
+ goto yy50;
+yy361:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy511;
+ goto yy50;
+yy362:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy513;
+ goto yy50;
+yy363:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy515;
+ goto yy50;
+yy364:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy517;
+ goto yy50;
+yy365:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy518;
+ goto yy50;
+yy366:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 432 "src/wast-lexer.cc"
+ { RETURN(START); }
+#line 2858 "src/prebuilt/wast-lexer-gen.cc"
+yy368:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 430 "src/wast-lexer.cc"
+ { RETURN(TABLE); }
+#line 2866 "src/prebuilt/wast-lexer-gen.cc"
+yy370:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy519;
+ goto yy50;
+yy371:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy520;
+ goto yy50;
+yy372:
+ yych = *++lexer->cursor;
+ if (yych <= '/') goto yy50;
+ if (yych <= '0') goto yy521;
+ if (yych <= '9') goto yy523;
+ goto yy50;
+yy373:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy525;
+ goto yy50;
+yy374:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy527;
+ goto yy50;
+yy375:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy528;
+ goto yy50;
+yy376:
+ yych = *++lexer->cursor;
+ if (yych <= 'l') goto yy50;
+ if (yych <= 'm') goto yy529;
+ if (yych <= 'n') goto yy530;
+ goto yy50;
+yy377:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy531;
+ goto yy50;
+yy378:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 437 "src/wast-lexer.cc"
+ { RETURN(EXPORT); }
+#line 2910 "src/prebuilt/wast-lexer-gen.cc"
+yy380:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy532;
+ goto yy50;
+yy381:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy534;
+ goto yy50;
+yy382:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy536;
+ goto yy50;
+yy383:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy537;
+ if (yych == 'p') goto yy538;
+ goto yy50;
+yy384:
+ yych = *++lexer->cursor;
+ if (yych == 'm') goto yy539;
+ goto yy50;
+yy385:
+ yych = *++lexer->cursor;
+ if (yych == 'v') goto yy540;
+ goto yy50;
+yy386:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 382 "src/wast-lexer.cc"
+ { OPCODE(F32Eq); RETURN(COMPARE); }
+#line 2943 "src/prebuilt/wast-lexer-gen.cc"
+yy388:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy542;
+ goto yy50;
+yy389:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 392 "src/wast-lexer.cc"
+ { OPCODE(F32Ge); RETURN(COMPARE); }
+#line 2955 "src/prebuilt/wast-lexer-gen.cc"
+yy391:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 390 "src/wast-lexer.cc"
+ { OPCODE(F32Gt); RETURN(COMPARE); }
+#line 2963 "src/prebuilt/wast-lexer-gen.cc"
+yy393:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 388 "src/wast-lexer.cc"
+ { OPCODE(F32Le); RETURN(COMPARE); }
+#line 2971 "src/prebuilt/wast-lexer-gen.cc"
+yy395:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy543;
+ goto yy50;
+yy396:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 386 "src/wast-lexer.cc"
+ { OPCODE(F32Lt); RETURN(COMPARE); }
+#line 2983 "src/prebuilt/wast-lexer-gen.cc"
+yy398:
+ yych = *++lexer->cursor;
+ if (yych == 'x') goto yy544;
+ goto yy50;
+yy399:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy546;
+ goto yy50;
+yy400:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy548;
+ goto yy50;
+yy401:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= '[') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy402;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych != ',') goto yy49;
+ } else {
+ if (yych <= ';') goto yy402;
+ if (yych <= 'Z') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= 'g') {
+ if (yych <= '`') {
+ if (yych != ']') goto yy49;
+ } else {
+ if (yych <= 'a') goto yy550;
+ if (yych <= 'f') goto yy49;
+ goto yy551;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy402:
+#line 384 "src/wast-lexer.cc"
+ { OPCODE(F32Ne); RETURN(COMPARE); }
+#line 3034 "src/prebuilt/wast-lexer-gen.cc"
+yy403:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy553;
+ goto yy50;
+yy404:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy554;
+ goto yy50;
+yy405:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy555;
+ goto yy50;
+yy406:
+ yych = *++lexer->cursor;
+ if (yych == 'b') goto yy556;
+ goto yy50;
+yy407:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy558;
+ goto yy50;
+yy408:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy559;
+ goto yy50;
+yy409:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy561;
+ goto yy50;
+yy410:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy563;
+ goto yy50;
+yy411:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy564;
+ if (yych == 'p') goto yy565;
+ goto yy50;
+yy412:
+ yych = *++lexer->cursor;
+ if (yych == 'v') goto yy566;
+ goto yy50;
+yy413:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 383 "src/wast-lexer.cc"
+ { OPCODE(F64Eq); RETURN(COMPARE); }
+#line 3083 "src/prebuilt/wast-lexer-gen.cc"
+yy415:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy568;
+ goto yy50;
+yy416:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 393 "src/wast-lexer.cc"
+ { OPCODE(F64Ge); RETURN(COMPARE); }
+#line 3095 "src/prebuilt/wast-lexer-gen.cc"
+yy418:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 391 "src/wast-lexer.cc"
+ { OPCODE(F64Gt); RETURN(COMPARE); }
+#line 3103 "src/prebuilt/wast-lexer-gen.cc"
+yy420:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 389 "src/wast-lexer.cc"
+ { OPCODE(F64Le); RETURN(COMPARE); }
+#line 3111 "src/prebuilt/wast-lexer-gen.cc"
+yy422:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy569;
+ goto yy50;
+yy423:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 387 "src/wast-lexer.cc"
+ { OPCODE(F64Lt); RETURN(COMPARE); }
+#line 3123 "src/prebuilt/wast-lexer-gen.cc"
+yy425:
+ yych = *++lexer->cursor;
+ if (yych == 'x') goto yy570;
+ goto yy50;
+yy426:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy572;
+ goto yy50;
+yy427:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy574;
+ goto yy50;
+yy428:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= '[') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy429;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ':') {
+ if (yych != ',') goto yy49;
+ } else {
+ if (yych <= ';') goto yy429;
+ if (yych <= 'Z') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= 'g') {
+ if (yych <= '`') {
+ if (yych != ']') goto yy49;
+ } else {
+ if (yych <= 'a') goto yy576;
+ if (yych <= 'f') goto yy49;
+ goto yy577;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy429:
+#line 385 "src/wast-lexer.cc"
+ { OPCODE(F64Ne); RETURN(COMPARE); }
+#line 3174 "src/prebuilt/wast-lexer-gen.cc"
+yy430:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy579;
+ goto yy50;
+yy431:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy580;
+ goto yy50;
+yy432:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy581;
+ goto yy50;
+yy433:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy582;
+ goto yy50;
+yy434:
+ yych = *++lexer->cursor;
+ if (yych == 'b') goto yy583;
+ goto yy50;
+yy435:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy585;
+ goto yy50;
+yy436:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy586;
+ goto yy50;
+yy437:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy587;
+ goto yy50;
+yy438:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 428 "src/wast-lexer.cc"
+ { RETURN(GLOBAL); }
+#line 3214 "src/prebuilt/wast-lexer-gen.cc"
+yy440:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy588;
+ goto yy50;
+yy441:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy589;
+ goto yy50;
+yy442:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy591;
+ goto yy50;
+yy443:
+ yych = *++lexer->cursor;
+ if (yych == 'z') goto yy593;
+ goto yy50;
+yy444:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy595;
+ goto yy50;
+yy445:
+ yych = *++lexer->cursor;
+ if (yych == 'z') goto yy596;
+ goto yy50;
+yy446:
+ yych = *++lexer->cursor;
+ if (yych == 'v') goto yy598;
+ goto yy50;
+yy447:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= 'Z') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy448;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych != ';') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= 'z') {
+ if (yych <= '\\') {
+ if (yych >= '\\') goto yy49;
+ } else {
+ if (yych <= ']') goto yy448;
+ if (yych <= 'y') goto yy49;
+ goto yy599;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych >= '|') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy448:
+#line 362 "src/wast-lexer.cc"
+ { OPCODE(I32Eq); RETURN(COMPARE); }
+#line 3280 "src/prebuilt/wast-lexer-gen.cc"
+yy449:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy601;
+ goto yy50;
+yy450:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy602;
+ goto yy50;
+yy451:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy603;
+ goto yy50;
+yy452:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy604;
+ goto yy50;
+yy453:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy605;
+ goto yy50;
+yy454:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy606;
+ goto yy50;
+yy455:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 364 "src/wast-lexer.cc"
+ { OPCODE(I32Ne); RETURN(COMPARE); }
+#line 3312 "src/prebuilt/wast-lexer-gen.cc"
+yy457:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 334 "src/wast-lexer.cc"
+ { OPCODE(I32Or); RETURN(BINARY); }
+#line 3320 "src/prebuilt/wast-lexer-gen.cc"
+yy459:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy608;
+ goto yy50;
+yy460:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy609;
+ if (yych == 'm') goto yy610;
+ goto yy50;
+yy461:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy611;
+ goto yy50;
+yy462:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy612;
+ if (yych == 'r') goto yy614;
+ goto yy50;
+yy463:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy615;
+ goto yy50;
+yy464:
+ yych = *++lexer->cursor;
+ if (yych == 'b') goto yy616;
+ goto yy50;
+yy465:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy618;
+ goto yy50;
+yy466:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy619;
+ goto yy50;
+yy467:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy620;
+ goto yy50;
+yy468:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy622;
+ goto yy50;
+yy469:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy624;
+ goto yy50;
+yy470:
+ yych = *++lexer->cursor;
+ if (yych == 'z') goto yy626;
+ goto yy50;
+yy471:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy628;
+ goto yy50;
+yy472:
+ yych = *++lexer->cursor;
+ if (yych == 'z') goto yy629;
+ goto yy50;
+yy473:
+ yych = *++lexer->cursor;
+ if (yych == 'v') goto yy631;
+ goto yy50;
+yy474:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= 'Z') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy475;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych != ';') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= 'z') {
+ if (yych <= '\\') {
+ if (yych >= '\\') goto yy49;
+ } else {
+ if (yych <= ']') goto yy475;
+ if (yych <= 'y') goto yy49;
+ goto yy632;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych >= '|') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy475:
+#line 363 "src/wast-lexer.cc"
+ { OPCODE(I64Eq); RETURN(COMPARE); }
+#line 3420 "src/prebuilt/wast-lexer-gen.cc"
+yy476:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy634;
+ goto yy50;
+yy477:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy635;
+ goto yy50;
+yy478:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy636;
+ goto yy50;
+yy479:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy637;
+ goto yy50;
+yy480:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy638;
+ goto yy50;
+yy481:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy639;
+ goto yy50;
+yy482:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy640;
+ goto yy50;
+yy483:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 365 "src/wast-lexer.cc"
+ { OPCODE(I64Ne); RETURN(COMPARE); }
+#line 3456 "src/prebuilt/wast-lexer-gen.cc"
+yy485:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 335 "src/wast-lexer.cc"
+ { OPCODE(I64Or); RETURN(BINARY); }
+#line 3464 "src/prebuilt/wast-lexer-gen.cc"
+yy487:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy642;
+ goto yy50;
+yy488:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy643;
+ if (yych == 'm') goto yy644;
+ goto yy50;
+yy489:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy645;
+ goto yy50;
+yy490:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy646;
+ if (yych == 'r') goto yy648;
+ goto yy50;
+yy491:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy649;
+ goto yy50;
+yy492:
+ yych = *++lexer->cursor;
+ if (yych == 'b') goto yy650;
+ goto yy50;
+yy493:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy652;
+ goto yy50;
+yy494:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy653;
+ goto yy50;
+yy495:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy655;
+ goto yy50;
+yy496:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 436 "src/wast-lexer.cc"
+ { RETURN(IMPORT); }
+#line 3510 "src/prebuilt/wast-lexer-gen.cc"
+yy498:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy657;
+ goto yy50;
+yy499:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 439 "src/wast-lexer.cc"
+ { RETURN(INVOKE); }
+#line 3522 "src/prebuilt/wast-lexer-gen.cc"
+yy501:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 431 "src/wast-lexer.cc"
+ { RETURN(MEMORY); }
+#line 3530 "src/prebuilt/wast-lexer-gen.cc"
+yy503:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 429 "src/wast-lexer.cc"
+ { RETURN(MODULE); }
+#line 3538 "src/prebuilt/wast-lexer-gen.cc"
+yy505:
+ yych = *++lexer->cursor;
+ if (yych <= '@') {
+ if (yych <= '/') goto yy50;
+ if (yych <= '9') goto yy658;
+ goto yy50;
+ } else {
+ if (yych <= 'F') goto yy658;
+ if (yych <= '`') goto yy50;
+ if (yych <= 'f') goto yy658;
+ goto yy50;
+ }
+yy506:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= '<') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy507;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych != ';') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= 'Z') {
+ if (yych <= '=') goto yy660;
+ goto yy49;
+ } else {
+ if (yych == '\\') goto yy49;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy507:
+#line 435 "src/wast-lexer.cc"
+ { RETURN(OFFSET); }
+#line 3587 "src/prebuilt/wast-lexer-gen.cc"
+yy508:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 452 "src/wast-lexer.cc"
+ { RETURN(OUTPUT); }
+#line 3595 "src/prebuilt/wast-lexer-gen.cc"
+yy510:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy661;
+ goto yy50;
+yy511:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 426 "src/wast-lexer.cc"
+ { RETURN(RESULT); }
+#line 3607 "src/prebuilt/wast-lexer-gen.cc"
+yy513:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 261 "src/wast-lexer.cc"
+ { RETURN(RETURN); }
+#line 3615 "src/prebuilt/wast-lexer-gen.cc"
+yy515:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 419 "src/wast-lexer.cc"
+ { RETURN(SELECT); }
+#line 3623 "src/prebuilt/wast-lexer-gen.cc"
+yy517:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy662;
+ goto yy50;
+yy518:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy663;
+ goto yy50;
+yy519:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy664;
+ goto yy50;
+yy520:
+ yych = *++lexer->cursor;
+ if (yych == 'h') goto yy665;
+ goto yy50;
+yy521:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= ';') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy522;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= '/') {
+ if (yych != ',') goto yy49;
+ } else {
+ if (yych <= '9') goto yy523;
+ if (yych <= ':') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= 'x') {
+ if (yych <= '\\') {
+ if (yych != '[') goto yy49;
+ } else {
+ if (yych <= ']') goto yy522;
+ if (yych <= 'w') goto yy49;
+ goto yy666;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy522:
+#line 291 "src/wast-lexer.cc"
+ { TEXT_AT(6); RETURN(ALIGN_EQ_NAT); }
+#line 3678 "src/prebuilt/wast-lexer-gen.cc"
+yy523:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+ if (yych <= ':') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych <= ' ') goto yy522;
+ goto yy49;
+ } else {
+ if (yych <= '"') goto yy522;
+ if (yych <= '\'') goto yy49;
+ goto yy522;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ goto yy522;
+ } else {
+ if (yych <= '/') goto yy49;
+ if (yych <= '9') goto yy523;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= 'Z') {
+ if (yych <= ';') goto yy522;
+ goto yy49;
+ } else {
+ if (yych == '\\') goto yy49;
+ goto yy522;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych == '{') goto yy522;
+ goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ goto yy522;
+ }
+ }
+ }
+yy525:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 244 "src/wast-lexer.cc"
+ { RETURN(ANYFUNC); }
+#line 3729 "src/prebuilt/wast-lexer-gen.cc"
+yy527:
+ yych = *++lexer->cursor;
+ switch (yych) {
+ case 'e': goto yy667;
+ case 'i': goto yy668;
+ case 'm': goto yy669;
+ case 'r': goto yy670;
+ case 't': goto yy671;
+ case 'u': goto yy672;
+ default: goto yy50;
+ }
+yy528:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy673;
+ goto yy50;
+yy529:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy675;
+ goto yy50;
+yy530:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy676;
+ goto yy50;
+yy531:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy677;
+ goto yy50;
+yy532:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 306 "src/wast-lexer.cc"
+ { OPCODE(F32Abs); RETURN(UNARY); }
+#line 3764 "src/prebuilt/wast-lexer-gen.cc"
+yy534:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 348 "src/wast-lexer.cc"
+ { OPCODE(F32Add); RETURN(BINARY); }
+#line 3772 "src/prebuilt/wast-lexer-gen.cc"
+yy536:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy678;
+ goto yy50;
+yy537:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy680;
+ if (yych == 'v') goto yy681;
+ goto yy50;
+yy538:
+ yych = *++lexer->cursor;
+ if (yych == 'y') goto yy682;
+ goto yy50;
+yy539:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy683;
+ goto yy50;
+yy540:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 354 "src/wast-lexer.cc"
+ { OPCODE(F32Div); RETURN(BINARY); }
+#line 3797 "src/prebuilt/wast-lexer-gen.cc"
+yy542:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy684;
+ goto yy50;
+yy543:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy685;
+ goto yy50;
+yy544:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 358 "src/wast-lexer.cc"
+ { OPCODE(F32Max); RETURN(BINARY); }
+#line 3813 "src/prebuilt/wast-lexer-gen.cc"
+yy546:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 356 "src/wast-lexer.cc"
+ { OPCODE(F32Min); RETURN(BINARY); }
+#line 3821 "src/prebuilt/wast-lexer-gen.cc"
+yy548:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 352 "src/wast-lexer.cc"
+ { OPCODE(F32Mul); RETURN(BINARY); }
+#line 3829 "src/prebuilt/wast-lexer-gen.cc"
+yy550:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy687;
+ goto yy50;
+yy551:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 304 "src/wast-lexer.cc"
+ { OPCODE(F32Neg); RETURN(UNARY); }
+#line 3841 "src/prebuilt/wast-lexer-gen.cc"
+yy553:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy688;
+ goto yy50;
+yy554:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy689;
+ goto yy50;
+yy555:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy691;
+ goto yy50;
+yy556:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 350 "src/wast-lexer.cc"
+ { OPCODE(F32Sub); RETURN(BINARY); }
+#line 3861 "src/prebuilt/wast-lexer-gen.cc"
+yy558:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy692;
+ goto yy50;
+yy559:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 307 "src/wast-lexer.cc"
+ { OPCODE(F64Abs); RETURN(UNARY); }
+#line 3873 "src/prebuilt/wast-lexer-gen.cc"
+yy561:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 349 "src/wast-lexer.cc"
+ { OPCODE(F64Add); RETURN(BINARY); }
+#line 3881 "src/prebuilt/wast-lexer-gen.cc"
+yy563:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy693;
+ goto yy50;
+yy564:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy695;
+ if (yych == 'v') goto yy696;
+ goto yy50;
+yy565:
+ yych = *++lexer->cursor;
+ if (yych == 'y') goto yy697;
+ goto yy50;
+yy566:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 355 "src/wast-lexer.cc"
+ { OPCODE(F64Div); RETURN(BINARY); }
+#line 3902 "src/prebuilt/wast-lexer-gen.cc"
+yy568:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy698;
+ goto yy50;
+yy569:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy699;
+ goto yy50;
+yy570:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 359 "src/wast-lexer.cc"
+ { OPCODE(F64Max); RETURN(BINARY); }
+#line 3918 "src/prebuilt/wast-lexer-gen.cc"
+yy572:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 357 "src/wast-lexer.cc"
+ { OPCODE(F64Min); RETURN(BINARY); }
+#line 3926 "src/prebuilt/wast-lexer-gen.cc"
+yy574:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 353 "src/wast-lexer.cc"
+ { OPCODE(F64Mul); RETURN(BINARY); }
+#line 3934 "src/prebuilt/wast-lexer-gen.cc"
+yy576:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy701;
+ goto yy50;
+yy577:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 305 "src/wast-lexer.cc"
+ { OPCODE(F64Neg); RETURN(UNARY); }
+#line 3946 "src/prebuilt/wast-lexer-gen.cc"
+yy579:
+ yych = *++lexer->cursor;
+ if (yych == 'm') goto yy702;
+ goto yy50;
+yy580:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy703;
+ goto yy50;
+yy581:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy704;
+ goto yy50;
+yy582:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy706;
+ goto yy50;
+yy583:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 351 "src/wast-lexer.cc"
+ { OPCODE(F64Sub); RETURN(BINARY); }
+#line 3970 "src/prebuilt/wast-lexer-gen.cc"
+yy585:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy707;
+ goto yy50;
+yy586:
+ yych = *++lexer->cursor;
+ if (yych == 'b') goto yy708;
+ goto yy50;
+yy587:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy709;
+ goto yy50;
+yy588:
+ yych = *++lexer->cursor;
+ if (yych == 'm') goto yy710;
+ goto yy50;
+yy589:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 318 "src/wast-lexer.cc"
+ { OPCODE(I32Add); RETURN(BINARY); }
+#line 3994 "src/prebuilt/wast-lexer-gen.cc"
+yy591:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 332 "src/wast-lexer.cc"
+ { OPCODE(I32And); RETURN(BINARY); }
+#line 4002 "src/prebuilt/wast-lexer-gen.cc"
+yy593:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 298 "src/wast-lexer.cc"
+ { OPCODE(I32Clz); RETURN(UNARY); }
+#line 4010 "src/prebuilt/wast-lexer-gen.cc"
+yy595:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy711;
+ goto yy50;
+yy596:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 300 "src/wast-lexer.cc"
+ { OPCODE(I32Ctz); RETURN(UNARY); }
+#line 4022 "src/prebuilt/wast-lexer-gen.cc"
+yy598:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy712;
+ goto yy50;
+yy599:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 296 "src/wast-lexer.cc"
+ { OPCODE(I32Eqz); RETURN(CONVERT); }
+#line 4034 "src/prebuilt/wast-lexer-gen.cc"
+yy601:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy713;
+ if (yych == 'u') goto yy715;
+ goto yy50;
+yy602:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy717;
+ if (yych == 'u') goto yy719;
+ goto yy50;
+yy603:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy721;
+ if (yych == 'u') goto yy723;
+ goto yy50;
+yy604:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy725;
+ goto yy50;
+yy605:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy727;
+ if (yych == 'u') goto yy729;
+ goto yy50;
+yy606:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 322 "src/wast-lexer.cc"
+ { OPCODE(I32Mul); RETURN(BINARY); }
+#line 4066 "src/prebuilt/wast-lexer-gen.cc"
+yy608:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy731;
+ goto yy50;
+yy609:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy732;
+ goto yy50;
+yy610:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy733;
+ goto yy50;
+yy611:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy734;
+ if (yych == 'r') goto yy736;
+ goto yy50;
+yy612:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 338 "src/wast-lexer.cc"
+ { OPCODE(I32Shl); RETURN(BINARY); }
+#line 4091 "src/prebuilt/wast-lexer-gen.cc"
+yy614:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy738;
+ goto yy50;
+yy615:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy739;
+ goto yy50;
+yy616:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 320 "src/wast-lexer.cc"
+ { OPCODE(I32Sub); RETURN(BINARY); }
+#line 4107 "src/prebuilt/wast-lexer-gen.cc"
+yy618:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy740;
+ goto yy50;
+yy619:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy741;
+ goto yy50;
+yy620:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 336 "src/wast-lexer.cc"
+ { OPCODE(I32Xor); RETURN(BINARY); }
+#line 4123 "src/prebuilt/wast-lexer-gen.cc"
+yy622:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 319 "src/wast-lexer.cc"
+ { OPCODE(I64Add); RETURN(BINARY); }
+#line 4131 "src/prebuilt/wast-lexer-gen.cc"
+yy624:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 333 "src/wast-lexer.cc"
+ { OPCODE(I64And); RETURN(BINARY); }
+#line 4139 "src/prebuilt/wast-lexer-gen.cc"
+yy626:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 299 "src/wast-lexer.cc"
+ { OPCODE(I64Clz); RETURN(UNARY); }
+#line 4147 "src/prebuilt/wast-lexer-gen.cc"
+yy628:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy742;
+ goto yy50;
+yy629:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 301 "src/wast-lexer.cc"
+ { OPCODE(I64Ctz); RETURN(UNARY); }
+#line 4159 "src/prebuilt/wast-lexer-gen.cc"
+yy631:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy743;
+ goto yy50;
+yy632:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 297 "src/wast-lexer.cc"
+ { OPCODE(I64Eqz); RETURN(CONVERT); }
+#line 4171 "src/prebuilt/wast-lexer-gen.cc"
+yy634:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy744;
+ goto yy50;
+yy635:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy745;
+ if (yych == 'u') goto yy747;
+ goto yy50;
+yy636:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy749;
+ if (yych == 'u') goto yy751;
+ goto yy50;
+yy637:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy753;
+ if (yych == 'u') goto yy755;
+ goto yy50;
+yy638:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy757;
+ goto yy50;
+yy639:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy759;
+ if (yych == 'u') goto yy761;
+ goto yy50;
+yy640:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 323 "src/wast-lexer.cc"
+ { OPCODE(I64Mul); RETURN(BINARY); }
+#line 4207 "src/prebuilt/wast-lexer-gen.cc"
+yy642:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy763;
+ goto yy50;
+yy643:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy764;
+ goto yy50;
+yy644:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy765;
+ goto yy50;
+yy645:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy766;
+ if (yych == 'r') goto yy768;
+ goto yy50;
+yy646:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 339 "src/wast-lexer.cc"
+ { OPCODE(I64Shl); RETURN(BINARY); }
+#line 4232 "src/prebuilt/wast-lexer-gen.cc"
+yy648:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy770;
+ goto yy50;
+yy649:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy771;
+ goto yy50;
+yy650:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 321 "src/wast-lexer.cc"
+ { OPCODE(I64Sub); RETURN(BINARY); }
+#line 4248 "src/prebuilt/wast-lexer-gen.cc"
+yy652:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy772;
+ goto yy50;
+yy653:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 337 "src/wast-lexer.cc"
+ { OPCODE(I64Xor); RETURN(BINARY); }
+#line 4260 "src/prebuilt/wast-lexer-gen.cc"
+yy655:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 249 "src/wast-lexer.cc"
+ { RETURN(IF); }
+#line 4268 "src/prebuilt/wast-lexer-gen.cc"
+yy657:
+ yych = *++lexer->cursor;
+ if (yych == 'y') goto yy773;
+ goto yy50;
+yy658:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+ if (yych <= '@') {
+ if (yych <= '+') {
+ if (yych <= '"') {
+ if (yych == '!') goto yy49;
+ goto yy196;
+ } else {
+ if (yych <= '\'') goto yy49;
+ if (yych <= ')') goto yy196;
+ goto yy49;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= ',') goto yy196;
+ if (yych <= '/') goto yy49;
+ goto yy658;
+ } else {
+ if (yych == ';') goto yy196;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= '[') {
+ if (yych <= 'F') goto yy658;
+ if (yych <= 'Z') goto yy49;
+ goto yy196;
+ } else {
+ if (yych == ']') goto yy196;
+ goto yy49;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych <= 'f') goto yy658;
+ if (yych <= 'z') goto yy49;
+ goto yy196;
+ } else {
+ if (yych == '}') goto yy196;
+ if (yych <= '~') goto yy49;
+ goto yy196;
+ }
+ }
+ }
+yy660:
+ yych = *++lexer->cursor;
+ if (yych <= '/') goto yy50;
+ if (yych <= '0') goto yy774;
+ if (yych <= '9') goto yy776;
+ goto yy50;
+yy661:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy778;
+ goto yy50;
+yy662:
+ yych = *++lexer->cursor;
+ if (yych == 'b') goto yy780;
+ goto yy50;
+yy663:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy781;
+ goto yy50;
+yy664:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy782;
+ goto yy50;
+yy665:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy783;
+ goto yy50;
+yy666:
+ yych = *++lexer->cursor;
+ if (yych <= '@') {
+ if (yych <= '/') goto yy50;
+ if (yych <= '9') goto yy784;
+ goto yy50;
+ } else {
+ if (yych <= 'F') goto yy784;
+ if (yych <= '`') goto yy50;
+ if (yych <= 'f') goto yy784;
+ goto yy50;
+ }
+yy667:
+ yych = *++lexer->cursor;
+ if (yych == 'x') goto yy786;
+ goto yy50;
+yy668:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy787;
+ goto yy50;
+yy669:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy788;
+ goto yy50;
+yy670:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy789;
+ goto yy50;
+yy671:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy790;
+ goto yy50;
+yy672:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy791;
+ goto yy50;
+yy673:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 255 "src/wast-lexer.cc"
+ { RETURN(BR_TABLE); }
+#line 4388 "src/prebuilt/wast-lexer-gen.cc"
+yy675:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy792;
+ goto yy50;
+yy676:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy793;
+ goto yy50;
+yy677:
+ yych = *++lexer->cursor;
+ if (yych == 'm') goto yy794;
+ goto yy50;
+yy678:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 310 "src/wast-lexer.cc"
+ { OPCODE(F32Ceil); RETURN(UNARY); }
+#line 4408 "src/prebuilt/wast-lexer-gen.cc"
+yy680:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy795;
+ goto yy50;
+yy681:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy797;
+ goto yy50;
+yy682:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy798;
+ goto yy50;
+yy683:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy799;
+ goto yy50;
+yy684:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy800;
+ goto yy50;
+yy685:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 269 "src/wast-lexer.cc"
+ { OPCODE(F32Load); RETURN(LOAD); }
+#line 4436 "src/prebuilt/wast-lexer-gen.cc"
+yy687:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy802;
+ goto yy50;
+yy688:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy803;
+ goto yy50;
+yy689:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 308 "src/wast-lexer.cc"
+ { OPCODE(F32Sqrt); RETURN(UNARY); }
+#line 4452 "src/prebuilt/wast-lexer-gen.cc"
+yy691:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy804;
+ goto yy50;
+yy692:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy806;
+ goto yy50;
+yy693:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 311 "src/wast-lexer.cc"
+ { OPCODE(F64Ceil); RETURN(UNARY); }
+#line 4468 "src/prebuilt/wast-lexer-gen.cc"
+yy695:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy808;
+ goto yy50;
+yy696:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy810;
+ goto yy50;
+yy697:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy811;
+ goto yy50;
+yy698:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy812;
+ goto yy50;
+yy699:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 270 "src/wast-lexer.cc"
+ { OPCODE(F64Load); RETURN(LOAD); }
+#line 4492 "src/prebuilt/wast-lexer-gen.cc"
+yy701:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy814;
+ goto yy50;
+yy702:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy815;
+ goto yy50;
+yy703:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy816;
+ goto yy50;
+yy704:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 309 "src/wast-lexer.cc"
+ { OPCODE(F64Sqrt); RETURN(UNARY); }
+#line 4512 "src/prebuilt/wast-lexer-gen.cc"
+yy706:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy817;
+ goto yy50;
+yy707:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy819;
+ goto yy50;
+yy708:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy821;
+ goto yy50;
+yy709:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy822;
+ goto yy50;
+yy710:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy824;
+ goto yy50;
+yy711:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy825;
+ goto yy50;
+yy712:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy827;
+ if (yych == 'u') goto yy829;
+ goto yy50;
+yy713:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 378 "src/wast-lexer.cc"
+ { OPCODE(I32GeS); RETURN(COMPARE); }
+#line 4549 "src/prebuilt/wast-lexer-gen.cc"
+yy715:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 380 "src/wast-lexer.cc"
+ { OPCODE(I32GeU); RETURN(COMPARE); }
+#line 4557 "src/prebuilt/wast-lexer-gen.cc"
+yy717:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 374 "src/wast-lexer.cc"
+ { OPCODE(I32GtS); RETURN(COMPARE); }
+#line 4565 "src/prebuilt/wast-lexer-gen.cc"
+yy719:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 376 "src/wast-lexer.cc"
+ { OPCODE(I32GtU); RETURN(COMPARE); }
+#line 4573 "src/prebuilt/wast-lexer-gen.cc"
+yy721:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 370 "src/wast-lexer.cc"
+ { OPCODE(I32LeS); RETURN(COMPARE); }
+#line 4581 "src/prebuilt/wast-lexer-gen.cc"
+yy723:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 372 "src/wast-lexer.cc"
+ { OPCODE(I32LeU); RETURN(COMPARE); }
+#line 4589 "src/prebuilt/wast-lexer-gen.cc"
+yy725:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= '8') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy726;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= '0') {
+ if (yych != ',') goto yy49;
+ } else {
+ if (yych <= '1') goto yy831;
+ if (yych <= '7') goto yy49;
+ goto yy832;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= 'Z') {
+ if (yych != ';') goto yy49;
+ } else {
+ if (yych == '\\') goto yy49;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy726:
+#line 267 "src/wast-lexer.cc"
+ { OPCODE(I32Load); RETURN(LOAD); }
+#line 4627 "src/prebuilt/wast-lexer-gen.cc"
+yy727:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 366 "src/wast-lexer.cc"
+ { OPCODE(I32LtS); RETURN(COMPARE); }
+#line 4635 "src/prebuilt/wast-lexer-gen.cc"
+yy729:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 368 "src/wast-lexer.cc"
+ { OPCODE(I32LtU); RETURN(COMPARE); }
+#line 4643 "src/prebuilt/wast-lexer-gen.cc"
+yy731:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy833;
+ goto yy50;
+yy732:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy834;
+ goto yy50;
+yy733:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy835;
+ if (yych == 'u') goto yy837;
+ goto yy50;
+yy734:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 344 "src/wast-lexer.cc"
+ { OPCODE(I32Rotl); RETURN(BINARY); }
+#line 4664 "src/prebuilt/wast-lexer-gen.cc"
+yy736:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 346 "src/wast-lexer.cc"
+ { OPCODE(I32Rotr); RETURN(BINARY); }
+#line 4672 "src/prebuilt/wast-lexer-gen.cc"
+yy738:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy839;
+ if (yych == 'u') goto yy841;
+ goto yy50;
+yy739:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy843;
+ goto yy50;
+yy740:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy845;
+ goto yy50;
+yy741:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy846;
+ goto yy50;
+yy742:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy847;
+ goto yy50;
+yy743:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy849;
+ if (yych == 'u') goto yy851;
+ goto yy50;
+yy744:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy853;
+ goto yy50;
+yy745:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 379 "src/wast-lexer.cc"
+ { OPCODE(I64GeS); RETURN(COMPARE); }
+#line 4710 "src/prebuilt/wast-lexer-gen.cc"
+yy747:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 381 "src/wast-lexer.cc"
+ { OPCODE(I64GeU); RETURN(COMPARE); }
+#line 4718 "src/prebuilt/wast-lexer-gen.cc"
+yy749:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 375 "src/wast-lexer.cc"
+ { OPCODE(I64GtS); RETURN(COMPARE); }
+#line 4726 "src/prebuilt/wast-lexer-gen.cc"
+yy751:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 377 "src/wast-lexer.cc"
+ { OPCODE(I64GtU); RETURN(COMPARE); }
+#line 4734 "src/prebuilt/wast-lexer-gen.cc"
+yy753:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 371 "src/wast-lexer.cc"
+ { OPCODE(I64LeS); RETURN(COMPARE); }
+#line 4742 "src/prebuilt/wast-lexer-gen.cc"
+yy755:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 373 "src/wast-lexer.cc"
+ { OPCODE(I64LeU); RETURN(COMPARE); }
+#line 4750 "src/prebuilt/wast-lexer-gen.cc"
+yy757:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= '7') {
+ if (yych <= '+') {
+ if (yych <= '"') {
+ if (yych == '!') goto yy49;
+ } else {
+ if (yych <= '\'') goto yy49;
+ if (yych >= '*') goto yy49;
+ }
+ } else {
+ if (yych <= '1') {
+ if (yych <= ',') goto yy758;
+ if (yych <= '0') goto yy49;
+ goto yy854;
+ } else {
+ if (yych == '3') goto yy855;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= '\\') {
+ if (yych <= ';') {
+ if (yych <= '8') goto yy856;
+ if (yych <= ':') goto yy49;
+ } else {
+ if (yych != '[') goto yy49;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych <= ']') goto yy758;
+ if (yych <= 'z') goto yy49;
+ } else {
+ if (yych == '}') goto yy758;
+ if (yych <= '~') goto yy49;
+ }
+ }
+ }
+yy758:
+#line 268 "src/wast-lexer.cc"
+ { OPCODE(I64Load); RETURN(LOAD); }
+#line 4792 "src/prebuilt/wast-lexer-gen.cc"
+yy759:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 367 "src/wast-lexer.cc"
+ { OPCODE(I64LtS); RETURN(COMPARE); }
+#line 4800 "src/prebuilt/wast-lexer-gen.cc"
+yy761:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 369 "src/wast-lexer.cc"
+ { OPCODE(I64LtU); RETURN(COMPARE); }
+#line 4808 "src/prebuilt/wast-lexer-gen.cc"
+yy763:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy857;
+ goto yy50;
+yy764:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy858;
+ goto yy50;
+yy765:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy859;
+ if (yych == 'u') goto yy861;
+ goto yy50;
+yy766:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 345 "src/wast-lexer.cc"
+ { OPCODE(I64Rotl); RETURN(BINARY); }
+#line 4829 "src/prebuilt/wast-lexer-gen.cc"
+yy768:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 347 "src/wast-lexer.cc"
+ { OPCODE(I64Rotr); RETURN(BINARY); }
+#line 4837 "src/prebuilt/wast-lexer-gen.cc"
+yy770:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy863;
+ if (yych == 'u') goto yy865;
+ goto yy50;
+yy771:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy867;
+ goto yy50;
+yy772:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy869;
+ goto yy50;
+yy773:
+ yych = *++lexer->cursor;
+ if (yybm[0+yych] & 16) {
+ goto yy49;
+ }
+ goto yy186;
+yy774:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= ';') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy775;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= '/') {
+ if (yych != ',') goto yy49;
+ } else {
+ if (yych <= '9') goto yy776;
+ if (yych <= ':') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= 'x') {
+ if (yych <= '\\') {
+ if (yych != '[') goto yy49;
+ } else {
+ if (yych <= ']') goto yy775;
+ if (yych <= 'w') goto yy49;
+ goto yy870;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy775:
+#line 290 "src/wast-lexer.cc"
+ { TEXT_AT(7); RETURN(OFFSET_EQ_NAT); }
+#line 4895 "src/prebuilt/wast-lexer-gen.cc"
+yy776:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+ if (yych <= ':') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych <= ' ') goto yy775;
+ goto yy49;
+ } else {
+ if (yych <= '"') goto yy775;
+ if (yych <= '\'') goto yy49;
+ goto yy775;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ goto yy775;
+ } else {
+ if (yych <= '/') goto yy49;
+ if (yych <= '9') goto yy776;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= 'Z') {
+ if (yych <= ';') goto yy775;
+ goto yy49;
+ } else {
+ if (yych == '\\') goto yy49;
+ goto yy775;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych == '{') goto yy775;
+ goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ goto yy775;
+ }
+ }
+ }
+yy778:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 438 "src/wast-lexer.cc"
+ { RETURN(REGISTER); }
+#line 4946 "src/prebuilt/wast-lexer-gen.cc"
+yy780:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy871;
+ goto yy50;
+yy781:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy872;
+ goto yy50;
+yy782:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy874;
+ goto yy50;
+yy783:
+ yych = *++lexer->cursor;
+ if (yych == 'b') goto yy876;
+ goto yy50;
+yy784:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+ if (yych <= '@') {
+ if (yych <= '+') {
+ if (yych <= '"') {
+ if (yych == '!') goto yy49;
+ goto yy522;
+ } else {
+ if (yych <= '\'') goto yy49;
+ if (yych <= ')') goto yy522;
+ goto yy49;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= ',') goto yy522;
+ if (yych <= '/') goto yy49;
+ goto yy784;
+ } else {
+ if (yych == ';') goto yy522;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= '[') {
+ if (yych <= 'F') goto yy784;
+ if (yych <= 'Z') goto yy49;
+ goto yy522;
+ } else {
+ if (yych == ']') goto yy522;
+ goto yy49;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych <= 'f') goto yy784;
+ if (yych <= 'z') goto yy49;
+ goto yy522;
+ } else {
+ if (yych == '}') goto yy522;
+ if (yych <= '~') goto yy49;
+ goto yy522;
+ }
+ }
+ }
+yy786:
+ yych = *++lexer->cursor;
+ if (yych == 'h') goto yy877;
+ goto yy50;
+yy787:
+ yych = *++lexer->cursor;
+ if (yych == 'v') goto yy878;
+ goto yy50;
+yy788:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy879;
+ goto yy50;
+yy789:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy880;
+ goto yy50;
+yy790:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy881;
+ goto yy50;
+yy791:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy882;
+ goto yy50;
+yy792:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy883;
+ goto yy50;
+yy793:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy884;
+ goto yy50;
+yy794:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy885;
+ goto yy50;
+yy795:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 294 "src/wast-lexer.cc"
+ { TYPE(F32); RETURN(CONST); }
+#line 5052 "src/prebuilt/wast-lexer-gen.cc"
+yy797:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy886;
+ goto yy50;
+yy798:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy887;
+ goto yy50;
+yy799:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy888;
+ goto yy50;
+yy800:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 312 "src/wast-lexer.cc"
+ { OPCODE(F32Floor); RETURN(UNARY); }
+#line 5072 "src/prebuilt/wast-lexer-gen.cc"
+yy802:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy889;
+ goto yy50;
+yy803:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy890;
+ goto yy50;
+yy804:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 273 "src/wast-lexer.cc"
+ { OPCODE(F32Store); RETURN(STORE); }
+#line 5088 "src/prebuilt/wast-lexer-gen.cc"
+yy806:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 314 "src/wast-lexer.cc"
+ { OPCODE(F32Trunc); RETURN(UNARY); }
+#line 5096 "src/prebuilt/wast-lexer-gen.cc"
+yy808:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 295 "src/wast-lexer.cc"
+ { TYPE(F64); RETURN(CONST); }
+#line 5104 "src/prebuilt/wast-lexer-gen.cc"
+yy810:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy891;
+ goto yy50;
+yy811:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy892;
+ goto yy50;
+yy812:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 313 "src/wast-lexer.cc"
+ { OPCODE(F64Floor); RETURN(UNARY); }
+#line 5120 "src/prebuilt/wast-lexer-gen.cc"
+yy814:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy893;
+ goto yy50;
+yy815:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy894;
+ goto yy50;
+yy816:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy895;
+ goto yy50;
+yy817:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 274 "src/wast-lexer.cc"
+ { OPCODE(F64Store); RETURN(STORE); }
+#line 5140 "src/prebuilt/wast-lexer-gen.cc"
+yy819:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 315 "src/wast-lexer.cc"
+ { OPCODE(F64Trunc); RETURN(UNARY); }
+#line 5148 "src/prebuilt/wast-lexer-gen.cc"
+yy821:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy896;
+ goto yy50;
+yy822:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 262 "src/wast-lexer.cc"
+ { RETURN(GET_LOCAL); }
+#line 5160 "src/prebuilt/wast-lexer-gen.cc"
+yy824:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy898;
+ goto yy50;
+yy825:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 292 "src/wast-lexer.cc"
+ { TYPE(I32); RETURN(CONST); }
+#line 5172 "src/prebuilt/wast-lexer-gen.cc"
+yy827:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 324 "src/wast-lexer.cc"
+ { OPCODE(I32DivS); RETURN(BINARY); }
+#line 5180 "src/prebuilt/wast-lexer-gen.cc"
+yy829:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 326 "src/wast-lexer.cc"
+ { OPCODE(I32DivU); RETURN(BINARY); }
+#line 5188 "src/prebuilt/wast-lexer-gen.cc"
+yy831:
+ yych = *++lexer->cursor;
+ if (yych == '6') goto yy899;
+ goto yy50;
+yy832:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy900;
+ goto yy50;
+yy833:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy901;
+ goto yy50;
+yy834:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy903;
+ goto yy50;
+yy835:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 328 "src/wast-lexer.cc"
+ { OPCODE(I32RemS); RETURN(BINARY); }
+#line 5212 "src/prebuilt/wast-lexer-gen.cc"
+yy837:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 330 "src/wast-lexer.cc"
+ { OPCODE(I32RemU); RETURN(BINARY); }
+#line 5220 "src/prebuilt/wast-lexer-gen.cc"
+yy839:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 340 "src/wast-lexer.cc"
+ { OPCODE(I32ShrS); RETURN(BINARY); }
+#line 5228 "src/prebuilt/wast-lexer-gen.cc"
+yy841:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 342 "src/wast-lexer.cc"
+ { OPCODE(I32ShrU); RETURN(BINARY); }
+#line 5236 "src/prebuilt/wast-lexer-gen.cc"
+yy843:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= '8') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy844;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= '0') {
+ if (yych != ',') goto yy49;
+ } else {
+ if (yych <= '1') goto yy904;
+ if (yych <= '7') goto yy49;
+ goto yy905;
+ }
+ }
+ } else {
+ if (yych <= ']') {
+ if (yych <= 'Z') {
+ if (yych != ';') goto yy49;
+ } else {
+ if (yych == '\\') goto yy49;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy844:
+#line 271 "src/wast-lexer.cc"
+ { OPCODE(I32Store); RETURN(STORE); }
+#line 5274 "src/prebuilt/wast-lexer-gen.cc"
+yy845:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy907;
+ goto yy50;
+yy846:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy908;
+ goto yy50;
+yy847:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 293 "src/wast-lexer.cc"
+ { TYPE(I64); RETURN(CONST); }
+#line 5290 "src/prebuilt/wast-lexer-gen.cc"
+yy849:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 325 "src/wast-lexer.cc"
+ { OPCODE(I64DivS); RETURN(BINARY); }
+#line 5298 "src/prebuilt/wast-lexer-gen.cc"
+yy851:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 327 "src/wast-lexer.cc"
+ { OPCODE(I64DivU); RETURN(BINARY); }
+#line 5306 "src/prebuilt/wast-lexer-gen.cc"
+yy853:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy909;
+ goto yy50;
+yy854:
+ yych = *++lexer->cursor;
+ if (yych == '6') goto yy910;
+ goto yy50;
+yy855:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy911;
+ goto yy50;
+yy856:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy912;
+ goto yy50;
+yy857:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy913;
+ goto yy50;
+yy858:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy915;
+ goto yy50;
+yy859:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 329 "src/wast-lexer.cc"
+ { OPCODE(I64RemS); RETURN(BINARY); }
+#line 5338 "src/prebuilt/wast-lexer-gen.cc"
+yy861:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 331 "src/wast-lexer.cc"
+ { OPCODE(I64RemU); RETURN(BINARY); }
+#line 5346 "src/prebuilt/wast-lexer-gen.cc"
+yy863:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 341 "src/wast-lexer.cc"
+ { OPCODE(I64ShrS); RETURN(BINARY); }
+#line 5354 "src/prebuilt/wast-lexer-gen.cc"
+yy865:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 343 "src/wast-lexer.cc"
+ { OPCODE(I64ShrU); RETURN(BINARY); }
+#line 5362 "src/prebuilt/wast-lexer-gen.cc"
+yy867:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= '7') {
+ if (yych <= '+') {
+ if (yych <= '"') {
+ if (yych == '!') goto yy49;
+ } else {
+ if (yych <= '\'') goto yy49;
+ if (yych >= '*') goto yy49;
+ }
+ } else {
+ if (yych <= '1') {
+ if (yych <= ',') goto yy868;
+ if (yych <= '0') goto yy49;
+ goto yy916;
+ } else {
+ if (yych == '3') goto yy917;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= '\\') {
+ if (yych <= ';') {
+ if (yych <= '8') goto yy918;
+ if (yych <= ':') goto yy49;
+ } else {
+ if (yych != '[') goto yy49;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych <= ']') goto yy868;
+ if (yych <= 'z') goto yy49;
+ } else {
+ if (yych == '}') goto yy868;
+ if (yych <= '~') goto yy49;
+ }
+ }
+ }
+yy868:
+#line 272 "src/wast-lexer.cc"
+ { OPCODE(I64Store); RETURN(STORE); }
+#line 5404 "src/prebuilt/wast-lexer-gen.cc"
+yy869:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy920;
+ goto yy50;
+yy870:
+ yych = *++lexer->cursor;
+ if (yych <= '@') {
+ if (yych <= '/') goto yy50;
+ if (yych <= '9') goto yy921;
+ goto yy50;
+ } else {
+ if (yych <= 'F') goto yy921;
+ if (yych <= '`') goto yy50;
+ if (yych <= 'f') goto yy921;
+ goto yy50;
+ }
+yy871:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy923;
+ goto yy50;
+yy872:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 263 "src/wast-lexer.cc"
+ { RETURN(SET_LOCAL); }
+#line 5432 "src/prebuilt/wast-lexer-gen.cc"
+yy874:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 264 "src/wast-lexer.cc"
+ { RETURN(TEE_LOCAL); }
+#line 5440 "src/prebuilt/wast-lexer-gen.cc"
+yy876:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy925;
+ goto yy50;
+yy877:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy926;
+ goto yy50;
+yy878:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy927;
+ goto yy50;
+yy879:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy928;
+ goto yy50;
+yy880:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy929;
+ goto yy50;
+yy881:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy930;
+ goto yy50;
+yy882:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy932;
+ goto yy50;
+yy883:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy933;
+ goto yy50;
+yy884:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy935;
+ goto yy50;
+yy885:
+ yych = *++lexer->cursor;
+ if (yych == 'm') goto yy936;
+ goto yy50;
+yy886:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy937;
+ goto yy50;
+yy887:
+ yych = *++lexer->cursor;
+ if (yych == 'g') goto yy938;
+ goto yy50;
+yy888:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy939;
+ goto yy50;
+yy889:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy940;
+ goto yy50;
+yy890:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy942;
+ goto yy50;
+yy891:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy943;
+ goto yy50;
+yy892:
+ yych = *++lexer->cursor;
+ if (yych == 'g') goto yy944;
+ goto yy50;
+yy893:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy945;
+ goto yy50;
+yy894:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy947;
+ goto yy50;
+yy895:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy948;
+ goto yy50;
+yy896:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 265 "src/wast-lexer.cc"
+ { RETURN(GET_GLOBAL); }
+#line 5528 "src/prebuilt/wast-lexer-gen.cc"
+yy898:
+ yych = *++lexer->cursor;
+ if (yych == 'y') goto yy949;
+ goto yy50;
+yy899:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy951;
+ goto yy50;
+yy900:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy952;
+ if (yych == 'u') goto yy954;
+ goto yy50;
+yy901:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 302 "src/wast-lexer.cc"
+ { OPCODE(I32Popcnt); RETURN(UNARY); }
+#line 5549 "src/prebuilt/wast-lexer-gen.cc"
+yy903:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy956;
+ goto yy50;
+yy904:
+ yych = *++lexer->cursor;
+ if (yych == '6') goto yy957;
+ goto yy50;
+yy905:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 285 "src/wast-lexer.cc"
+ { OPCODE(I32Store8); RETURN(STORE); }
+#line 5565 "src/prebuilt/wast-lexer-gen.cc"
+yy907:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy959;
+ if (yych == 'u') goto yy960;
+ goto yy50;
+yy908:
+ yych = *++lexer->cursor;
+ if (yych == '6') goto yy961;
+ goto yy50;
+yy909:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy962;
+ goto yy50;
+yy910:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy963;
+ goto yy50;
+yy911:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy964;
+ goto yy50;
+yy912:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy965;
+ if (yych == 'u') goto yy967;
+ goto yy50;
+yy913:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 303 "src/wast-lexer.cc"
+ { OPCODE(I64Popcnt); RETURN(UNARY); }
+#line 5599 "src/prebuilt/wast-lexer-gen.cc"
+yy915:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy969;
+ goto yy50;
+yy916:
+ yych = *++lexer->cursor;
+ if (yych == '6') goto yy970;
+ goto yy50;
+yy917:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy972;
+ goto yy50;
+yy918:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 286 "src/wast-lexer.cc"
+ { OPCODE(I64Store8); RETURN(STORE); }
+#line 5619 "src/prebuilt/wast-lexer-gen.cc"
+yy920:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy974;
+ if (yych == 'u') goto yy975;
+ goto yy50;
+yy921:
+ ++lexer->cursor;
+ if (lexer->limit <= lexer->cursor) FILL(1);
+ yych = *lexer->cursor;
+ if (yych <= '@') {
+ if (yych <= '+') {
+ if (yych <= '"') {
+ if (yych == '!') goto yy49;
+ goto yy775;
+ } else {
+ if (yych <= '\'') goto yy49;
+ if (yych <= ')') goto yy775;
+ goto yy49;
+ }
+ } else {
+ if (yych <= '9') {
+ if (yych <= ',') goto yy775;
+ if (yych <= '/') goto yy49;
+ goto yy921;
+ } else {
+ if (yych == ';') goto yy775;
+ goto yy49;
+ }
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= '[') {
+ if (yych <= 'F') goto yy921;
+ if (yych <= 'Z') goto yy49;
+ goto yy775;
+ } else {
+ if (yych == ']') goto yy775;
+ goto yy49;
+ }
+ } else {
+ if (yych <= '{') {
+ if (yych <= 'f') goto yy921;
+ if (yych <= 'z') goto yy49;
+ goto yy775;
+ } else {
+ if (yych == '}') goto yy775;
+ if (yych <= '~') goto yy49;
+ goto yy775;
+ }
+ }
+ }
+yy923:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 266 "src/wast-lexer.cc"
+ { RETURN(SET_GLOBAL); }
+#line 5678 "src/prebuilt/wast-lexer-gen.cc"
+yy925:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy976;
+ goto yy50;
+yy926:
+ yych = *++lexer->cursor;
+ if (yych == 'u') goto yy978;
+ goto yy50;
+yy927:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy979;
+ goto yy50;
+yy928:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy980;
+ goto yy50;
+yy929:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy981;
+ goto yy50;
+yy930:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 449 "src/wast-lexer.cc"
+ { RETURN(ASSERT_TRAP); }
+#line 5706 "src/prebuilt/wast-lexer-gen.cc"
+yy932:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy982;
+ goto yy50;
+yy933:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 257 "src/wast-lexer.cc"
+ { RETURN(CALL_IMPORT); }
+#line 5718 "src/prebuilt/wast-lexer-gen.cc"
+yy935:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy983;
+ goto yy50;
+yy936:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy984;
+ goto yy50;
+yy937:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy985;
+ goto yy50;
+yy938:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy986;
+ goto yy50;
+yy939:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy988;
+ goto yy50;
+yy940:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 316 "src/wast-lexer.cc"
+ { OPCODE(F32Nearest); RETURN(UNARY); }
+#line 5746 "src/prebuilt/wast-lexer-gen.cc"
+yy942:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy989;
+ goto yy50;
+yy943:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy990;
+ goto yy50;
+yy944:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy991;
+ goto yy50;
+yy945:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 317 "src/wast-lexer.cc"
+ { OPCODE(F64Nearest); RETURN(UNARY); }
+#line 5766 "src/prebuilt/wast-lexer-gen.cc"
+yy947:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy993;
+ goto yy50;
+yy948:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy994;
+ goto yy50;
+yy949:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 422 "src/wast-lexer.cc"
+ { RETURN(GROW_MEMORY); }
+#line 5782 "src/prebuilt/wast-lexer-gen.cc"
+yy951:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy995;
+ if (yych == 'u') goto yy997;
+ goto yy50;
+yy952:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 275 "src/wast-lexer.cc"
+ { OPCODE(I32Load8S); RETURN(LOAD); }
+#line 5795 "src/prebuilt/wast-lexer-gen.cc"
+yy954:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 277 "src/wast-lexer.cc"
+ { OPCODE(I32Load8U); RETURN(LOAD); }
+#line 5803 "src/prebuilt/wast-lexer-gen.cc"
+yy956:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy999;
+ goto yy50;
+yy957:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 287 "src/wast-lexer.cc"
+ { OPCODE(I32Store16); RETURN(STORE); }
+#line 5815 "src/prebuilt/wast-lexer-gen.cc"
+yy959:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1000;
+ goto yy50;
+yy960:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1001;
+ goto yy50;
+yy961:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy1002;
+ goto yy50;
+yy962:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy1004;
+ if (yych == 'u') goto yy1005;
+ goto yy50;
+yy963:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy1006;
+ if (yych == 'u') goto yy1008;
+ goto yy50;
+yy964:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy1010;
+ if (yych == 'u') goto yy1012;
+ goto yy50;
+yy965:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 276 "src/wast-lexer.cc"
+ { OPCODE(I64Load8S); RETURN(LOAD); }
+#line 5850 "src/prebuilt/wast-lexer-gen.cc"
+yy967:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 278 "src/wast-lexer.cc"
+ { OPCODE(I64Load8U); RETURN(LOAD); }
+#line 5858 "src/prebuilt/wast-lexer-gen.cc"
+yy969:
+ yych = *++lexer->cursor;
+ if (yych == 'p') goto yy1014;
+ goto yy50;
+yy970:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 288 "src/wast-lexer.cc"
+ { OPCODE(I64Store16); RETURN(STORE); }
+#line 5870 "src/prebuilt/wast-lexer-gen.cc"
+yy972:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 289 "src/wast-lexer.cc"
+ { OPCODE(I64Store32); RETURN(STORE); }
+#line 5878 "src/prebuilt/wast-lexer-gen.cc"
+yy974:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1015;
+ goto yy50;
+yy975:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1016;
+ goto yy50;
+yy976:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 420 "src/wast-lexer.cc"
+ { RETURN(UNREACHABLE); }
+#line 5894 "src/prebuilt/wast-lexer-gen.cc"
+yy978:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy1017;
+ goto yy50;
+yy979:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy1018;
+ goto yy50;
+yy980:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy1019;
+ goto yy50;
+yy981:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy1020;
+ goto yy50;
+yy982:
+ yych = *++lexer->cursor;
+ if (yych == 'k') goto yy1022;
+ goto yy50;
+yy983:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy1023;
+ goto yy50;
+yy984:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy1025;
+ goto yy50;
+yy985:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy1026;
+ if (yych == 'u') goto yy1027;
+ goto yy50;
+yy986:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 360 "src/wast-lexer.cc"
+ { OPCODE(F32Copysign); RETURN(BINARY); }
+#line 5935 "src/prebuilt/wast-lexer-gen.cc"
+yy988:
+ yych = *++lexer->cursor;
+ if (yych == '6') goto yy1028;
+ goto yy50;
+yy989:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy1029;
+ goto yy50;
+yy990:
+ yych = *++lexer->cursor;
+ if (yych == 's') goto yy1030;
+ if (yych == 'u') goto yy1031;
+ goto yy50;
+yy991:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 361 "src/wast-lexer.cc"
+ { OPCODE(F64Copysign); RETURN(BINARY); }
+#line 5956 "src/prebuilt/wast-lexer-gen.cc"
+yy993:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy1032;
+ goto yy50;
+yy994:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy1033;
+ goto yy50;
+yy995:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 279 "src/wast-lexer.cc"
+ { OPCODE(I32Load16S); RETURN(LOAD); }
+#line 5972 "src/prebuilt/wast-lexer-gen.cc"
+yy997:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 281 "src/wast-lexer.cc"
+ { OPCODE(I32Load16U); RETURN(LOAD); }
+#line 5980 "src/prebuilt/wast-lexer-gen.cc"
+yy999:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy1034;
+ goto yy50;
+yy1000:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy1035;
+ goto yy50;
+yy1001:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy1036;
+ goto yy50;
+yy1002:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 396 "src/wast-lexer.cc"
+ { OPCODE(I32WrapI64); RETURN(CONVERT); }
+#line 6000 "src/prebuilt/wast-lexer-gen.cc"
+yy1004:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1037;
+ goto yy50;
+yy1005:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1038;
+ goto yy50;
+yy1006:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 280 "src/wast-lexer.cc"
+ { OPCODE(I64Load16S); RETURN(LOAD); }
+#line 6016 "src/prebuilt/wast-lexer-gen.cc"
+yy1008:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 282 "src/wast-lexer.cc"
+ { OPCODE(I64Load16U); RETURN(LOAD); }
+#line 6024 "src/prebuilt/wast-lexer-gen.cc"
+yy1010:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 283 "src/wast-lexer.cc"
+ { OPCODE(I64Load32S); RETURN(LOAD); }
+#line 6032 "src/prebuilt/wast-lexer-gen.cc"
+yy1012:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 284 "src/wast-lexer.cc"
+ { OPCODE(I64Load32U); RETURN(LOAD); }
+#line 6040 "src/prebuilt/wast-lexer-gen.cc"
+yy1014:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy1039;
+ goto yy50;
+yy1015:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy1040;
+ goto yy50;
+yy1016:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy1041;
+ goto yy50;
+yy1017:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy1042;
+ goto yy50;
+yy1018:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy1043;
+ goto yy50;
+yy1019:
+ yych = *++lexer->cursor;
+ if (yych == 'm') goto yy1045;
+ goto yy50;
+yy1020:
+ ++lexer->cursor;
+ if ((yych = *lexer->cursor) <= 'Z') {
+ if (yych <= ')') {
+ if (yych <= '!') {
+ if (yych >= '!') goto yy49;
+ } else {
+ if (yych <= '"') goto yy1021;
+ if (yych <= '\'') goto yy49;
+ }
+ } else {
+ if (yych <= ',') {
+ if (yych <= '+') goto yy49;
+ } else {
+ if (yych != ';') goto yy49;
+ }
+ }
+ } else {
+ if (yych <= '_') {
+ if (yych <= '\\') {
+ if (yych >= '\\') goto yy49;
+ } else {
+ if (yych <= ']') goto yy1021;
+ if (yych <= '^') goto yy49;
+ goto yy1046;
+ }
+ } else {
+ if (yych <= '|') {
+ if (yych != '{') goto yy49;
+ } else {
+ if (yych == '~') goto yy49;
+ }
+ }
+ }
+yy1021:
+#line 444 "src/wast-lexer.cc"
+ { RETURN(ASSERT_RETURN); }
+#line 6102 "src/prebuilt/wast-lexer-gen.cc"
+yy1022:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy1047;
+ goto yy50;
+yy1023:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 258 "src/wast-lexer.cc"
+ { RETURN(CALL_INDIRECT); }
+#line 6114 "src/prebuilt/wast-lexer-gen.cc"
+yy1025:
+ yych = *++lexer->cursor;
+ if (yych == 'y') goto yy1048;
+ goto yy50;
+yy1026:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1050;
+ goto yy50;
+yy1027:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1051;
+ goto yy50;
+yy1028:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy1052;
+ goto yy50;
+yy1029:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy1054;
+ goto yy50;
+yy1030:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1055;
+ goto yy50;
+yy1031:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1056;
+ goto yy50;
+yy1032:
+ yych = *++lexer->cursor;
+ if (yych == '3') goto yy1057;
+ goto yy50;
+yy1033:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy1058;
+ goto yy50;
+yy1034:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy1059;
+ goto yy50;
+yy1035:
+ yych = *++lexer->cursor;
+ if (yych == '3') goto yy1060;
+ if (yych == '6') goto yy1061;
+ goto yy50;
+yy1036:
+ yych = *++lexer->cursor;
+ if (yych == '3') goto yy1062;
+ if (yych == '6') goto yy1063;
+ goto yy50;
+yy1037:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy1064;
+ goto yy50;
+yy1038:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy1065;
+ goto yy50;
+yy1039:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy1066;
+ goto yy50;
+yy1040:
+ yych = *++lexer->cursor;
+ if (yych == '3') goto yy1067;
+ if (yych == '6') goto yy1068;
+ goto yy50;
+yy1041:
+ yych = *++lexer->cursor;
+ if (yych == '3') goto yy1069;
+ if (yych == '6') goto yy1070;
+ goto yy50;
+yy1042:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy1071;
+ goto yy50;
+yy1043:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 442 "src/wast-lexer.cc"
+ { RETURN(ASSERT_INVALID); }
+#line 6198 "src/prebuilt/wast-lexer-gen.cc"
+yy1045:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy1072;
+ goto yy50;
+yy1046:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy1073;
+ if (yych == 'c') goto yy1074;
+ goto yy50;
+yy1047:
+ yych = *++lexer->cursor;
+ if (yych == 'b') goto yy1075;
+ goto yy50;
+yy1048:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 421 "src/wast-lexer.cc"
+ { RETURN(CURRENT_MEMORY); }
+#line 6219 "src/prebuilt/wast-lexer-gen.cc"
+yy1050:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy1076;
+ goto yy50;
+yy1051:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy1077;
+ goto yy50;
+yy1052:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 414 "src/wast-lexer.cc"
+ { OPCODE(F32DemoteF64); RETURN(CONVERT); }
+#line 6235 "src/prebuilt/wast-lexer-gen.cc"
+yy1054:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy1078;
+ goto yy50;
+yy1055:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy1079;
+ goto yy50;
+yy1056:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy1080;
+ goto yy50;
+yy1057:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy1081;
+ goto yy50;
+yy1058:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy1083;
+ goto yy50;
+yy1059:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy1084;
+ goto yy50;
+yy1060:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy1085;
+ goto yy50;
+yy1061:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy1087;
+ goto yy50;
+yy1062:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy1089;
+ goto yy50;
+yy1063:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy1091;
+ goto yy50;
+yy1064:
+ yych = *++lexer->cursor;
+ if (yych == '3') goto yy1093;
+ goto yy50;
+yy1065:
+ yych = *++lexer->cursor;
+ if (yych == '3') goto yy1094;
+ goto yy50;
+yy1066:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy1095;
+ goto yy50;
+yy1067:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy1096;
+ goto yy50;
+yy1068:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy1098;
+ goto yy50;
+yy1069:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy1100;
+ goto yy50;
+yy1070:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy1102;
+ goto yy50;
+yy1071:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy1104;
+ goto yy50;
+yy1072:
+ yych = *++lexer->cursor;
+ if (yych == 'd') goto yy1105;
+ goto yy50;
+yy1073:
+ yych = *++lexer->cursor;
+ if (yych == 'r') goto yy1107;
+ goto yy50;
+yy1074:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy1108;
+ goto yy50;
+yy1075:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy1109;
+ goto yy50;
+yy1076:
+ yych = *++lexer->cursor;
+ if (yych == '3') goto yy1110;
+ if (yych == '6') goto yy1111;
+ goto yy50;
+yy1077:
+ yych = *++lexer->cursor;
+ if (yych == '3') goto yy1112;
+ if (yych == '6') goto yy1113;
+ goto yy50;
+yy1078:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1114;
+ goto yy50;
+yy1079:
+ yych = *++lexer->cursor;
+ if (yych == '3') goto yy1115;
+ if (yych == '6') goto yy1116;
+ goto yy50;
+yy1080:
+ yych = *++lexer->cursor;
+ if (yych == '3') goto yy1117;
+ if (yych == '6') goto yy1118;
+ goto yy50;
+yy1081:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 413 "src/wast-lexer.cc"
+ { OPCODE(F64PromoteF32); RETURN(CONVERT); }
+#line 6355 "src/prebuilt/wast-lexer-gen.cc"
+yy1083:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1119;
+ goto yy50;
+yy1084:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1120;
+ goto yy50;
+yy1085:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 397 "src/wast-lexer.cc"
+ { OPCODE(I32TruncSF32); RETURN(CONVERT); }
+#line 6371 "src/prebuilt/wast-lexer-gen.cc"
+yy1087:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 399 "src/wast-lexer.cc"
+ { OPCODE(I32TruncSF64); RETURN(CONVERT); }
+#line 6379 "src/prebuilt/wast-lexer-gen.cc"
+yy1089:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 401 "src/wast-lexer.cc"
+ { OPCODE(I32TruncUF32); RETURN(CONVERT); }
+#line 6387 "src/prebuilt/wast-lexer-gen.cc"
+yy1091:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 403 "src/wast-lexer.cc"
+ { OPCODE(I32TruncUF64); RETURN(CONVERT); }
+#line 6395 "src/prebuilt/wast-lexer-gen.cc"
+yy1093:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy1121;
+ goto yy50;
+yy1094:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy1123;
+ goto yy50;
+yy1095:
+ yych = *++lexer->cursor;
+ if (yych == '/') goto yy1125;
+ goto yy50;
+yy1096:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 398 "src/wast-lexer.cc"
+ { OPCODE(I64TruncSF32); RETURN(CONVERT); }
+#line 6415 "src/prebuilt/wast-lexer-gen.cc"
+yy1098:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 400 "src/wast-lexer.cc"
+ { OPCODE(I64TruncSF64); RETURN(CONVERT); }
+#line 6423 "src/prebuilt/wast-lexer-gen.cc"
+yy1100:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 402 "src/wast-lexer.cc"
+ { OPCODE(I64TruncUF32); RETURN(CONVERT); }
+#line 6431 "src/prebuilt/wast-lexer-gen.cc"
+yy1102:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 404 "src/wast-lexer.cc"
+ { OPCODE(I64TruncUF64); RETURN(CONVERT); }
+#line 6439 "src/prebuilt/wast-lexer-gen.cc"
+yy1104:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy1126;
+ goto yy50;
+yy1105:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 441 "src/wast-lexer.cc"
+ { RETURN(ASSERT_MALFORMED); }
+#line 6451 "src/prebuilt/wast-lexer-gen.cc"
+yy1107:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy1128;
+ goto yy50;
+yy1108:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy1129;
+ goto yy50;
+yy1109:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy1130;
+ goto yy50;
+yy1110:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy1132;
+ goto yy50;
+yy1111:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy1134;
+ goto yy50;
+yy1112:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy1136;
+ goto yy50;
+yy1113:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy1138;
+ goto yy50;
+yy1114:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy1140;
+ goto yy50;
+yy1115:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy1141;
+ goto yy50;
+yy1116:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy1143;
+ goto yy50;
+yy1117:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy1145;
+ goto yy50;
+yy1118:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy1147;
+ goto yy50;
+yy1119:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy1149;
+ goto yy50;
+yy1120:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy1150;
+ goto yy50;
+yy1121:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 394 "src/wast-lexer.cc"
+ { OPCODE(I64ExtendSI32); RETURN(CONVERT); }
+#line 6515 "src/prebuilt/wast-lexer-gen.cc"
+yy1123:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 395 "src/wast-lexer.cc"
+ { OPCODE(I64ExtendUI32); RETURN(CONVERT); }
+#line 6523 "src/prebuilt/wast-lexer-gen.cc"
+yy1125:
+ yych = *++lexer->cursor;
+ if (yych == 'f') goto yy1151;
+ goto yy50;
+yy1126:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 450 "src/wast-lexer.cc"
+ { RETURN(ASSERT_EXHAUSTION); }
+#line 6535 "src/prebuilt/wast-lexer-gen.cc"
+yy1128:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy1152;
+ goto yy50;
+yy1129:
+ yych = *++lexer->cursor;
+ if (yych == 'o') goto yy1153;
+ goto yy50;
+yy1130:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 443 "src/wast-lexer.cc"
+ { RETURN(ASSERT_UNLINKABLE); }
+#line 6551 "src/prebuilt/wast-lexer-gen.cc"
+yy1132:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 405 "src/wast-lexer.cc"
+ { OPCODE(F32ConvertSI32); RETURN(CONVERT); }
+#line 6559 "src/prebuilt/wast-lexer-gen.cc"
+yy1134:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 407 "src/wast-lexer.cc"
+ { OPCODE(F32ConvertSI64); RETURN(CONVERT); }
+#line 6567 "src/prebuilt/wast-lexer-gen.cc"
+yy1136:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 409 "src/wast-lexer.cc"
+ { OPCODE(F32ConvertUI32); RETURN(CONVERT); }
+#line 6575 "src/prebuilt/wast-lexer-gen.cc"
+yy1138:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 411 "src/wast-lexer.cc"
+ { OPCODE(F32ConvertUI64); RETURN(CONVERT); }
+#line 6583 "src/prebuilt/wast-lexer-gen.cc"
+yy1140:
+ yych = *++lexer->cursor;
+ if (yych == '3') goto yy1154;
+ goto yy50;
+yy1141:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 406 "src/wast-lexer.cc"
+ { OPCODE(F64ConvertSI32); RETURN(CONVERT); }
+#line 6595 "src/prebuilt/wast-lexer-gen.cc"
+yy1143:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 408 "src/wast-lexer.cc"
+ { OPCODE(F64ConvertSI64); RETURN(CONVERT); }
+#line 6603 "src/prebuilt/wast-lexer-gen.cc"
+yy1145:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 410 "src/wast-lexer.cc"
+ { OPCODE(F64ConvertUI32); RETURN(CONVERT); }
+#line 6611 "src/prebuilt/wast-lexer-gen.cc"
+yy1147:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 412 "src/wast-lexer.cc"
+ { OPCODE(F64ConvertUI64); RETURN(CONVERT); }
+#line 6619 "src/prebuilt/wast-lexer-gen.cc"
+yy1149:
+ yych = *++lexer->cursor;
+ if (yych == '6') goto yy1155;
+ goto yy50;
+yy1150:
+ yych = *++lexer->cursor;
+ if (yych == '3') goto yy1156;
+ goto yy50;
+yy1151:
+ yych = *++lexer->cursor;
+ if (yych == '6') goto yy1157;
+ goto yy50;
+yy1152:
+ yych = *++lexer->cursor;
+ if (yych == 'h') goto yy1158;
+ goto yy50;
+yy1153:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy1159;
+ goto yy50;
+yy1154:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy1160;
+ goto yy50;
+yy1155:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy1162;
+ goto yy50;
+yy1156:
+ yych = *++lexer->cursor;
+ if (yych == '2') goto yy1164;
+ goto yy50;
+yy1157:
+ yych = *++lexer->cursor;
+ if (yych == '4') goto yy1166;
+ goto yy50;
+yy1158:
+ yych = *++lexer->cursor;
+ if (yych == 'm') goto yy1168;
+ goto yy50;
+yy1159:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy1169;
+ goto yy50;
+yy1160:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 415 "src/wast-lexer.cc"
+ { OPCODE(F32ReinterpretI32); RETURN(CONVERT); }
+#line 6671 "src/prebuilt/wast-lexer-gen.cc"
+yy1162:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 417 "src/wast-lexer.cc"
+ { OPCODE(F64ReinterpretI64); RETURN(CONVERT); }
+#line 6679 "src/prebuilt/wast-lexer-gen.cc"
+yy1164:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 416 "src/wast-lexer.cc"
+ { OPCODE(I32ReinterpretF32); RETURN(CONVERT); }
+#line 6687 "src/prebuilt/wast-lexer-gen.cc"
+yy1166:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 418 "src/wast-lexer.cc"
+ { OPCODE(I64ReinterpretF64); RETURN(CONVERT); }
+#line 6695 "src/prebuilt/wast-lexer-gen.cc"
+yy1168:
+ yych = *++lexer->cursor;
+ if (yych == 'e') goto yy1170;
+ goto yy50;
+yy1169:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy1171;
+ goto yy50;
+yy1170:
+ yych = *++lexer->cursor;
+ if (yych == 't') goto yy1172;
+ goto yy50;
+yy1171:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy1173;
+ goto yy50;
+yy1172:
+ yych = *++lexer->cursor;
+ if (yych == 'i') goto yy1174;
+ goto yy50;
+yy1173:
+ yych = *++lexer->cursor;
+ if (yych == 'l') goto yy1175;
+ goto yy50;
+yy1174:
+ yych = *++lexer->cursor;
+ if (yych == 'c') goto yy1176;
+ goto yy50;
+yy1175:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy1177;
+ goto yy50;
+yy1176:
+ yych = *++lexer->cursor;
+ if (yych == '_') goto yy1178;
+ goto yy50;
+yy1177:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy1179;
+ goto yy50;
+yy1178:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy1180;
+ goto yy50;
+yy1179:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy1181;
+ goto yy50;
+yy1180:
+ yych = *++lexer->cursor;
+ if (yych == 'a') goto yy1182;
+ goto yy50;
+yy1181:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy1183;
+ goto yy50;
+yy1182:
+ yych = *++lexer->cursor;
+ if (yych == 'n') goto yy1185;
+ goto yy50;
+yy1183:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 445 "src/wast-lexer.cc"
+ {
+ RETURN(ASSERT_RETURN_CANONICAL_NAN); }
+#line 6764 "src/prebuilt/wast-lexer-gen.cc"
+yy1185:
+ ++lexer->cursor;
+ if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ goto yy49;
+ }
+#line 447 "src/wast-lexer.cc"
+ {
+ RETURN(ASSERT_RETURN_ARITHMETIC_NAN); }
+#line 6773 "src/prebuilt/wast-lexer-gen.cc"
+ }
+}
+#line 473 "src/wast-lexer.cc"
+
+ }
+}
+
+static WastLexer* new_lexer(WastLexerSourceType type, const char* filename) {
+ WastLexer* lexer = new WastLexer();
+ lexer->line = 1;
+ lexer->filename = filename;
+ lexer->source.type = type;
+ return lexer;
+}
+
+WastLexer* new_wast_file_lexer(const char* filename) {
+ WastLexer* lexer = new_lexer(WastLexerSourceType::File, filename);
+ lexer->source.file = fopen(filename, "rb");
+ if (!lexer->source.file) {
+ destroy_wast_lexer(lexer);
+ return nullptr;
+ }
+ return lexer;
+}
+
+WastLexer* new_wast_buffer_lexer(const char* filename,
+ const void* data,
+ size_t size) {
+ WastLexer* lexer = new_lexer(WastLexerSourceType::Buffer, filename);
+ lexer->source.buffer.data = data;
+ lexer->source.buffer.size = size;
+ lexer->source.buffer.read_offset = 0;
+ return lexer;
+}
+
+void destroy_wast_lexer(WastLexer* lexer) {
+ if (lexer->source.type == WastLexerSourceType::File && lexer->source.file)
+ fclose(lexer->source.file);
+ delete[] lexer->buffer;
+ delete lexer;
+}
+
+enum class LineOffsetPosition {
+ Start,
+ End,
+};
+
+static Result scan_forward_for_line_offset_in_buffer(
+ const char* buffer_start,
+ const char* buffer_end,
+ int buffer_line,
+ size_t buffer_file_offset,
+ LineOffsetPosition find_position,
+ int find_line,
+ int* out_line,
+ size_t* out_line_offset) {
+ int line = buffer_line;
+ int line_offset = 0;
+ const char* p;
+ bool is_previous_carriage = 0;
+ for (p = buffer_start; p < buffer_end; ++p) {
+ if (*p == '\n') {
+ if (find_position == LineOffsetPosition::Start) {
+ if (++line == find_line) {
+ line_offset = buffer_file_offset + (p - buffer_start) + 1;
+ break;
+ }
+ } else {
+ if (line++ == find_line) {
+ line_offset =
+ buffer_file_offset + (p - buffer_start) - is_previous_carriage;
+ break;
+ }
+ }
+ }
+ is_previous_carriage = *p == '\r';
+ }
+
+ Result result = Result::Ok;
+ if (p == buffer_end) {
+ /* end of buffer */
+ if (find_position == LineOffsetPosition::Start) {
+ result = Result::Error;
+ } else {
+ line_offset = buffer_file_offset + (buffer_end - buffer_start);
+ }
+ }
+
+ *out_line = line;
+ *out_line_offset = line_offset;
+ return result;
+}
+
+static Result scan_forward_for_line_offset_in_file(
+ WastLexer* lexer,
+ int line,
+ size_t line_start_offset,
+ LineOffsetPosition find_position,
+ int find_line,
+ size_t* out_line_offset) {
+ FILE* lexer_file = lexer->source.file;
+ Result result = Result::Error;
+ long old_offset = ftell(lexer_file);
+ if (old_offset == -1)
+ return Result::Error;
+ size_t buffer_file_offset = line_start_offset;
+ if (fseek(lexer_file, buffer_file_offset, SEEK_SET) == -1)
+ goto cleanup;
+
+ while (1) {
+ char buffer[8 * 1024];
+ const size_t buffer_size = WABT_ARRAY_SIZE(buffer);
+ size_t read_bytes = fread(buffer, 1, buffer_size, lexer_file);
+ if (read_bytes == 0) {
+ /* end of buffer */
+ if (find_position == LineOffsetPosition::Start) {
+ result = Result::Error;
+ } else {
+ *out_line_offset = buffer_file_offset + read_bytes;
+ result = Result::Ok;
+ }
+ goto cleanup;
+ }
+
+ const char* buffer_end = buffer + read_bytes;
+ result = scan_forward_for_line_offset_in_buffer(
+ buffer, buffer_end, line, buffer_file_offset, find_position, find_line,
+ &line, out_line_offset);
+ if (result == Result::Ok)
+ goto cleanup;
+
+ buffer_file_offset += read_bytes;
+ }
+
+cleanup:
+ /* if this fails, we're screwed */
+ if (fseek(lexer_file, old_offset, SEEK_SET) == -1)
+ return Result::Error;
+ return result;
+}
+
+static Result scan_forward_for_line_offset(WastLexer* lexer,
+ int line,
+ size_t line_start_offset,
+ LineOffsetPosition find_position,
+ int find_line,
+ size_t* out_line_offset) {
+ assert(line <= find_line);
+ if (lexer->source.type == WastLexerSourceType::Buffer) {
+ const char* source_buffer =
+ static_cast<const char*>(lexer->source.buffer.data);
+ const char* buffer_start = source_buffer + line_start_offset;
+ const char* buffer_end = source_buffer + lexer->source.buffer.size;
+ return scan_forward_for_line_offset_in_buffer(
+ buffer_start, buffer_end, line, line_start_offset, find_position,
+ find_line, &line, out_line_offset);
+ } else {
+ assert(lexer->source.type == WastLexerSourceType::File);
+ return scan_forward_for_line_offset_in_file(lexer, line, line_start_offset,
+ find_position, find_line,
+ out_line_offset);
+ }
+}
+
+static Result get_line_start_offset(WastLexer* lexer,
+ int line,
+ size_t* out_offset) {
+ int first_line = 1;
+ size_t first_offset = 0;
+ int current_line = lexer->line;
+ size_t current_offset = lexer->line_file_offset;
+
+ if (line == current_line) {
+ *out_offset = current_offset;
+ return Result::Ok;
+ } else if (line == first_line) {
+ *out_offset = first_offset;
+ return Result::Ok;
+ } else if (line > current_line) {
+ return scan_forward_for_line_offset(lexer, current_line, current_offset,
+ LineOffsetPosition::Start, line,
+ out_offset);
+ } else {
+ /* TODO(binji): optimize by storing more known line/offset pairs */
+ return scan_forward_for_line_offset(lexer, first_line, first_offset,
+ LineOffsetPosition::Start, line,
+ out_offset);
+ }
+}
+
+static Result get_offsets_from_line(WastLexer* lexer,
+ int line,
+ size_t* out_line_start,
+ size_t* out_line_end) {
+ size_t line_start;
+ if (WABT_FAILED(get_line_start_offset(lexer, line, &line_start)))
+ return Result::Error;
+
+ size_t line_end;
+ if (WABT_FAILED(scan_forward_for_line_offset(
+ lexer, line, line_start, LineOffsetPosition::End, line, &line_end)))
+ return Result::Error;
+ *out_line_start = line_start;
+ *out_line_end = line_end;
+ return Result::Ok;
+}
+
+static void clamp_source_line_offsets_to_location(size_t line_start,
+ size_t line_end,
+ int first_column,
+ int last_column,
+ size_t max_line_length,
+ size_t* out_new_line_start,
+ size_t* out_new_line_end) {
+ size_t line_length = line_end - line_start;
+ if (line_length > max_line_length) {
+ size_t column_range = last_column - first_column;
+ size_t center_on;
+ if (column_range > max_line_length) {
+ /* the column range doesn't fit, just center on first_column */
+ center_on = first_column - 1;
+ } else {
+ /* the entire range fits, display it all in the center */
+ center_on = (first_column + last_column) / 2 - 1;
+ }
+ if (center_on > max_line_length / 2)
+ line_start += center_on - max_line_length / 2;
+ if (line_start > line_end - max_line_length)
+ line_start = line_end - max_line_length;
+ line_end = line_start + max_line_length;
+ }
+
+ *out_new_line_start = line_start;
+ *out_new_line_end = line_end;
+}
+
+Result wast_lexer_get_source_line(WastLexer* lexer,
+ const Location* loc,
+ size_t line_max_length,
+ char* line,
+ size_t* out_line_length,
+ int* out_column_offset) {
+ Result result;
+ size_t line_start; /* inclusive */
+ size_t line_end; /* exclusive */
+ result = get_offsets_from_line(lexer, loc->line, &line_start, &line_end);
+ if (WABT_FAILED(result))
+ return result;
+
+ size_t new_line_start;
+ size_t new_line_end;
+ clamp_source_line_offsets_to_location(line_start, line_end, loc->first_column,
+ loc->last_column, line_max_length,
+ &new_line_start, &new_line_end);
+ bool has_start_ellipsis = line_start != new_line_start;
+ bool has_end_ellipsis = line_end != new_line_end;
+
+ char* write_start = line;
+ size_t line_length = new_line_end - new_line_start;
+ size_t read_start = new_line_start;
+ size_t read_length = line_length;
+ if (has_start_ellipsis) {
+ memcpy(line, "...", 3);
+ read_start += 3;
+ write_start += 3;
+ read_length -= 3;
+ }
+ if (has_end_ellipsis) {
+ memcpy(line + line_length - 3, "...", 3);
+ read_length -= 3;
+ }
+
+ if (lexer->source.type == WastLexerSourceType::Buffer) {
+ const char* buffer_read_start =
+ static_cast<const char*>(lexer->source.buffer.data) + read_start;
+ memcpy(write_start, buffer_read_start, read_length);
+ } else {
+ assert(lexer->source.type == WastLexerSourceType::File);
+ FILE* lexer_file = lexer->source.file;
+ long old_offset = ftell(lexer_file);
+ if (old_offset == -1)
+ return Result::Error;
+ if (fseek(lexer_file, read_start, SEEK_SET) == -1)
+ return Result::Error;
+ if (fread(write_start, 1, read_length, lexer_file) < read_length)
+ return Result::Error;
+ if (fseek(lexer_file, old_offset, SEEK_SET) == -1)
+ return Result::Error;
+ }
+
+ line[line_length] = '\0';
+
+ *out_line_length = line_length;
+ *out_column_offset = new_line_start - line_start;
+ return Result::Ok;
+}
+
+} // namespace wabt