summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lexer-source-line-finder.cc153
-rw-r--r--src/lexer-source-line-finder.h62
-rw-r--r--src/lexer-source.cc131
-rw-r--r--src/lexer-source.h78
-rw-r--r--src/prebuilt/wast-lexer-gen.cc3748
-rw-r--r--src/prebuilt/wast-parser-gen.cc492
-rw-r--r--src/prebuilt/wast-parser-gen.hh4
-rw-r--r--src/range.h37
-rw-r--r--src/resolve-names.h2
-rw-r--r--src/tools/wast-desugar.cc5
-rw-r--r--src/tools/wast2wasm.cc9
-rw-r--r--src/wast-lexer.cc478
-rw-r--r--src/wast-lexer.h78
-rw-r--r--src/wast-parser-lexer-shared.cc21
-rw-r--r--src/wast-parser-lexer-shared.h6
-rw-r--r--src/wast-parser.y3
16 files changed, 2600 insertions, 2707 deletions
diff --git a/src/lexer-source-line-finder.cc b/src/lexer-source-line-finder.cc
new file mode 100644
index 00000000..fff26117
--- /dev/null
+++ b/src/lexer-source-line-finder.cc
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2017 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 "lexer-source-line-finder.h"
+
+#include <algorithm>
+
+#include "lexer-source.h"
+
+#define CHECK_RESULT(expr) \
+ do { \
+ if (WABT_FAILED(expr)) \
+ return Result::Error; \
+ } while (0)
+
+namespace wabt {
+
+LexerSourceLineFinder::LexerSourceLineFinder(
+ std::unique_ptr<LexerSource> source)
+ : source_(std::move(source)),
+ next_line_start_(0),
+ last_cr_(false),
+ eof_(false) {
+ // Line 0 should not be used; but it makes indexing simpler.
+ line_ranges_.emplace_back(0, 0);
+}
+
+Result LexerSourceLineFinder::GetSourceLine(const Location& loc,
+ Offset max_line_length,
+ SourceLine* out_source_line) {
+ ColumnRange column_range(loc.first_column, loc.last_column);
+ OffsetRange original;
+ CHECK_RESULT(GetLineOffsets(loc.line, &original));
+
+ OffsetRange clamped =
+ ClampSourceLineOffsets(original, column_range, max_line_length);
+ bool has_start_ellipsis = original.start != clamped.start;
+ bool has_end_ellipsis = original.end != clamped.end;
+
+ out_source_line->column_offset = clamped.start - original.start;
+
+ if (has_start_ellipsis) {
+ out_source_line->line += "...";
+ clamped.start += 3;
+ }
+ if (has_end_ellipsis)
+ clamped.end -= 3;
+
+ std::vector<char> read_line;
+ CHECK_RESULT(source_->ReadRange(clamped, &read_line));
+ out_source_line->line.append(read_line.begin(), read_line.end());
+
+ if (has_end_ellipsis)
+ out_source_line->line += "...";
+
+ return Result::Ok;
+}
+
+bool LexerSourceLineFinder::IsLineCached(int line) const {
+ return static_cast<size_t>(line) < line_ranges_.size();
+}
+
+OffsetRange LexerSourceLineFinder::GetCachedLine(int line) const {
+ assert(IsLineCached(line));
+ return line_ranges_[line];
+}
+
+Result LexerSourceLineFinder::GetLineOffsets(int find_line,
+ OffsetRange* out_range) {
+ if (IsLineCached(find_line)) {
+ *out_range = GetCachedLine(find_line);
+ return Result::Ok;
+ }
+
+ const size_t kBufferSize = 1 << 16;
+ std::vector<char> buffer(kBufferSize);
+
+ assert(!line_ranges_.empty());
+ Offset buffer_file_offset = 0;
+ CHECK_RESULT(source_->Tell(&buffer_file_offset));
+ while (!IsLineCached(find_line) && !eof_) {
+ size_t read_size = source_->Fill(buffer.data(), buffer.size());
+ if (read_size < buffer.size())
+ eof_ = true;
+
+ for (auto iter = buffer.begin(), end = iter + read_size; iter < end;
+ ++iter) {
+ if (*iter == '\n') {
+ // Don't include \n or \r in the line range.
+ Offset line_offset =
+ buffer_file_offset + (iter - buffer.begin()) - last_cr_;
+ line_ranges_.emplace_back(next_line_start_, line_offset);
+ next_line_start_ = line_offset + last_cr_ + 1;
+ }
+ last_cr_ = *iter == '\r';
+ }
+
+ if (eof_) {
+ // Add the final line as an empty range.
+ Offset end = buffer_file_offset + read_size;
+ line_ranges_.emplace_back(end, end);
+ }
+ }
+
+ if (IsLineCached(find_line)) {
+ *out_range = GetCachedLine(find_line);
+ return Result::Ok;
+ } else {
+ assert(eof_);
+ return Result::Error;
+ }
+}
+
+// static
+OffsetRange LexerSourceLineFinder::ClampSourceLineOffsets(
+ OffsetRange offset_range,
+ ColumnRange column_range,
+ Offset max_line_length) {
+ Offset line_length = offset_range.size();
+ if (line_length > max_line_length) {
+ size_t column_count = column_range.size();
+ size_t center_on;
+ if (column_count > max_line_length) {
+ // The column range doesn't fit, just center on first_column.
+ center_on = column_range.start - 1;
+ } else {
+ // the entire range fits, display it all in the center.
+ center_on = (column_range.start + column_range.end) / 2 - 1;
+ }
+ if (center_on > max_line_length / 2)
+ offset_range.start += center_on - max_line_length / 2;
+ offset_range.start =
+ std::min(offset_range.start, offset_range.end - max_line_length);
+ offset_range.end = offset_range.start + max_line_length;
+ }
+
+ return offset_range;
+}
+
+} // namespace wabt
diff --git a/src/lexer-source-line-finder.h b/src/lexer-source-line-finder.h
new file mode 100644
index 00000000..8b939eb9
--- /dev/null
+++ b/src/lexer-source-line-finder.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2017 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.
+ */
+
+#ifndef WABT_LEXER_SOURCE_LINE_FINDER_H_
+#define WABT_LEXER_SOURCE_LINE_FINDER_H_
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "common.h"
+#include "range.h"
+
+namespace wabt {
+
+class LexerSource;
+
+class LexerSourceLineFinder {
+ public:
+ struct SourceLine {
+ std::string line;
+ int column_offset;
+ };
+
+ explicit LexerSourceLineFinder(std::unique_ptr<LexerSource>);
+
+ Result GetSourceLine(const Location& loc,
+ Offset max_line_length,
+ SourceLine* out_source_line);
+ Result GetLineOffsets(int line, OffsetRange* out_offsets);
+
+ private:
+ static OffsetRange ClampSourceLineOffsets(OffsetRange line_offset_range,
+ ColumnRange column_range,
+ Offset max_line_length);
+
+ bool IsLineCached(int line) const;
+ OffsetRange GetCachedLine(int line) const;
+
+ std::unique_ptr<LexerSource> source_;
+ std::vector<OffsetRange> line_ranges_;
+ Offset next_line_start_;
+ bool last_cr_; // Last read character was a '\r' (carriage return).
+ bool eof_;
+};
+
+} // namespace wabt
+
+#endif // WABT_LEXER_SOURCE_LINE_FINDER_H_
diff --git a/src/lexer-source.cc b/src/lexer-source.cc
new file mode 100644
index 00000000..13ca713e
--- /dev/null
+++ b/src/lexer-source.cc
@@ -0,0 +1,131 @@
+/*
+ * Copyright 2017 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 "lexer-source.h"
+
+#include <algorithm>
+
+#define CHECK_RESULT(expr) \
+ do { \
+ if (WABT_FAILED(expr)) \
+ return Result::Error; \
+ } while (0)
+
+namespace wabt {
+
+LexerSourceFile::LexerSourceFile(const std::string& filename)
+ : filename_(filename) {
+ file_ = fopen(filename.c_str(), "rb");
+}
+
+LexerSourceFile::~LexerSourceFile() {
+ if (file_)
+ fclose(file_);
+}
+
+std::unique_ptr<LexerSource> LexerSourceFile::Clone() {
+ std::unique_ptr<LexerSourceFile> result(new LexerSourceFile(filename_));
+
+ Offset offset = 0;
+ if (WABT_FAILED(Tell(&offset)) || WABT_FAILED(result->Seek(offset)))
+ result.reset();
+
+ return std::move(result);
+}
+
+Result LexerSourceFile::Tell(Offset* out_offset) {
+ if (!file_)
+ return Result::Error;
+
+ long offset = ftell(file_);
+ if (offset < 0)
+ return Result::Error;
+
+ *out_offset = offset;
+ return Result::Ok;
+}
+
+size_t LexerSourceFile::Fill(void* dest, size_t size) {
+ if (!file_)
+ return 0;
+ return fread(dest, 1, size, file_);
+}
+
+Result LexerSourceFile::ReadRange(OffsetRange range,
+ std::vector<char>* out_data) {
+ Offset old_offset = 0;
+ CHECK_RESULT(Tell(&old_offset));
+ CHECK_RESULT(Seek(range.start));
+
+ std::vector<char> result(range.size());
+ if (range.size() > 0) {
+ size_t read_size = Fill(result.data(), range.size());
+ if (read_size < range.size())
+ result.resize(read_size);
+ }
+
+ CHECK_RESULT(Seek(old_offset));
+
+ *out_data = std::move(result);
+ return Result::Ok;
+}
+
+Result LexerSourceFile::Seek(Offset offset) {
+ if (!file_)
+ return Result::Error;
+
+ int result = fseek(file_, offset, SEEK_SET);
+ return result < 0 ? Result::Error : Result::Ok;
+}
+
+LexerSourceBuffer::LexerSourceBuffer(const void* data, Offset size)
+ : data_(data), size_(size), read_offset_(0) {}
+
+std::unique_ptr<LexerSource> LexerSourceBuffer::Clone() {
+ LexerSourceBuffer* result = new LexerSourceBuffer(data_, size_);
+ result->read_offset_ = read_offset_;
+ return std::unique_ptr<LexerSource>(result);
+}
+
+Result LexerSourceBuffer::Tell(Offset* out_offset) {
+ *out_offset = read_offset_;
+ return Result::Ok;
+}
+
+size_t LexerSourceBuffer::Fill(void* dest, Offset size) {
+ Offset read_size = std::min(size, size_ - read_offset_);
+ if (read_size > 0) {
+ const void* src = static_cast<const char*>(data_) + read_offset_;
+ memcpy(dest, src, read_size);
+ read_offset_ += read_size;
+ }
+ return read_size;
+}
+
+Result LexerSourceBuffer::ReadRange(OffsetRange range,
+ std::vector<char>* out_data) {
+ OffsetRange clamped = range;
+ clamped.start = std::min(clamped.start, size_);
+ clamped.end = std::min(clamped.end, size_);
+ if (clamped.size()) {
+ std::vector<char> result(clamped.size());
+ const void* src = static_cast<const char*>(data_) + clamped.start;
+ memcpy(result.data(), src, clamped.size());
+ }
+ return Result::Ok;
+}
+
+} // namespace wabt
diff --git a/src/lexer-source.h b/src/lexer-source.h
new file mode 100644
index 00000000..4f128d63
--- /dev/null
+++ b/src/lexer-source.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2017 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.
+ */
+
+#ifndef WABT_LEXER_SOURCE_H_
+#define WABT_LEXER_SOURCE_H_
+
+#include <cstddef>
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "common.h"
+#include "range.h"
+
+namespace wabt {
+
+class LexerSource {
+ public:
+ LexerSource() = default;
+ virtual ~LexerSource() {}
+ virtual std::unique_ptr<LexerSource> Clone() = 0;
+ virtual Result Tell(Offset* out_offset) = 0;
+ virtual size_t Fill(void* dest, size_t size) = 0;
+ virtual Result ReadRange(OffsetRange, std::vector<char>* out_data) = 0;
+
+ WABT_DISALLOW_COPY_AND_ASSIGN(LexerSource);
+};
+
+class LexerSourceFile : public LexerSource {
+ public:
+ explicit LexerSourceFile(const std::string& filename);
+ ~LexerSourceFile();
+
+ bool IsOpen() const { return file_ != nullptr; }
+
+ std::unique_ptr<LexerSource> Clone() override;
+ Result Tell(Offset* out_offset) override;
+ size_t Fill(void* dest, size_t size) override;
+ Result ReadRange(OffsetRange, std::vector<char>* out_data) override;
+
+ private:
+ Result Seek(Offset offset);
+
+ std::string filename_;
+ FILE* file_;
+};
+
+class LexerSourceBuffer : public LexerSource {
+ public:
+ LexerSourceBuffer(const void* data, Offset size);
+
+ std::unique_ptr<LexerSource> Clone() override;
+ Result Tell(Offset* out_offset) override;
+ size_t Fill(void* dest, size_t size) override;
+ Result ReadRange(OffsetRange, std::vector<char>* out_data) override;
+
+ private:
+ const void* data_;
+ Offset size_;
+ Offset read_offset_;
+};
+
+} // namespace wabt
+
+#endif // WABT_LEXER_SOURCE_H_
diff --git a/src/prebuilt/wast-lexer-gen.cc b/src/prebuilt/wast-lexer-gen.cc
index e6f14ced..4cf69ccf 100644
--- a/src/prebuilt/wast-lexer-gen.cc
+++ b/src/prebuilt/wast-lexer-gen.cc
@@ -23,6 +23,7 @@
#include "config.h"
+#include "lexer-source.h"
#include "wast-parser.h"
#include "wast-parser-lexer-shared.h"
@@ -33,12 +34,12 @@
#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 YY_USER_ACTION \
+ { \
+ loc->filename = filename_; \
+ loc->line = line_; \
+ loc->first_column = COLUMN(token_); \
+ loc->last_column = COLUMN(cursor_); \
}
#define RETURN(name) \
@@ -47,32 +48,32 @@
#define ERROR(...) \
YY_USER_ACTION; \
- wast_parser_error(loc, lexer, parser, __VA_ARGS__)
+ wast_parser_error(loc, this, 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; \
- } \
+#define FILL(n) \
+ do { \
+ if (WABT_FAILED(Fill(loc, parser, n))) { \
+ RETURN(EOF); \
+ continue; \
+ } \
} while (0)
-#define yytext (lexer->token)
-#define yyleng (lexer->cursor - lexer->token)
+#define yytext (token_)
+#define yyleng (cursor_ - 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 FILE_OFFSET(p) ((p) - (buffer_) + buffer_file_offset_)
+#define COLUMN(p) (FILE_OFFSET(p) - line_file_offset_ + 1)
-#define COMMENT_NESTING (lexer->comment_nesting)
-#define NEWLINE \
- do { \
- lexer->line++; \
- lexer->line_file_offset = FILE_OFFSET(lexer->cursor); \
+#define COMMENT_NESTING (comment_nesting_)
+#define NEWLINE \
+ do { \
+ line_++; \
+ line_file_offset_ = FILE_OFFSET(cursor_); \
} while (0)
#define TEXT \
@@ -94,83 +95,94 @@
namespace wabt {
-static Result fill(Location* loc,
- WastLexer* lexer,
- WastParser* parser,
- size_t need) {
- if (lexer->eof)
+WastLexer::WastLexer(std::unique_ptr<LexerSource> source, const char* filename)
+ : source_(std::move(source)),
+ line_finder_(source_->Clone()),
+ filename_(filename),
+ line_(1),
+ comment_nesting_(0),
+ buffer_file_offset_(0),
+ line_file_offset_(0),
+ eof_(false),
+ buffer_(nullptr),
+ buffer_size_(0),
+ marker_(nullptr),
+ token_(nullptr),
+ cursor_(nullptr),
+ limit_(nullptr) {}
+
+WastLexer::~WastLexer() {
+ delete[] buffer_;
+}
+
+// static
+std::unique_ptr<WastLexer> WastLexer::CreateFileLexer(const char* filename) {
+ std::unique_ptr<LexerSource> source(new LexerSourceFile(filename));
+ return std::unique_ptr<WastLexer>(new WastLexer(std::move(source), filename));
+}
+
+// static
+std::unique_ptr<WastLexer> WastLexer::CreateBufferLexer(const char* filename,
+ const void* data,
+ size_t size) {
+ std::unique_ptr<LexerSource> source(new LexerSourceBuffer(data, size));
+ return std::unique_ptr<WastLexer>(new WastLexer(std::move(source), filename));
+}
+
+Result WastLexer::Fill(Location* loc, WastParser* parser, size_t need) {
+ if (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 */
+ size_t free = token_ - buffer_;
+ assert(static_cast<size_t>(cursor_ - 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;
+ char* old_buffer = buffer_;
+ size_t old_buffer_size = 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 */
+ // 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;
+ if (limit_ > token_)
+ memmove(new_buffer, token_, limit_ - token_);
+ buffer_ = new_buffer;
+ buffer_size_ = new_buffer_size;
+ token_ = new_buffer + (token_ - old_buffer) - free;
+ marker_ = new_buffer + (marker_ - old_buffer) - free;
+ cursor_ = new_buffer + (cursor_ - old_buffer) - free;
+ limit_ = new_buffer + (limit_ - old_buffer) - free;
+ 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;
+ // Shift everything down to make more room in the buffer.
+ if (limit_ > token_)
+ memmove(buffer_, token_, limit_ - token_);
+ token_ -= free;
+ marker_ -= free;
+ cursor_ -= free;
+ limit_ -= free;
+ buffer_file_offset_ += free;
}
- /* 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;
+ // Read the new data into the buffer.
+ limit_ += source_->Fill(limit_, free);
+
+ // 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 (limit_ < buffer_ + buffer_size_ - YYMAXFILL) {
+ eof_ = true;
+ memset(limit_, 0, YYMAXFILL);
+ limit_ += YYMAXFILL;
}
return Result::Ok;
}
-int wast_lexer_lex(WABT_WAST_PARSER_STYPE* lval,
- WABT_WAST_PARSER_LTYPE* loc,
- WastLexer* lexer,
- WastParser* parser) {
+int WastLexer::GetToken(Token* lval, Location* loc, WastParser* parser) {
enum {
YYCOND_INIT,
YYCOND_BAD_TEXT,
@@ -180,9 +192,9 @@ int wast_lexer_lex(WABT_WAST_PARSER_STYPE* lval,
} cond = YYCOND_INIT;
for (;;) {
- lexer->token = lexer->cursor;
+ token_ = cursor_;
-#line 186 "src/prebuilt/wast-lexer-gen.cc"
+#line 198 "src/prebuilt/wast-lexer-gen.cc"
{
unsigned char yych;
if (cond < 2) {
@@ -200,8 +212,8 @@ int wast_lexer_lex(WABT_WAST_PARSER_STYPE* lval,
}
/* *********************************** */
YYCOND_BAD_TEXT:
- if ((lexer->limit - lexer->cursor) < 3) FILL(3);
- yych = *lexer->cursor;
+ if ((limit_ - cursor_) < 3) FILL(3);
+ yych = *cursor_;
if (yych <= '!') {
if (yych <= '\t') {
if (yych >= 0x01) goto yy5;
@@ -220,38 +232,38 @@ YYCOND_BAD_TEXT:
goto yy9;
}
}
- ++lexer->cursor;
-#line 237 "src/wast-lexer.cc"
+ ++cursor_;
+#line 249 "src/wast-lexer.cc"
{ ERROR("unexpected EOF"); RETURN(EOF); }
-#line 227 "src/prebuilt/wast-lexer-gen.cc"
+#line 239 "src/prebuilt/wast-lexer-gen.cc"
yy5:
- ++lexer->cursor;
+ ++cursor_;
yy6:
-#line 238 "src/wast-lexer.cc"
+#line 250 "src/wast-lexer.cc"
{ ERROR("illegal character in string");
continue; }
-#line 234 "src/prebuilt/wast-lexer-gen.cc"
+#line 246 "src/prebuilt/wast-lexer-gen.cc"
yy7:
- ++lexer->cursor;
+ ++cursor_;
BEGIN(YYCOND_i);
-#line 230 "src/wast-lexer.cc"
+#line 242 "src/wast-lexer.cc"
{ ERROR("newline in string");
NEWLINE;
continue; }
-#line 242 "src/prebuilt/wast-lexer-gen.cc"
+#line 254 "src/prebuilt/wast-lexer-gen.cc"
yy9:
- ++lexer->cursor;
-#line 229 "src/wast-lexer.cc"
+ ++cursor_;
+#line 241 "src/wast-lexer.cc"
{ continue; }
-#line 247 "src/prebuilt/wast-lexer-gen.cc"
+#line 259 "src/prebuilt/wast-lexer-gen.cc"
yy11:
- ++lexer->cursor;
+ ++cursor_;
BEGIN(YYCOND_i);
-#line 236 "src/wast-lexer.cc"
+#line 248 "src/wast-lexer.cc"
{ TEXT; RETURN(TEXT); }
-#line 253 "src/prebuilt/wast-lexer-gen.cc"
+#line 265 "src/prebuilt/wast-lexer-gen.cc"
yy13:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= '@') {
if (yych <= '"') {
if (yych == '\n') goto yy6;
@@ -281,16 +293,16 @@ yy13:
}
}
yy14:
- ++lexer->cursor;
+ ++cursor_;
yy15:
-#line 233 "src/wast-lexer.cc"
+#line 245 "src/wast-lexer.cc"
{ ERROR("bad escape \"%.*s\"",
static_cast<int>(yyleng), yytext);
continue; }
-#line 291 "src/prebuilt/wast-lexer-gen.cc"
+#line 303 "src/prebuilt/wast-lexer-gen.cc"
yy16:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= '@') {
+ ++cursor_;
+ if ((yych = *cursor_) <= '@') {
if (yych <= '/') goto yy15;
if (yych <= '9') goto yy9;
goto yy15;
@@ -302,8 +314,8 @@ yy16:
}
/* *********************************** */
YYCOND_BLOCK_COMMENT:
- if ((lexer->limit - lexer->cursor) < 2) FILL(2);
- yych = *lexer->cursor;
+ if ((limit_ - cursor_) < 2) FILL(2);
+ yych = *cursor_;
if (yych <= '\'') {
if (yych <= 0x00) goto yy19;
if (yych == '\n') goto yy23;
@@ -314,41 +326,41 @@ YYCOND_BLOCK_COMMENT:
goto yy21;
}
yy19:
- ++lexer->cursor;
-#line 460 "src/wast-lexer.cc"
+ ++cursor_;
+#line 472 "src/wast-lexer.cc"
{ ERROR("unexpected EOF"); RETURN(EOF); }
-#line 321 "src/prebuilt/wast-lexer-gen.cc"
+#line 333 "src/prebuilt/wast-lexer-gen.cc"
yy21:
- ++lexer->cursor;
+ ++cursor_;
yy22:
-#line 461 "src/wast-lexer.cc"
+#line 473 "src/wast-lexer.cc"
{ continue; }
-#line 327 "src/prebuilt/wast-lexer-gen.cc"
+#line 339 "src/prebuilt/wast-lexer-gen.cc"
yy23:
- ++lexer->cursor;
-#line 459 "src/wast-lexer.cc"
+ ++cursor_;
+#line 471 "src/wast-lexer.cc"
{ NEWLINE; continue; }
-#line 332 "src/prebuilt/wast-lexer-gen.cc"
+#line 344 "src/prebuilt/wast-lexer-gen.cc"
yy25:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == ';') goto yy27;
goto yy22;
yy26:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == ')') goto yy29;
goto yy22;
yy27:
- ++lexer->cursor;
-#line 455 "src/wast-lexer.cc"
+ ++cursor_;
+#line 467 "src/wast-lexer.cc"
{ COMMENT_NESTING++; continue; }
-#line 345 "src/prebuilt/wast-lexer-gen.cc"
+#line 357 "src/prebuilt/wast-lexer-gen.cc"
yy29:
- ++lexer->cursor;
-#line 456 "src/wast-lexer.cc"
+ ++cursor_;
+#line 468 "src/wast-lexer.cc"
{ if (--COMMENT_NESTING == 0)
BEGIN(YYCOND_INIT);
continue; }
-#line 352 "src/prebuilt/wast-lexer-gen.cc"
+#line 364 "src/prebuilt/wast-lexer-gen.cc"
/* *********************************** */
YYCOND_LINE_COMMENT:
{
@@ -386,30 +398,30 @@ YYCOND_LINE_COMMENT:
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 (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
if (yybm[0+yych] & 128) {
goto yy34;
}
goto yy36;
yy33:
-#line 453 "src/wast-lexer.cc"
+#line 465 "src/wast-lexer.cc"
{ continue; }
-#line 399 "src/prebuilt/wast-lexer-gen.cc"
+#line 411 "src/prebuilt/wast-lexer-gen.cc"
yy34:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
if (yybm[0+yych] & 128) {
goto yy34;
}
goto yy33;
yy36:
- ++lexer->cursor;
+ ++cursor_;
BEGIN(YYCOND_i);
-#line 452 "src/wast-lexer.cc"
+#line 464 "src/wast-lexer.cc"
{ NEWLINE; continue; }
-#line 413 "src/prebuilt/wast-lexer-gen.cc"
+#line 425 "src/prebuilt/wast-lexer-gen.cc"
}
/* *********************************** */
YYCOND_i:
@@ -448,8 +460,8 @@ YYCOND_i:
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 ((limit_ - cursor_) < 29) FILL(29);
+ yych = *cursor_;
if (yybm[0+yych] & 8) {
goto yy44;
}
@@ -550,56 +562,56 @@ YYCOND_i:
default: goto yy42;
}
yy40:
- ++lexer->cursor;
-#line 467 "src/wast-lexer.cc"
+ ++cursor_;
+#line 479 "src/wast-lexer.cc"
{ RETURN(EOF); }
-#line 557 "src/prebuilt/wast-lexer-gen.cc"
+#line 569 "src/prebuilt/wast-lexer-gen.cc"
yy42:
- ++lexer->cursor;
+ ++cursor_;
yy43:
-#line 468 "src/wast-lexer.cc"
+#line 480 "src/wast-lexer.cc"
{ ERROR("unexpected char"); continue; }
-#line 563 "src/prebuilt/wast-lexer-gen.cc"
+#line 575 "src/prebuilt/wast-lexer-gen.cc"
yy44:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
if (yybm[0+yych] & 8) {
goto yy44;
}
-#line 463 "src/wast-lexer.cc"
+#line 475 "src/wast-lexer.cc"
{ continue; }
-#line 573 "src/prebuilt/wast-lexer-gen.cc"
+#line 585 "src/prebuilt/wast-lexer-gen.cc"
yy47:
- ++lexer->cursor;
-#line 462 "src/wast-lexer.cc"
+ ++cursor_;
+#line 474 "src/wast-lexer.cc"
{ NEWLINE; continue; }
-#line 578 "src/prebuilt/wast-lexer-gen.cc"
+#line 590 "src/prebuilt/wast-lexer-gen.cc"
yy49:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
yy50:
if (yybm[0+yych] & 16) {
goto yy49;
}
yy51:
-#line 464 "src/wast-lexer.cc"
+#line 476 "src/wast-lexer.cc"
{ ERROR("unexpected token \"%.*s\"",
static_cast<int>(yyleng), yytext);
continue; }
-#line 592 "src/prebuilt/wast-lexer-gen.cc"
+#line 604 "src/prebuilt/wast-lexer-gen.cc"
yy52:
- yych = *(lexer->marker = ++lexer->cursor);
+ yych = *(marker_ = ++cursor_);
if (yych <= 0x1F) goto yy53;
if (yych != 0x7F) goto yy83;
yy53:
BEGIN(YYCOND_BAD_TEXT);
-#line 228 "src/wast-lexer.cc"
+#line 240 "src/wast-lexer.cc"
{ continue; }
-#line 601 "src/prebuilt/wast-lexer-gen.cc"
+#line 613 "src/prebuilt/wast-lexer-gen.cc"
yy54:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= ';') {
if (yych <= '\'') {
if (yych == '!') goto yy88;
@@ -635,18 +647,18 @@ yy54:
}
}
yy55:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) == ';') goto yy91;
-#line 219 "src/wast-lexer.cc"
+ ++cursor_;
+ if ((yych = *cursor_) == ';') goto yy91;
+#line 231 "src/wast-lexer.cc"
{ RETURN(LPAR); }
-#line 643 "src/prebuilt/wast-lexer-gen.cc"
+#line 655 "src/prebuilt/wast-lexer-gen.cc"
yy57:
- ++lexer->cursor;
-#line 220 "src/wast-lexer.cc"
+ ++cursor_;
+#line 232 "src/wast-lexer.cc"
{ RETURN(RPAR); }
-#line 648 "src/prebuilt/wast-lexer-gen.cc"
+#line 660 "src/prebuilt/wast-lexer-gen.cc"
yy59:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'h') {
if (yych <= '/') goto yy50;
if (yych <= '0') goto yy93;
@@ -658,8 +670,8 @@ yy59:
goto yy50;
}
yy60:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 32) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 32) {
goto yy62;
}
if (yych <= 'E') {
@@ -701,13 +713,13 @@ yy60:
}
}
yy61:
-#line 221 "src/wast-lexer.cc"
+#line 233 "src/wast-lexer.cc"
{ LITERAL(Int); RETURN(NAT); }
-#line 707 "src/prebuilt/wast-lexer-gen.cc"
+#line 719 "src/prebuilt/wast-lexer-gen.cc"
yy62:
- ++lexer->cursor;
- if ((lexer->limit - lexer->cursor) < 3) FILL(3);
- yych = *lexer->cursor;
+ ++cursor_;
+ if ((limit_ - cursor_) < 3) FILL(3);
+ yych = *cursor_;
if (yybm[0+yych] & 32) {
goto yy62;
}
@@ -754,11 +766,11 @@ yy62:
}
}
yy64:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == ';') goto yy104;
goto yy43;
yy65:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'm') {
if (yych == 'l') goto yy106;
goto yy50;
@@ -768,22 +780,22 @@ yy65:
goto yy50;
}
yy66:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy109;
if (yych == 'r') goto yy110;
goto yy50;
yy67:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy112;
if (yych == 'u') goto yy113;
goto yy50;
yy68:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy114;
if (yych == 'r') goto yy115;
goto yy50;
yy69:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'm') {
if (yych == 'l') goto yy116;
goto yy50;
@@ -793,7 +805,7 @@ yy69:
goto yy50;
}
yy70:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= '5') {
if (yych == '3') goto yy119;
goto yy50;
@@ -803,7 +815,7 @@ yy70:
goto yy50;
}
yy71:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'k') {
if (yych == 'e') goto yy122;
goto yy50;
@@ -813,7 +825,7 @@ yy71:
goto yy50;
}
yy72:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'e') {
if (yych <= '3') {
if (yych <= '2') goto yy50;
@@ -833,11 +845,11 @@ yy72:
}
}
yy73:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy131;
goto yy50;
yy74:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'n') {
if (yych == 'e') goto yy132;
goto yy50;
@@ -847,29 +859,29 @@ yy74:
goto yy50;
}
yy75:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy135;
if (yych == 'o') goto yy136;
goto yy50;
yy76:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy137;
goto yy50;
yy77:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy138;
goto yy50;
yy78:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy139;
goto yy50;
yy79:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy140;
if (yych == 't') goto yy141;
goto yy50;
yy80:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'e') {
if (yych == 'a') goto yy142;
if (yych <= 'd') goto yy50;
@@ -884,13 +896,13 @@ yy80:
}
}
yy81:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy146;
goto yy50;
yy82:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
yy83:
if (yybm[0+yych] & 64) {
goto yy82;
@@ -899,17 +911,17 @@ yy83:
if (yych <= '"') goto yy85;
if (yych <= '\\') goto yy87;
yy84:
- lexer->cursor = lexer->marker;
+ cursor_ = marker_;
goto yy53;
yy85:
- ++lexer->cursor;
-#line 227 "src/wast-lexer.cc"
+ ++cursor_;
+#line 239 "src/wast-lexer.cc"
{ TEXT; RETURN(TEXT); }
-#line 909 "src/prebuilt/wast-lexer-gen.cc"
+#line 921 "src/prebuilt/wast-lexer-gen.cc"
yy87:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
if (yych <= 'F') {
if (yych <= '\'') {
if (yych == '"') goto yy82;
@@ -937,9 +949,9 @@ yy87:
}
}
yy88:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
if (yych <= ';') {
if (yych <= '\'') {
if (yych == '!') goto yy88;
@@ -968,18 +980,18 @@ yy88:
}
}
yy90:
-#line 449 "src/wast-lexer.cc"
+#line 461 "src/wast-lexer.cc"
{ TEXT; RETURN(VAR); }
-#line 974 "src/prebuilt/wast-lexer-gen.cc"
+#line 986 "src/prebuilt/wast-lexer-gen.cc"
yy91:
- ++lexer->cursor;
+ ++cursor_;
BEGIN(YYCOND_BLOCK_COMMENT);
-#line 454 "src/wast-lexer.cc"
+#line 466 "src/wast-lexer.cc"
{ COMMENT_NESTING = 1; continue; }
-#line 980 "src/prebuilt/wast-lexer-gen.cc"
+#line 992 "src/prebuilt/wast-lexer-gen.cc"
yy93:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= 'D') {
+ ++cursor_;
+ if ((yych = *cursor_) <= 'D') {
if (yych <= ',') {
if (yych <= '"') {
if (yych == '!') goto yy49;
@@ -1018,13 +1030,13 @@ yy93:
}
}
yy94:
-#line 222 "src/wast-lexer.cc"
+#line 234 "src/wast-lexer.cc"
{ LITERAL(Int); RETURN(INT); }
-#line 1024 "src/prebuilt/wast-lexer-gen.cc"
+#line 1036 "src/prebuilt/wast-lexer-gen.cc"
yy95:
- ++lexer->cursor;
- if ((lexer->limit - lexer->cursor) < 3) FILL(3);
- yych = *lexer->cursor;
+ ++cursor_;
+ if ((limit_ - cursor_) < 3) FILL(3);
+ yych = *cursor_;
if (yych <= ';') {
if (yych <= '+') {
if (yych <= '"') {
@@ -1070,17 +1082,17 @@ yy95:
}
}
yy97:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy149;
goto yy50;
yy98:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy135;
goto yy50;
yy99:
- ++lexer->cursor;
- if ((lexer->limit - lexer->cursor) < 3) FILL(3);
- yych = *lexer->cursor;
+ ++cursor_;
+ if ((limit_ - cursor_) < 3) FILL(3);
+ yych = *cursor_;
if (yych <= 'D') {
if (yych <= '+') {
if (yych <= '"') {
@@ -1117,11 +1129,11 @@ yy99:
}
}
yy101:
-#line 223 "src/wast-lexer.cc"
+#line 235 "src/wast-lexer.cc"
{ LITERAL(Float); RETURN(FLOAT); }
-#line 1123 "src/prebuilt/wast-lexer-gen.cc"
+#line 1135 "src/prebuilt/wast-lexer-gen.cc"
yy102:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= ',') {
if (yych == '+') goto yy150;
goto yy50;
@@ -1132,36 +1144,36 @@ yy102:
goto yy50;
}
yy103:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yybm[0+yych] & 128) {
goto yy153;
}
goto yy50;
yy104:
- ++lexer->cursor;
+ ++cursor_;
BEGIN(YYCOND_LINE_COMMENT);
-#line 451 "src/wast-lexer.cc"
+#line 463 "src/wast-lexer.cc"
{ continue; }
-#line 1146 "src/prebuilt/wast-lexer-gen.cc"
+#line 1158 "src/prebuilt/wast-lexer-gen.cc"
yy106:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy155;
goto yy50;
yy107:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'y') goto yy156;
goto yy50;
yy108:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy157;
goto yy50;
yy109:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy158;
goto yy50;
yy110:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= 'Z') {
+ ++cursor_;
+ if ((yych = *cursor_) <= 'Z') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -1194,122 +1206,122 @@ yy110:
}
}
yy111:
-#line 252 "src/wast-lexer.cc"
+#line 264 "src/wast-lexer.cc"
{ RETURN(BR); }
-#line 1200 "src/prebuilt/wast-lexer-gen.cc"
+#line 1212 "src/prebuilt/wast-lexer-gen.cc"
yy112:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy160;
goto yy50;
yy113:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy161;
goto yy50;
yy114:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy162;
goto yy50;
yy115:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy163;
goto yy50;
yy116:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy164;
if (yych == 's') goto yy165;
goto yy50;
yy117:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy166;
goto yy50;
yy118:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy168;
goto yy50;
yy119:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy169;
goto yy50;
yy120:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy171;
goto yy50;
yy121:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy173;
goto yy50;
yy122:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy174;
goto yy50;
yy123:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy176;
goto yy50;
yy124:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy177;
goto yy50;
yy125:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy178;
goto yy50;
yy126:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy180;
goto yy50;
yy127:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 248 "src/wast-lexer.cc"
+#line 260 "src/wast-lexer.cc"
{ RETURN(IF); }
-#line 1269 "src/prebuilt/wast-lexer-gen.cc"
+#line 1281 "src/prebuilt/wast-lexer-gen.cc"
yy129:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy182;
goto yy50;
yy130:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy183;
if (yych == 'v') goto yy185;
goto yy50;
yy131:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy186;
if (yych == 'o') goto yy187;
goto yy50;
yy132:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'm') goto yy188;
goto yy50;
yy133:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy189;
goto yy50;
yy134:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy190;
goto yy50;
yy135:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy192;
goto yy50;
yy136:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy194;
goto yy50;
yy137:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy196;
goto yy50;
yy138:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy197;
goto yy50;
yy139:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'r') {
if (yych == 'g') goto yy198;
goto yy50;
@@ -1319,38 +1331,38 @@ yy139:
goto yy50;
}
yy140:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy201;
if (yych == 't') goto yy202;
goto yy50;
yy141:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy203;
goto yy50;
yy142:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'b') goto yy204;
goto yy50;
yy143:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy205;
goto yy50;
yy144:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy206;
goto yy50;
yy145:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy207;
goto yy50;
yy146:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy208;
goto yy50;
yy147:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
if (yych <= '@') {
if (yych <= '/') goto yy84;
if (yych <= '9') goto yy82;
@@ -1362,7 +1374,7 @@ yy147:
goto yy84;
}
yy148:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= '@') {
if (yych <= '/') goto yy50;
if (yych <= '9') goto yy209;
@@ -1374,17 +1386,17 @@ yy148:
goto yy50;
}
yy149:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy183;
goto yy50;
yy150:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= '/') goto yy50;
if (yych >= ':') goto yy50;
yy151:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
if (yych <= ':') {
if (yych <= ')') {
if (yych <= '!') {
@@ -1425,9 +1437,9 @@ yy151:
}
}
yy153:
- ++lexer->cursor;
- if ((lexer->limit - lexer->cursor) < 3) FILL(3);
- yych = *lexer->cursor;
+ ++cursor_;
+ if ((limit_ - cursor_) < 3) FILL(3);
+ yych = *cursor_;
if (yybm[0+yych] & 128) {
goto yy153;
}
@@ -1472,65 +1484,65 @@ yy153:
}
}
yy155:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'g') goto yy214;
goto yy50;
yy156:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy215;
goto yy50;
yy157:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy216;
goto yy50;
yy158:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy217;
goto yy50;
yy159:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy218;
if (yych == 't') goto yy219;
goto yy50;
yy160:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy220;
goto yy50;
yy161:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy222;
goto yy50;
yy162:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy223;
goto yy50;
yy163:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy225;
goto yy50;
yy164:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'm') goto yy227;
goto yy50;
yy165:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy229;
goto yy50;
yy166:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 258 "src/wast-lexer.cc"
+#line 270 "src/wast-lexer.cc"
{ RETURN(END); }
-#line 1527 "src/prebuilt/wast-lexer-gen.cc"
+#line 1539 "src/prebuilt/wast-lexer-gen.cc"
yy168:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy231;
goto yy50;
yy169:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= ':') {
+ ++cursor_;
+ if ((yych = *cursor_) <= ':') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -1562,12 +1574,12 @@ yy169:
}
}
yy170:
-#line 242 "src/wast-lexer.cc"
+#line 254 "src/wast-lexer.cc"
{ TYPE(F32); RETURN(VALUE_TYPE); }
-#line 1568 "src/prebuilt/wast-lexer-gen.cc"
+#line 1580 "src/prebuilt/wast-lexer-gen.cc"
yy171:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= ':') {
+ ++cursor_;
+ if ((yych = *cursor_) <= ':') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -1599,16 +1611,16 @@ yy171:
}
}
yy172:
-#line 243 "src/wast-lexer.cc"
+#line 255 "src/wast-lexer.cc"
{ TYPE(F64); RETURN(VALUE_TYPE); }
-#line 1605 "src/prebuilt/wast-lexer-gen.cc"
+#line 1617 "src/prebuilt/wast-lexer-gen.cc"
yy173:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy234;
goto yy50;
yy174:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= 'Z') {
+ ++cursor_;
+ if ((yych = *cursor_) <= 'Z') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -1641,20 +1653,20 @@ yy174:
}
}
yy175:
-#line 438 "src/wast-lexer.cc"
+#line 450 "src/wast-lexer.cc"
{ RETURN(GET); }
-#line 1647 "src/prebuilt/wast-lexer-gen.cc"
+#line 1659 "src/prebuilt/wast-lexer-gen.cc"
yy176:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'b') goto yy237;
goto yy50;
yy177:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'w') goto yy238;
goto yy50;
yy178:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= ':') {
+ ++cursor_;
+ if ((yych = *cursor_) <= ':') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -1686,12 +1698,12 @@ yy178:
}
}
yy179:
-#line 240 "src/wast-lexer.cc"
+#line 252 "src/wast-lexer.cc"
{ TYPE(I32); RETURN(VALUE_TYPE); }
-#line 1692 "src/prebuilt/wast-lexer-gen.cc"
+#line 1704 "src/prebuilt/wast-lexer-gen.cc"
yy180:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= ':') {
+ ++cursor_;
+ if ((yych = *cursor_) <= ':') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -1723,16 +1735,16 @@ yy180:
}
}
yy181:
-#line 241 "src/wast-lexer.cc"
+#line 253 "src/wast-lexer.cc"
{ TYPE(I64); RETURN(VALUE_TYPE); }
-#line 1729 "src/prebuilt/wast-lexer-gen.cc"
+#line 1741 "src/prebuilt/wast-lexer-gen.cc"
yy182:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy241;
goto yy50;
yy183:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= 'Z') {
+ ++cursor_;
+ if ((yych = *cursor_) <= 'Z') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -1765,40 +1777,40 @@ yy183:
}
}
yy184:
-#line 225 "src/wast-lexer.cc"
+#line 237 "src/wast-lexer.cc"
{ LITERAL(Infinity); RETURN(FLOAT); }
-#line 1771 "src/prebuilt/wast-lexer-gen.cc"
+#line 1783 "src/prebuilt/wast-lexer-gen.cc"
yy185:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy243;
goto yy50;
yy186:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy244;
goto yy50;
yy187:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy245;
goto yy50;
yy188:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy247;
goto yy50;
yy189:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'u') goto yy248;
goto yy50;
yy190:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 245 "src/wast-lexer.cc"
+#line 257 "src/wast-lexer.cc"
{ RETURN(MUT); }
-#line 1799 "src/prebuilt/wast-lexer-gen.cc"
+#line 1811 "src/prebuilt/wast-lexer-gen.cc"
yy192:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= ';') {
+ ++cursor_;
+ if ((yych = *cursor_) <= ';') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -1830,73 +1842,73 @@ yy192:
}
}
yy193:
-#line 226 "src/wast-lexer.cc"
+#line 238 "src/wast-lexer.cc"
{ LITERAL(Nan); RETURN(FLOAT); }
-#line 1836 "src/prebuilt/wast-lexer-gen.cc"
+#line 1848 "src/prebuilt/wast-lexer-gen.cc"
yy194:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 246 "src/wast-lexer.cc"
+#line 258 "src/wast-lexer.cc"
{ RETURN(NOP); }
-#line 1844 "src/prebuilt/wast-lexer-gen.cc"
+#line 1856 "src/prebuilt/wast-lexer-gen.cc"
yy196:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy250;
goto yy50;
yy197:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy251;
goto yy50;
yy198:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy252;
goto yy50;
yy199:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'u') goto yy253;
goto yy50;
yy200:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'u') goto yy254;
goto yy50;
yy201:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy255;
goto yy50;
yy202:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy256;
goto yy50;
yy203:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy257;
goto yy50;
yy204:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy258;
goto yy50;
yy205:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy259;
goto yy50;
yy206:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy260;
goto yy50;
yy207:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy262;
goto yy50;
yy208:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy264;
goto yy50;
yy209:
- ++lexer->cursor;
- if ((lexer->limit - lexer->cursor) < 3) FILL(3);
- yych = *lexer->cursor;
+ ++cursor_;
+ if ((limit_ - cursor_) < 3) FILL(3);
+ yych = *cursor_;
if (yych <= '@') {
if (yych <= ',') {
if (yych <= '"') {
@@ -1941,9 +1953,9 @@ yy209:
}
}
yy211:
- ++lexer->cursor;
- if ((lexer->limit - lexer->cursor) < 3) FILL(3);
- yych = *lexer->cursor;
+ ++cursor_;
+ if ((limit_ - cursor_) < 3) FILL(3);
+ yych = *cursor_;
if (yych <= 'F') {
if (yych <= '+') {
if (yych <= '"') {
@@ -1989,7 +2001,7 @@ yy211:
}
}
yy213:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= ',') {
if (yych == '+') goto yy265;
goto yy50;
@@ -2000,32 +2012,32 @@ yy213:
goto yy50;
}
yy214:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy269;
goto yy50;
yy215:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'u') goto yy270;
goto yy50;
yy216:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy271;
goto yy50;
yy217:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'k') goto yy272;
goto yy50;
yy218:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy274;
goto yy50;
yy219:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy276;
goto yy50;
yy220:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= 'Z') {
+ ++cursor_;
+ if ((yych = *cursor_) <= 'Z') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -2058,51 +2070,51 @@ yy220:
}
}
yy221:
-#line 255 "src/wast-lexer.cc"
+#line 267 "src/wast-lexer.cc"
{ RETURN(CALL); }
-#line 2064 "src/prebuilt/wast-lexer-gen.cc"
+#line 2076 "src/prebuilt/wast-lexer-gen.cc"
yy222:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy278;
goto yy50;
yy223:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 432 "src/wast-lexer.cc"
+#line 444 "src/wast-lexer.cc"
{ RETURN(DATA); }
-#line 2076 "src/prebuilt/wast-lexer-gen.cc"
+#line 2088 "src/prebuilt/wast-lexer-gen.cc"
yy225:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 257 "src/wast-lexer.cc"
+#line 269 "src/wast-lexer.cc"
{ RETURN(DROP); }
-#line 2084 "src/prebuilt/wast-lexer-gen.cc"
+#line 2096 "src/prebuilt/wast-lexer-gen.cc"
yy227:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 431 "src/wast-lexer.cc"
+#line 443 "src/wast-lexer.cc"
{ RETURN(ELEM); }
-#line 2092 "src/prebuilt/wast-lexer-gen.cc"
+#line 2104 "src/prebuilt/wast-lexer-gen.cc"
yy229:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 250 "src/wast-lexer.cc"
+#line 262 "src/wast-lexer.cc"
{ RETURN(ELSE); }
-#line 2100 "src/prebuilt/wast-lexer-gen.cc"
+#line 2112 "src/prebuilt/wast-lexer-gen.cc"
yy231:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy279;
goto yy50;
yy232:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
switch (yych) {
case 'a': goto yy280;
case 'c': goto yy281;
@@ -2119,7 +2131,7 @@ yy232:
default: goto yy50;
}
yy233:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
switch (yych) {
case 'a': goto yy292;
case 'c': goto yy293;
@@ -2137,28 +2149,28 @@ yy233:
default: goto yy50;
}
yy234:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 422 "src/wast-lexer.cc"
+#line 434 "src/wast-lexer.cc"
{ RETURN(FUNC); }
-#line 2147 "src/prebuilt/wast-lexer-gen.cc"
+#line 2159 "src/prebuilt/wast-lexer-gen.cc"
yy236:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'g') goto yy305;
if (yych == 'l') goto yy306;
goto yy50;
yy237:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy307;
goto yy50;
yy238:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy308;
goto yy50;
yy239:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
switch (yych) {
case 'a': goto yy309;
case 'c': goto yy310;
@@ -2178,7 +2190,7 @@ yy239:
default: goto yy50;
}
yy240:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
switch (yych) {
case 'a': goto yy324;
case 'c': goto yy325;
@@ -2197,110 +2209,110 @@ yy240:
default: goto yy50;
}
yy241:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy338;
goto yy50;
yy242:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy339;
goto yy50;
yy243:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'k') goto yy340;
goto yy50;
yy244:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy341;
goto yy50;
yy245:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 251 "src/wast-lexer.cc"
+#line 263 "src/wast-lexer.cc"
{ RETURN(LOOP); }
-#line 2223 "src/prebuilt/wast-lexer-gen.cc"
+#line 2235 "src/prebuilt/wast-lexer-gen.cc"
yy247:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy343;
goto yy50;
yy248:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy344;
goto yy50;
yy249:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '0') goto yy345;
goto yy50;
yy250:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy346;
goto yy50;
yy251:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'm') goto yy347;
goto yy50;
yy252:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy349;
goto yy50;
yy253:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy350;
goto yy50;
yy254:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy351;
goto yy50;
yy255:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy352;
goto yy50;
yy256:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'g') goto yy353;
if (yych == 'l') goto yy354;
goto yy50;
yy257:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy355;
goto yy50;
yy258:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy357;
goto yy50;
yy259:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy359;
goto yy50;
yy260:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 249 "src/wast-lexer.cc"
+#line 261 "src/wast-lexer.cc"
{ RETURN(THEN); }
-#line 2284 "src/prebuilt/wast-lexer-gen.cc"
+#line 2296 "src/prebuilt/wast-lexer-gen.cc"
yy262:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 421 "src/wast-lexer.cc"
+#line 433 "src/wast-lexer.cc"
{ RETURN(TYPE); }
-#line 2292 "src/prebuilt/wast-lexer-gen.cc"
+#line 2304 "src/prebuilt/wast-lexer-gen.cc"
yy264:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy360;
goto yy50;
yy265:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= '/') goto yy50;
if (yych >= ':') goto yy50;
yy266:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
if (yych <= ':') {
if (yych <= ')') {
if (yych <= '!') {
@@ -2334,83 +2346,83 @@ yy266:
}
}
yy268:
-#line 224 "src/wast-lexer.cc"
+#line 236 "src/wast-lexer.cc"
{ LITERAL(Hexfloat); RETURN(FLOAT); }
-#line 2340 "src/prebuilt/wast-lexer-gen.cc"
+#line 2352 "src/prebuilt/wast-lexer-gen.cc"
yy269:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '=') goto yy361;
goto yy50;
yy270:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy362;
goto yy50;
yy271:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy363;
goto yy50;
yy272:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 247 "src/wast-lexer.cc"
+#line 259 "src/wast-lexer.cc"
{ RETURN(BLOCK); }
-#line 2360 "src/prebuilt/wast-lexer-gen.cc"
+#line 2372 "src/prebuilt/wast-lexer-gen.cc"
yy274:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 253 "src/wast-lexer.cc"
+#line 265 "src/wast-lexer.cc"
{ RETURN(BR_IF); }
-#line 2368 "src/prebuilt/wast-lexer-gen.cc"
+#line 2380 "src/prebuilt/wast-lexer-gen.cc"
yy276:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'b') goto yy364;
goto yy50;
yy277:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy365;
goto yy50;
yy278:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy366;
goto yy50;
yy279:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy367;
goto yy50;
yy280:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'b') goto yy369;
if (yych == 'd') goto yy370;
goto yy50;
yy281:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy371;
if (yych == 'o') goto yy372;
goto yy50;
yy282:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy373;
if (yych == 'i') goto yy374;
goto yy50;
yy283:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'q') goto yy375;
goto yy50;
yy284:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy377;
goto yy50;
yy285:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy378;
if (yych == 't') goto yy380;
goto yy50;
yy286:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'n') {
if (yych == 'e') goto yy382;
goto yy50;
@@ -2420,7 +2432,7 @@ yy286:
goto yy50;
}
yy287:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'h') {
if (yych == 'a') goto yy387;
goto yy50;
@@ -2430,15 +2442,15 @@ yy287:
goto yy50;
}
yy288:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy390;
goto yy50;
yy289:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy392;
goto yy50;
yy290:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 's') {
if (yych == 'q') goto yy393;
goto yy50;
@@ -2448,38 +2460,38 @@ yy290:
goto yy50;
}
yy291:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy396;
goto yy50;
yy292:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'b') goto yy397;
if (yych == 'd') goto yy398;
goto yy50;
yy293:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy399;
if (yych == 'o') goto yy400;
goto yy50;
yy294:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy401;
goto yy50;
yy295:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'q') goto yy402;
goto yy50;
yy296:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy404;
goto yy50;
yy297:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy405;
if (yych == 't') goto yy407;
goto yy50;
yy298:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'n') {
if (yych == 'e') goto yy409;
goto yy50;
@@ -2489,7 +2501,7 @@ yy298:
goto yy50;
}
yy299:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'h') {
if (yych == 'a') goto yy414;
goto yy50;
@@ -2499,19 +2511,19 @@ yy299:
goto yy50;
}
yy300:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy417;
goto yy50;
yy301:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy419;
goto yy50;
yy302:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy420;
goto yy50;
yy303:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 's') {
if (yych == 'q') goto yy421;
goto yy50;
@@ -2521,32 +2533,32 @@ yy303:
goto yy50;
}
yy304:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy424;
goto yy50;
yy305:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy425;
goto yy50;
yy306:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy426;
goto yy50;
yy307:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy427;
goto yy50;
yy308:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'm') goto yy429;
goto yy50;
yy309:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy430;
if (yych == 'n') goto yy431;
goto yy50;
yy310:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'n') {
if (yych == 'l') goto yy432;
goto yy50;
@@ -2556,20 +2568,20 @@ yy310:
goto yy50;
}
yy311:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy435;
goto yy50;
yy312:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'q') goto yy436;
goto yy50;
yy313:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy438;
if (yych == 't') goto yy439;
goto yy50;
yy314:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'n') {
if (yych == 'e') goto yy440;
goto yy50;
@@ -2579,28 +2591,28 @@ yy314:
goto yy50;
}
yy315:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'u') goto yy443;
goto yy50;
yy316:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy444;
goto yy50;
yy317:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy446;
goto yy50;
yy318:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy448;
goto yy50;
yy319:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy449;
if (yych == 'o') goto yy450;
goto yy50;
yy320:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 's') {
if (yych == 'h') goto yy451;
goto yy50;
@@ -2610,24 +2622,24 @@ yy320:
goto yy50;
}
yy321:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy454;
goto yy50;
yy322:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy455;
goto yy50;
yy323:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy456;
goto yy50;
yy324:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy457;
if (yych == 'n') goto yy458;
goto yy50;
yy325:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'n') {
if (yych == 'l') goto yy459;
goto yy50;
@@ -2637,21 +2649,21 @@ yy325:
goto yy50;
}
yy326:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy462;
goto yy50;
yy327:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'q') goto yy463;
if (yych == 'x') goto yy465;
goto yy50;
yy328:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy466;
if (yych == 't') goto yy467;
goto yy50;
yy329:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 'n') {
if (yych == 'e') goto yy468;
goto yy50;
@@ -2661,28 +2673,28 @@ yy329:
goto yy50;
}
yy330:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'u') goto yy471;
goto yy50;
yy331:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy472;
goto yy50;
yy332:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy474;
goto yy50;
yy333:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy476;
goto yy50;
yy334:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy477;
if (yych == 'o') goto yy478;
goto yy50;
yy335:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= 's') {
if (yych == 'h') goto yy479;
goto yy50;
@@ -2692,227 +2704,227 @@ yy335:
goto yy50;
}
yy336:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy482;
goto yy50;
yy337:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy483;
goto yy50;
yy338:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy484;
goto yy50;
yy339:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy486;
goto yy50;
yy340:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy487;
goto yy50;
yy341:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 425 "src/wast-lexer.cc"
+#line 437 "src/wast-lexer.cc"
{ RETURN(LOCAL); }
-#line 2722 "src/prebuilt/wast-lexer-gen.cc"
+#line 2734 "src/prebuilt/wast-lexer-gen.cc"
yy343:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'y') goto yy489;
goto yy50;
yy344:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy491;
goto yy50;
yy345:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'x') goto yy493;
goto yy50;
yy346:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy494;
goto yy50;
yy347:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 423 "src/wast-lexer.cc"
+#line 435 "src/wast-lexer.cc"
{ RETURN(PARAM); }
-#line 2746 "src/prebuilt/wast-lexer-gen.cc"
+#line 2758 "src/prebuilt/wast-lexer-gen.cc"
yy349:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy496;
goto yy50;
yy350:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy497;
goto yy50;
yy351:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy499;
goto yy50;
yy352:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy501;
goto yy50;
yy353:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy503;
goto yy50;
yy354:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy504;
goto yy50;
yy355:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 430 "src/wast-lexer.cc"
+#line 442 "src/wast-lexer.cc"
{ RETURN(START); }
-#line 2778 "src/prebuilt/wast-lexer-gen.cc"
+#line 2790 "src/prebuilt/wast-lexer-gen.cc"
yy357:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 428 "src/wast-lexer.cc"
+#line 440 "src/wast-lexer.cc"
{ RETURN(TABLE); }
-#line 2786 "src/prebuilt/wast-lexer-gen.cc"
+#line 2798 "src/prebuilt/wast-lexer-gen.cc"
yy359:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy505;
goto yy50;
yy360:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy506;
goto yy50;
yy361:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= '/') goto yy50;
if (yych <= '0') goto yy507;
if (yych <= '9') goto yy509;
goto yy50;
yy362:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy511;
goto yy50;
yy363:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy513;
goto yy50;
yy364:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy514;
goto yy50;
yy365:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy515;
goto yy50;
yy366:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy516;
goto yy50;
yy367:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 435 "src/wast-lexer.cc"
+#line 447 "src/wast-lexer.cc"
{ RETURN(EXPORT); }
-#line 2828 "src/prebuilt/wast-lexer-gen.cc"
+#line 2840 "src/prebuilt/wast-lexer-gen.cc"
yy369:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy517;
goto yy50;
yy370:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy519;
goto yy50;
yy371:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy521;
goto yy50;
yy372:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy522;
if (yych == 'p') goto yy523;
goto yy50;
yy373:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'm') goto yy524;
goto yy50;
yy374:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'v') goto yy525;
goto yy50;
yy375:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 380 "src/wast-lexer.cc"
+#line 392 "src/wast-lexer.cc"
{ OPCODE(F32Eq); RETURN(COMPARE); }
-#line 2861 "src/prebuilt/wast-lexer-gen.cc"
+#line 2873 "src/prebuilt/wast-lexer-gen.cc"
yy377:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy527;
goto yy50;
yy378:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 390 "src/wast-lexer.cc"
+#line 402 "src/wast-lexer.cc"
{ OPCODE(F32Ge); RETURN(COMPARE); }
-#line 2873 "src/prebuilt/wast-lexer-gen.cc"
+#line 2885 "src/prebuilt/wast-lexer-gen.cc"
yy380:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 388 "src/wast-lexer.cc"
+#line 400 "src/wast-lexer.cc"
{ OPCODE(F32Gt); RETURN(COMPARE); }
-#line 2881 "src/prebuilt/wast-lexer-gen.cc"
+#line 2893 "src/prebuilt/wast-lexer-gen.cc"
yy382:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 386 "src/wast-lexer.cc"
+#line 398 "src/wast-lexer.cc"
{ OPCODE(F32Le); RETURN(COMPARE); }
-#line 2889 "src/prebuilt/wast-lexer-gen.cc"
+#line 2901 "src/prebuilt/wast-lexer-gen.cc"
yy384:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy528;
goto yy50;
yy385:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 384 "src/wast-lexer.cc"
+#line 396 "src/wast-lexer.cc"
{ OPCODE(F32Lt); RETURN(COMPARE); }
-#line 2901 "src/prebuilt/wast-lexer-gen.cc"
+#line 2913 "src/prebuilt/wast-lexer-gen.cc"
yy387:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'x') goto yy529;
goto yy50;
yy388:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy531;
goto yy50;
yy389:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy533;
goto yy50;
yy390:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= '[') {
+ ++cursor_;
+ if ((yych = *cursor_) <= '[') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -2946,113 +2958,113 @@ yy390:
}
}
yy391:
-#line 382 "src/wast-lexer.cc"
+#line 394 "src/wast-lexer.cc"
{ OPCODE(F32Ne); RETURN(COMPARE); }
-#line 2952 "src/prebuilt/wast-lexer-gen.cc"
+#line 2964 "src/prebuilt/wast-lexer-gen.cc"
yy392:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy538;
goto yy50;
yy393:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy539;
goto yy50;
yy394:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy540;
goto yy50;
yy395:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'b') goto yy541;
goto yy50;
yy396:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'u') goto yy543;
goto yy50;
yy397:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy544;
goto yy50;
yy398:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy546;
goto yy50;
yy399:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy548;
goto yy50;
yy400:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy549;
if (yych == 'p') goto yy550;
goto yy50;
yy401:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'v') goto yy551;
goto yy50;
yy402:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 381 "src/wast-lexer.cc"
+#line 393 "src/wast-lexer.cc"
{ OPCODE(F64Eq); RETURN(COMPARE); }
-#line 3001 "src/prebuilt/wast-lexer-gen.cc"
+#line 3013 "src/prebuilt/wast-lexer-gen.cc"
yy404:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy553;
goto yy50;
yy405:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 391 "src/wast-lexer.cc"
+#line 403 "src/wast-lexer.cc"
{ OPCODE(F64Ge); RETURN(COMPARE); }
-#line 3013 "src/prebuilt/wast-lexer-gen.cc"
+#line 3025 "src/prebuilt/wast-lexer-gen.cc"
yy407:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 389 "src/wast-lexer.cc"
+#line 401 "src/wast-lexer.cc"
{ OPCODE(F64Gt); RETURN(COMPARE); }
-#line 3021 "src/prebuilt/wast-lexer-gen.cc"
+#line 3033 "src/prebuilt/wast-lexer-gen.cc"
yy409:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 387 "src/wast-lexer.cc"
+#line 399 "src/wast-lexer.cc"
{ OPCODE(F64Le); RETURN(COMPARE); }
-#line 3029 "src/prebuilt/wast-lexer-gen.cc"
+#line 3041 "src/prebuilt/wast-lexer-gen.cc"
yy411:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy554;
goto yy50;
yy412:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 385 "src/wast-lexer.cc"
+#line 397 "src/wast-lexer.cc"
{ OPCODE(F64Lt); RETURN(COMPARE); }
-#line 3041 "src/prebuilt/wast-lexer-gen.cc"
+#line 3053 "src/prebuilt/wast-lexer-gen.cc"
yy414:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'x') goto yy555;
goto yy50;
yy415:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy557;
goto yy50;
yy416:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy559;
goto yy50;
yy417:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= '[') {
+ ++cursor_;
+ if ((yych = *cursor_) <= '[') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -3086,80 +3098,80 @@ yy417:
}
}
yy418:
-#line 383 "src/wast-lexer.cc"
+#line 395 "src/wast-lexer.cc"
{ OPCODE(F64Ne); RETURN(COMPARE); }
-#line 3092 "src/prebuilt/wast-lexer-gen.cc"
+#line 3104 "src/prebuilt/wast-lexer-gen.cc"
yy419:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy564;
goto yy50;
yy420:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy565;
goto yy50;
yy421:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy566;
goto yy50;
yy422:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy567;
goto yy50;
yy423:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'b') goto yy568;
goto yy50;
yy424:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'u') goto yy570;
goto yy50;
yy425:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy571;
goto yy50;
yy426:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy572;
goto yy50;
yy427:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 426 "src/wast-lexer.cc"
+#line 438 "src/wast-lexer.cc"
{ RETURN(GLOBAL); }
-#line 3132 "src/prebuilt/wast-lexer-gen.cc"
+#line 3144 "src/prebuilt/wast-lexer-gen.cc"
yy429:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy573;
goto yy50;
yy430:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy574;
goto yy50;
yy431:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy576;
goto yy50;
yy432:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'z') goto yy578;
goto yy50;
yy433:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy580;
goto yy50;
yy434:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'z') goto yy581;
goto yy50;
yy435:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'v') goto yy583;
goto yy50;
yy436:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= 'Z') {
+ ++cursor_;
+ if ((yych = *cursor_) <= 'Z') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -3192,114 +3204,114 @@ yy436:
}
}
yy437:
-#line 360 "src/wast-lexer.cc"
+#line 372 "src/wast-lexer.cc"
{ OPCODE(I32Eq); RETURN(COMPARE); }
-#line 3198 "src/prebuilt/wast-lexer-gen.cc"
+#line 3210 "src/prebuilt/wast-lexer-gen.cc"
yy438:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy586;
goto yy50;
yy439:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy587;
goto yy50;
yy440:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy588;
goto yy50;
yy441:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy589;
goto yy50;
yy442:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy590;
goto yy50;
yy443:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy591;
goto yy50;
yy444:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 362 "src/wast-lexer.cc"
+#line 374 "src/wast-lexer.cc"
{ OPCODE(I32Ne); RETURN(COMPARE); }
-#line 3230 "src/prebuilt/wast-lexer-gen.cc"
+#line 3242 "src/prebuilt/wast-lexer-gen.cc"
yy446:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 332 "src/wast-lexer.cc"
+#line 344 "src/wast-lexer.cc"
{ OPCODE(I32Or); RETURN(BINARY); }
-#line 3238 "src/prebuilt/wast-lexer-gen.cc"
+#line 3250 "src/prebuilt/wast-lexer-gen.cc"
yy448:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy593;
goto yy50;
yy449:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy594;
if (yych == 'm') goto yy595;
goto yy50;
yy450:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy596;
goto yy50;
yy451:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy597;
if (yych == 'r') goto yy599;
goto yy50;
yy452:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy600;
goto yy50;
yy453:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'b') goto yy601;
goto yy50;
yy454:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'u') goto yy603;
goto yy50;
yy455:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy604;
goto yy50;
yy456:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy605;
goto yy50;
yy457:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy607;
goto yy50;
yy458:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy609;
goto yy50;
yy459:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'z') goto yy611;
goto yy50;
yy460:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy613;
goto yy50;
yy461:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'z') goto yy614;
goto yy50;
yy462:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'v') goto yy616;
goto yy50;
yy463:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= 'Z') {
+ ++cursor_;
+ if ((yych = *cursor_) <= 'Z') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -3332,125 +3344,125 @@ yy463:
}
}
yy464:
-#line 361 "src/wast-lexer.cc"
+#line 373 "src/wast-lexer.cc"
{ OPCODE(I64Eq); RETURN(COMPARE); }
-#line 3338 "src/prebuilt/wast-lexer-gen.cc"
+#line 3350 "src/prebuilt/wast-lexer-gen.cc"
yy465:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy619;
goto yy50;
yy466:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy620;
goto yy50;
yy467:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy621;
goto yy50;
yy468:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy622;
goto yy50;
yy469:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy623;
goto yy50;
yy470:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy624;
goto yy50;
yy471:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy625;
goto yy50;
yy472:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 363 "src/wast-lexer.cc"
+#line 375 "src/wast-lexer.cc"
{ OPCODE(I64Ne); RETURN(COMPARE); }
-#line 3374 "src/prebuilt/wast-lexer-gen.cc"
+#line 3386 "src/prebuilt/wast-lexer-gen.cc"
yy474:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 333 "src/wast-lexer.cc"
+#line 345 "src/wast-lexer.cc"
{ OPCODE(I64Or); RETURN(BINARY); }
-#line 3382 "src/prebuilt/wast-lexer-gen.cc"
+#line 3394 "src/prebuilt/wast-lexer-gen.cc"
yy476:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy627;
goto yy50;
yy477:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy628;
if (yych == 'm') goto yy629;
goto yy50;
yy478:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy630;
goto yy50;
yy479:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy631;
if (yych == 'r') goto yy633;
goto yy50;
yy480:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy634;
goto yy50;
yy481:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'b') goto yy635;
goto yy50;
yy482:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'u') goto yy637;
goto yy50;
yy483:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy638;
goto yy50;
yy484:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 434 "src/wast-lexer.cc"
+#line 446 "src/wast-lexer.cc"
{ RETURN(IMPORT); }
-#line 3424 "src/prebuilt/wast-lexer-gen.cc"
+#line 3436 "src/prebuilt/wast-lexer-gen.cc"
yy486:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy640;
goto yy50;
yy487:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 437 "src/wast-lexer.cc"
+#line 449 "src/wast-lexer.cc"
{ RETURN(INVOKE); }
-#line 3436 "src/prebuilt/wast-lexer-gen.cc"
+#line 3448 "src/prebuilt/wast-lexer-gen.cc"
yy489:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 429 "src/wast-lexer.cc"
+#line 441 "src/wast-lexer.cc"
{ RETURN(MEMORY); }
-#line 3444 "src/prebuilt/wast-lexer-gen.cc"
+#line 3456 "src/prebuilt/wast-lexer-gen.cc"
yy491:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 427 "src/wast-lexer.cc"
+#line 439 "src/wast-lexer.cc"
{ RETURN(MODULE); }
-#line 3452 "src/prebuilt/wast-lexer-gen.cc"
+#line 3464 "src/prebuilt/wast-lexer-gen.cc"
yy493:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= '@') {
if (yych <= '/') goto yy50;
if (yych <= '9') goto yy641;
@@ -3462,8 +3474,8 @@ yy493:
goto yy50;
}
yy494:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= '<') {
+ ++cursor_;
+ if ((yych = *cursor_) <= '<') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -3495,56 +3507,56 @@ yy494:
}
}
yy495:
-#line 433 "src/wast-lexer.cc"
+#line 445 "src/wast-lexer.cc"
{ RETURN(OFFSET); }
-#line 3501 "src/prebuilt/wast-lexer-gen.cc"
+#line 3513 "src/prebuilt/wast-lexer-gen.cc"
yy496:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy644;
goto yy50;
yy497:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 424 "src/wast-lexer.cc"
+#line 436 "src/wast-lexer.cc"
{ RETURN(RESULT); }
-#line 3513 "src/prebuilt/wast-lexer-gen.cc"
+#line 3525 "src/prebuilt/wast-lexer-gen.cc"
yy499:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 259 "src/wast-lexer.cc"
+#line 271 "src/wast-lexer.cc"
{ RETURN(RETURN); }
-#line 3521 "src/prebuilt/wast-lexer-gen.cc"
+#line 3533 "src/prebuilt/wast-lexer-gen.cc"
yy501:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 417 "src/wast-lexer.cc"
+#line 429 "src/wast-lexer.cc"
{ RETURN(SELECT); }
-#line 3529 "src/prebuilt/wast-lexer-gen.cc"
+#line 3541 "src/prebuilt/wast-lexer-gen.cc"
yy503:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy645;
goto yy50;
yy504:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy646;
goto yy50;
yy505:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy647;
goto yy50;
yy506:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'h') goto yy648;
goto yy50;
yy507:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= ';') {
+ ++cursor_;
+ if ((yych = *cursor_) <= ';') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -3578,13 +3590,13 @@ yy507:
}
}
yy508:
-#line 289 "src/wast-lexer.cc"
+#line 301 "src/wast-lexer.cc"
{ TEXT_AT(6); RETURN(ALIGN_EQ_NAT); }
-#line 3584 "src/prebuilt/wast-lexer-gen.cc"
+#line 3596 "src/prebuilt/wast-lexer-gen.cc"
yy509:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
if (yych <= ':') {
if (yych <= ')') {
if (yych <= '!') {
@@ -3625,15 +3637,15 @@ yy509:
}
}
yy511:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 244 "src/wast-lexer.cc"
+#line 256 "src/wast-lexer.cc"
{ RETURN(ANYFUNC); }
-#line 3635 "src/prebuilt/wast-lexer-gen.cc"
+#line 3647 "src/prebuilt/wast-lexer-gen.cc"
yy513:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
switch (yych) {
case 'e': goto yy650;
case 'i': goto yy651;
@@ -3644,529 +3656,529 @@ yy513:
default: goto yy50;
}
yy514:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy656;
goto yy50;
yy515:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy658;
goto yy50;
yy516:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy659;
goto yy50;
yy517:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 304 "src/wast-lexer.cc"
+#line 316 "src/wast-lexer.cc"
{ OPCODE(F32Abs); RETURN(UNARY); }
-#line 3666 "src/prebuilt/wast-lexer-gen.cc"
+#line 3678 "src/prebuilt/wast-lexer-gen.cc"
yy519:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 346 "src/wast-lexer.cc"
+#line 358 "src/wast-lexer.cc"
{ OPCODE(F32Add); RETURN(BINARY); }
-#line 3674 "src/prebuilt/wast-lexer-gen.cc"
+#line 3686 "src/prebuilt/wast-lexer-gen.cc"
yy521:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy660;
goto yy50;
yy522:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy662;
if (yych == 'v') goto yy663;
goto yy50;
yy523:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'y') goto yy664;
goto yy50;
yy524:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy665;
goto yy50;
yy525:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 352 "src/wast-lexer.cc"
+#line 364 "src/wast-lexer.cc"
{ OPCODE(F32Div); RETURN(BINARY); }
-#line 3699 "src/prebuilt/wast-lexer-gen.cc"
+#line 3711 "src/prebuilt/wast-lexer-gen.cc"
yy527:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy666;
goto yy50;
yy528:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy667;
goto yy50;
yy529:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 356 "src/wast-lexer.cc"
+#line 368 "src/wast-lexer.cc"
{ OPCODE(F32Max); RETURN(BINARY); }
-#line 3715 "src/prebuilt/wast-lexer-gen.cc"
+#line 3727 "src/prebuilt/wast-lexer-gen.cc"
yy531:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 354 "src/wast-lexer.cc"
+#line 366 "src/wast-lexer.cc"
{ OPCODE(F32Min); RETURN(BINARY); }
-#line 3723 "src/prebuilt/wast-lexer-gen.cc"
+#line 3735 "src/prebuilt/wast-lexer-gen.cc"
yy533:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 350 "src/wast-lexer.cc"
+#line 362 "src/wast-lexer.cc"
{ OPCODE(F32Mul); RETURN(BINARY); }
-#line 3731 "src/prebuilt/wast-lexer-gen.cc"
+#line 3743 "src/prebuilt/wast-lexer-gen.cc"
yy535:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy669;
goto yy50;
yy536:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 302 "src/wast-lexer.cc"
+#line 314 "src/wast-lexer.cc"
{ OPCODE(F32Neg); RETURN(UNARY); }
-#line 3743 "src/prebuilt/wast-lexer-gen.cc"
+#line 3755 "src/prebuilt/wast-lexer-gen.cc"
yy538:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy670;
goto yy50;
yy539:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy671;
goto yy50;
yy540:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy673;
goto yy50;
yy541:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 348 "src/wast-lexer.cc"
+#line 360 "src/wast-lexer.cc"
{ OPCODE(F32Sub); RETURN(BINARY); }
-#line 3763 "src/prebuilt/wast-lexer-gen.cc"
+#line 3775 "src/prebuilt/wast-lexer-gen.cc"
yy543:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy674;
goto yy50;
yy544:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 305 "src/wast-lexer.cc"
+#line 317 "src/wast-lexer.cc"
{ OPCODE(F64Abs); RETURN(UNARY); }
-#line 3775 "src/prebuilt/wast-lexer-gen.cc"
+#line 3787 "src/prebuilt/wast-lexer-gen.cc"
yy546:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 347 "src/wast-lexer.cc"
+#line 359 "src/wast-lexer.cc"
{ OPCODE(F64Add); RETURN(BINARY); }
-#line 3783 "src/prebuilt/wast-lexer-gen.cc"
+#line 3795 "src/prebuilt/wast-lexer-gen.cc"
yy548:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy675;
goto yy50;
yy549:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy677;
if (yych == 'v') goto yy678;
goto yy50;
yy550:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'y') goto yy679;
goto yy50;
yy551:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 353 "src/wast-lexer.cc"
+#line 365 "src/wast-lexer.cc"
{ OPCODE(F64Div); RETURN(BINARY); }
-#line 3804 "src/prebuilt/wast-lexer-gen.cc"
+#line 3816 "src/prebuilt/wast-lexer-gen.cc"
yy553:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy680;
goto yy50;
yy554:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy681;
goto yy50;
yy555:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 357 "src/wast-lexer.cc"
+#line 369 "src/wast-lexer.cc"
{ OPCODE(F64Max); RETURN(BINARY); }
-#line 3820 "src/prebuilt/wast-lexer-gen.cc"
+#line 3832 "src/prebuilt/wast-lexer-gen.cc"
yy557:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 355 "src/wast-lexer.cc"
+#line 367 "src/wast-lexer.cc"
{ OPCODE(F64Min); RETURN(BINARY); }
-#line 3828 "src/prebuilt/wast-lexer-gen.cc"
+#line 3840 "src/prebuilt/wast-lexer-gen.cc"
yy559:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 351 "src/wast-lexer.cc"
+#line 363 "src/wast-lexer.cc"
{ OPCODE(F64Mul); RETURN(BINARY); }
-#line 3836 "src/prebuilt/wast-lexer-gen.cc"
+#line 3848 "src/prebuilt/wast-lexer-gen.cc"
yy561:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy683;
goto yy50;
yy562:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 303 "src/wast-lexer.cc"
+#line 315 "src/wast-lexer.cc"
{ OPCODE(F64Neg); RETURN(UNARY); }
-#line 3848 "src/prebuilt/wast-lexer-gen.cc"
+#line 3860 "src/prebuilt/wast-lexer-gen.cc"
yy564:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'm') goto yy684;
goto yy50;
yy565:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy685;
goto yy50;
yy566:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy686;
goto yy50;
yy567:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy688;
goto yy50;
yy568:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 349 "src/wast-lexer.cc"
+#line 361 "src/wast-lexer.cc"
{ OPCODE(F64Sub); RETURN(BINARY); }
-#line 3872 "src/prebuilt/wast-lexer-gen.cc"
+#line 3884 "src/prebuilt/wast-lexer-gen.cc"
yy570:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy689;
goto yy50;
yy571:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'b') goto yy690;
goto yy50;
yy572:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy691;
goto yy50;
yy573:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'm') goto yy692;
goto yy50;
yy574:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 316 "src/wast-lexer.cc"
+#line 328 "src/wast-lexer.cc"
{ OPCODE(I32Add); RETURN(BINARY); }
-#line 3896 "src/prebuilt/wast-lexer-gen.cc"
+#line 3908 "src/prebuilt/wast-lexer-gen.cc"
yy576:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 330 "src/wast-lexer.cc"
+#line 342 "src/wast-lexer.cc"
{ OPCODE(I32And); RETURN(BINARY); }
-#line 3904 "src/prebuilt/wast-lexer-gen.cc"
+#line 3916 "src/prebuilt/wast-lexer-gen.cc"
yy578:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 296 "src/wast-lexer.cc"
+#line 308 "src/wast-lexer.cc"
{ OPCODE(I32Clz); RETURN(UNARY); }
-#line 3912 "src/prebuilt/wast-lexer-gen.cc"
+#line 3924 "src/prebuilt/wast-lexer-gen.cc"
yy580:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy693;
goto yy50;
yy581:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 298 "src/wast-lexer.cc"
+#line 310 "src/wast-lexer.cc"
{ OPCODE(I32Ctz); RETURN(UNARY); }
-#line 3924 "src/prebuilt/wast-lexer-gen.cc"
+#line 3936 "src/prebuilt/wast-lexer-gen.cc"
yy583:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy694;
goto yy50;
yy584:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 294 "src/wast-lexer.cc"
+#line 306 "src/wast-lexer.cc"
{ OPCODE(I32Eqz); RETURN(CONVERT); }
-#line 3936 "src/prebuilt/wast-lexer-gen.cc"
+#line 3948 "src/prebuilt/wast-lexer-gen.cc"
yy586:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy695;
if (yych == 'u') goto yy697;
goto yy50;
yy587:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy699;
if (yych == 'u') goto yy701;
goto yy50;
yy588:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy703;
if (yych == 'u') goto yy705;
goto yy50;
yy589:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy707;
goto yy50;
yy590:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy709;
if (yych == 'u') goto yy711;
goto yy50;
yy591:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 320 "src/wast-lexer.cc"
+#line 332 "src/wast-lexer.cc"
{ OPCODE(I32Mul); RETURN(BINARY); }
-#line 3968 "src/prebuilt/wast-lexer-gen.cc"
+#line 3980 "src/prebuilt/wast-lexer-gen.cc"
yy593:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy713;
goto yy50;
yy594:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy714;
goto yy50;
yy595:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy715;
goto yy50;
yy596:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy716;
if (yych == 'r') goto yy718;
goto yy50;
yy597:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 336 "src/wast-lexer.cc"
+#line 348 "src/wast-lexer.cc"
{ OPCODE(I32Shl); RETURN(BINARY); }
-#line 3993 "src/prebuilt/wast-lexer-gen.cc"
+#line 4005 "src/prebuilt/wast-lexer-gen.cc"
yy599:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy720;
goto yy50;
yy600:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy721;
goto yy50;
yy601:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 318 "src/wast-lexer.cc"
+#line 330 "src/wast-lexer.cc"
{ OPCODE(I32Sub); RETURN(BINARY); }
-#line 4009 "src/prebuilt/wast-lexer-gen.cc"
+#line 4021 "src/prebuilt/wast-lexer-gen.cc"
yy603:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy722;
goto yy50;
yy604:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy723;
goto yy50;
yy605:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 334 "src/wast-lexer.cc"
+#line 346 "src/wast-lexer.cc"
{ OPCODE(I32Xor); RETURN(BINARY); }
-#line 4025 "src/prebuilt/wast-lexer-gen.cc"
+#line 4037 "src/prebuilt/wast-lexer-gen.cc"
yy607:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 317 "src/wast-lexer.cc"
+#line 329 "src/wast-lexer.cc"
{ OPCODE(I64Add); RETURN(BINARY); }
-#line 4033 "src/prebuilt/wast-lexer-gen.cc"
+#line 4045 "src/prebuilt/wast-lexer-gen.cc"
yy609:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 331 "src/wast-lexer.cc"
+#line 343 "src/wast-lexer.cc"
{ OPCODE(I64And); RETURN(BINARY); }
-#line 4041 "src/prebuilt/wast-lexer-gen.cc"
+#line 4053 "src/prebuilt/wast-lexer-gen.cc"
yy611:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 297 "src/wast-lexer.cc"
+#line 309 "src/wast-lexer.cc"
{ OPCODE(I64Clz); RETURN(UNARY); }
-#line 4049 "src/prebuilt/wast-lexer-gen.cc"
+#line 4061 "src/prebuilt/wast-lexer-gen.cc"
yy613:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy724;
goto yy50;
yy614:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 299 "src/wast-lexer.cc"
+#line 311 "src/wast-lexer.cc"
{ OPCODE(I64Ctz); RETURN(UNARY); }
-#line 4061 "src/prebuilt/wast-lexer-gen.cc"
+#line 4073 "src/prebuilt/wast-lexer-gen.cc"
yy616:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy725;
goto yy50;
yy617:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 295 "src/wast-lexer.cc"
+#line 307 "src/wast-lexer.cc"
{ OPCODE(I64Eqz); RETURN(CONVERT); }
-#line 4073 "src/prebuilt/wast-lexer-gen.cc"
+#line 4085 "src/prebuilt/wast-lexer-gen.cc"
yy619:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy726;
goto yy50;
yy620:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy727;
if (yych == 'u') goto yy729;
goto yy50;
yy621:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy731;
if (yych == 'u') goto yy733;
goto yy50;
yy622:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy735;
if (yych == 'u') goto yy737;
goto yy50;
yy623:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy739;
goto yy50;
yy624:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy741;
if (yych == 'u') goto yy743;
goto yy50;
yy625:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 321 "src/wast-lexer.cc"
+#line 333 "src/wast-lexer.cc"
{ OPCODE(I64Mul); RETURN(BINARY); }
-#line 4109 "src/prebuilt/wast-lexer-gen.cc"
+#line 4121 "src/prebuilt/wast-lexer-gen.cc"
yy627:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy745;
goto yy50;
yy628:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy746;
goto yy50;
yy629:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy747;
goto yy50;
yy630:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy748;
if (yych == 'r') goto yy750;
goto yy50;
yy631:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 337 "src/wast-lexer.cc"
+#line 349 "src/wast-lexer.cc"
{ OPCODE(I64Shl); RETURN(BINARY); }
-#line 4134 "src/prebuilt/wast-lexer-gen.cc"
+#line 4146 "src/prebuilt/wast-lexer-gen.cc"
yy633:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy752;
goto yy50;
yy634:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy753;
goto yy50;
yy635:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 319 "src/wast-lexer.cc"
+#line 331 "src/wast-lexer.cc"
{ OPCODE(I64Sub); RETURN(BINARY); }
-#line 4150 "src/prebuilt/wast-lexer-gen.cc"
+#line 4162 "src/prebuilt/wast-lexer-gen.cc"
yy637:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy754;
goto yy50;
yy638:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 335 "src/wast-lexer.cc"
+#line 347 "src/wast-lexer.cc"
{ OPCODE(I64Xor); RETURN(BINARY); }
-#line 4162 "src/prebuilt/wast-lexer-gen.cc"
+#line 4174 "src/prebuilt/wast-lexer-gen.cc"
yy640:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'y') goto yy755;
goto yy50;
yy641:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
if (yych <= '@') {
if (yych <= '+') {
if (yych <= '"') {
@@ -4210,33 +4222,33 @@ yy641:
}
}
yy643:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= '/') goto yy50;
if (yych <= '0') goto yy756;
if (yych <= '9') goto yy758;
goto yy50;
yy644:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy760;
goto yy50;
yy645:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'b') goto yy762;
goto yy50;
yy646:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy763;
goto yy50;
yy647:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy764;
goto yy50;
yy648:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy765;
goto yy50;
yy649:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= '@') {
if (yych <= '/') goto yy50;
if (yych <= '9') goto yy766;
@@ -4248,237 +4260,237 @@ yy649:
goto yy50;
}
yy650:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'x') goto yy768;
goto yy50;
yy651:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy769;
goto yy50;
yy652:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy770;
goto yy50;
yy653:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy771;
goto yy50;
yy654:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy772;
goto yy50;
yy655:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy773;
goto yy50;
yy656:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 254 "src/wast-lexer.cc"
+#line 266 "src/wast-lexer.cc"
{ RETURN(BR_TABLE); }
-#line 4282 "src/prebuilt/wast-lexer-gen.cc"
+#line 4294 "src/prebuilt/wast-lexer-gen.cc"
yy658:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy774;
goto yy50;
yy659:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'm') goto yy775;
goto yy50;
yy660:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 308 "src/wast-lexer.cc"
+#line 320 "src/wast-lexer.cc"
{ OPCODE(F32Ceil); RETURN(UNARY); }
-#line 4298 "src/prebuilt/wast-lexer-gen.cc"
+#line 4310 "src/prebuilt/wast-lexer-gen.cc"
yy662:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy776;
goto yy50;
yy663:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy778;
goto yy50;
yy664:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy779;
goto yy50;
yy665:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy780;
goto yy50;
yy666:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy781;
goto yy50;
yy667:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 267 "src/wast-lexer.cc"
+#line 279 "src/wast-lexer.cc"
{ OPCODE(F32Load); RETURN(LOAD); }
-#line 4326 "src/prebuilt/wast-lexer-gen.cc"
+#line 4338 "src/prebuilt/wast-lexer-gen.cc"
yy669:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy783;
goto yy50;
yy670:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy784;
goto yy50;
yy671:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 306 "src/wast-lexer.cc"
+#line 318 "src/wast-lexer.cc"
{ OPCODE(F32Sqrt); RETURN(UNARY); }
-#line 4342 "src/prebuilt/wast-lexer-gen.cc"
+#line 4354 "src/prebuilt/wast-lexer-gen.cc"
yy673:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy785;
goto yy50;
yy674:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy787;
goto yy50;
yy675:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 309 "src/wast-lexer.cc"
+#line 321 "src/wast-lexer.cc"
{ OPCODE(F64Ceil); RETURN(UNARY); }
-#line 4358 "src/prebuilt/wast-lexer-gen.cc"
+#line 4370 "src/prebuilt/wast-lexer-gen.cc"
yy677:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy789;
goto yy50;
yy678:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy791;
goto yy50;
yy679:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy792;
goto yy50;
yy680:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy793;
goto yy50;
yy681:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 268 "src/wast-lexer.cc"
+#line 280 "src/wast-lexer.cc"
{ OPCODE(F64Load); RETURN(LOAD); }
-#line 4382 "src/prebuilt/wast-lexer-gen.cc"
+#line 4394 "src/prebuilt/wast-lexer-gen.cc"
yy683:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy795;
goto yy50;
yy684:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy796;
goto yy50;
yy685:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy797;
goto yy50;
yy686:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 307 "src/wast-lexer.cc"
+#line 319 "src/wast-lexer.cc"
{ OPCODE(F64Sqrt); RETURN(UNARY); }
-#line 4402 "src/prebuilt/wast-lexer-gen.cc"
+#line 4414 "src/prebuilt/wast-lexer-gen.cc"
yy688:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy798;
goto yy50;
yy689:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy800;
goto yy50;
yy690:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy802;
goto yy50;
yy691:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy803;
goto yy50;
yy692:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy805;
goto yy50;
yy693:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy806;
goto yy50;
yy694:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy808;
if (yych == 'u') goto yy810;
goto yy50;
yy695:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 376 "src/wast-lexer.cc"
+#line 388 "src/wast-lexer.cc"
{ OPCODE(I32GeS); RETURN(COMPARE); }
-#line 4439 "src/prebuilt/wast-lexer-gen.cc"
+#line 4451 "src/prebuilt/wast-lexer-gen.cc"
yy697:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 378 "src/wast-lexer.cc"
+#line 390 "src/wast-lexer.cc"
{ OPCODE(I32GeU); RETURN(COMPARE); }
-#line 4447 "src/prebuilt/wast-lexer-gen.cc"
+#line 4459 "src/prebuilt/wast-lexer-gen.cc"
yy699:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 372 "src/wast-lexer.cc"
+#line 384 "src/wast-lexer.cc"
{ OPCODE(I32GtS); RETURN(COMPARE); }
-#line 4455 "src/prebuilt/wast-lexer-gen.cc"
+#line 4467 "src/prebuilt/wast-lexer-gen.cc"
yy701:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 374 "src/wast-lexer.cc"
+#line 386 "src/wast-lexer.cc"
{ OPCODE(I32GtU); RETURN(COMPARE); }
-#line 4463 "src/prebuilt/wast-lexer-gen.cc"
+#line 4475 "src/prebuilt/wast-lexer-gen.cc"
yy703:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 368 "src/wast-lexer.cc"
+#line 380 "src/wast-lexer.cc"
{ OPCODE(I32LeS); RETURN(COMPARE); }
-#line 4471 "src/prebuilt/wast-lexer-gen.cc"
+#line 4483 "src/prebuilt/wast-lexer-gen.cc"
yy705:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 370 "src/wast-lexer.cc"
+#line 382 "src/wast-lexer.cc"
{ OPCODE(I32LeU); RETURN(COMPARE); }
-#line 4479 "src/prebuilt/wast-lexer-gen.cc"
+#line 4491 "src/prebuilt/wast-lexer-gen.cc"
yy707:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= '8') {
+ ++cursor_;
+ if ((yych = *cursor_) <= '8') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -4511,135 +4523,135 @@ yy707:
}
}
yy708:
-#line 265 "src/wast-lexer.cc"
+#line 277 "src/wast-lexer.cc"
{ OPCODE(I32Load); RETURN(LOAD); }
-#line 4517 "src/prebuilt/wast-lexer-gen.cc"
+#line 4529 "src/prebuilt/wast-lexer-gen.cc"
yy709:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 364 "src/wast-lexer.cc"
+#line 376 "src/wast-lexer.cc"
{ OPCODE(I32LtS); RETURN(COMPARE); }
-#line 4525 "src/prebuilt/wast-lexer-gen.cc"
+#line 4537 "src/prebuilt/wast-lexer-gen.cc"
yy711:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 366 "src/wast-lexer.cc"
+#line 378 "src/wast-lexer.cc"
{ OPCODE(I32LtU); RETURN(COMPARE); }
-#line 4533 "src/prebuilt/wast-lexer-gen.cc"
+#line 4545 "src/prebuilt/wast-lexer-gen.cc"
yy713:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy814;
goto yy50;
yy714:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy815;
goto yy50;
yy715:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy816;
if (yych == 'u') goto yy818;
goto yy50;
yy716:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 342 "src/wast-lexer.cc"
+#line 354 "src/wast-lexer.cc"
{ OPCODE(I32Rotl); RETURN(BINARY); }
-#line 4554 "src/prebuilt/wast-lexer-gen.cc"
+#line 4566 "src/prebuilt/wast-lexer-gen.cc"
yy718:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 344 "src/wast-lexer.cc"
+#line 356 "src/wast-lexer.cc"
{ OPCODE(I32Rotr); RETURN(BINARY); }
-#line 4562 "src/prebuilt/wast-lexer-gen.cc"
+#line 4574 "src/prebuilt/wast-lexer-gen.cc"
yy720:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy820;
if (yych == 'u') goto yy822;
goto yy50;
yy721:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy824;
goto yy50;
yy722:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy826;
goto yy50;
yy723:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy827;
goto yy50;
yy724:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy828;
goto yy50;
yy725:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy830;
if (yych == 'u') goto yy832;
goto yy50;
yy726:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy834;
goto yy50;
yy727:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 377 "src/wast-lexer.cc"
+#line 389 "src/wast-lexer.cc"
{ OPCODE(I64GeS); RETURN(COMPARE); }
-#line 4600 "src/prebuilt/wast-lexer-gen.cc"
+#line 4612 "src/prebuilt/wast-lexer-gen.cc"
yy729:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 379 "src/wast-lexer.cc"
+#line 391 "src/wast-lexer.cc"
{ OPCODE(I64GeU); RETURN(COMPARE); }
-#line 4608 "src/prebuilt/wast-lexer-gen.cc"
+#line 4620 "src/prebuilt/wast-lexer-gen.cc"
yy731:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 373 "src/wast-lexer.cc"
+#line 385 "src/wast-lexer.cc"
{ OPCODE(I64GtS); RETURN(COMPARE); }
-#line 4616 "src/prebuilt/wast-lexer-gen.cc"
+#line 4628 "src/prebuilt/wast-lexer-gen.cc"
yy733:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 375 "src/wast-lexer.cc"
+#line 387 "src/wast-lexer.cc"
{ OPCODE(I64GtU); RETURN(COMPARE); }
-#line 4624 "src/prebuilt/wast-lexer-gen.cc"
+#line 4636 "src/prebuilt/wast-lexer-gen.cc"
yy735:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 369 "src/wast-lexer.cc"
+#line 381 "src/wast-lexer.cc"
{ OPCODE(I64LeS); RETURN(COMPARE); }
-#line 4632 "src/prebuilt/wast-lexer-gen.cc"
+#line 4644 "src/prebuilt/wast-lexer-gen.cc"
yy737:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 371 "src/wast-lexer.cc"
+#line 383 "src/wast-lexer.cc"
{ OPCODE(I64LeU); RETURN(COMPARE); }
-#line 4640 "src/prebuilt/wast-lexer-gen.cc"
+#line 4652 "src/prebuilt/wast-lexer-gen.cc"
yy739:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= '7') {
+ ++cursor_;
+ if ((yych = *cursor_) <= '7') {
if (yych <= '+') {
if (yych <= '"') {
if (yych == '!') goto yy49;
@@ -4676,76 +4688,76 @@ yy739:
}
}
yy740:
-#line 266 "src/wast-lexer.cc"
+#line 278 "src/wast-lexer.cc"
{ OPCODE(I64Load); RETURN(LOAD); }
-#line 4682 "src/prebuilt/wast-lexer-gen.cc"
+#line 4694 "src/prebuilt/wast-lexer-gen.cc"
yy741:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 365 "src/wast-lexer.cc"
+#line 377 "src/wast-lexer.cc"
{ OPCODE(I64LtS); RETURN(COMPARE); }
-#line 4690 "src/prebuilt/wast-lexer-gen.cc"
+#line 4702 "src/prebuilt/wast-lexer-gen.cc"
yy743:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 367 "src/wast-lexer.cc"
+#line 379 "src/wast-lexer.cc"
{ OPCODE(I64LtU); RETURN(COMPARE); }
-#line 4698 "src/prebuilt/wast-lexer-gen.cc"
+#line 4710 "src/prebuilt/wast-lexer-gen.cc"
yy745:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy838;
goto yy50;
yy746:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy839;
goto yy50;
yy747:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy840;
if (yych == 'u') goto yy842;
goto yy50;
yy748:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 343 "src/wast-lexer.cc"
+#line 355 "src/wast-lexer.cc"
{ OPCODE(I64Rotl); RETURN(BINARY); }
-#line 4719 "src/prebuilt/wast-lexer-gen.cc"
+#line 4731 "src/prebuilt/wast-lexer-gen.cc"
yy750:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 345 "src/wast-lexer.cc"
+#line 357 "src/wast-lexer.cc"
{ OPCODE(I64Rotr); RETURN(BINARY); }
-#line 4727 "src/prebuilt/wast-lexer-gen.cc"
+#line 4739 "src/prebuilt/wast-lexer-gen.cc"
yy752:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy844;
if (yych == 'u') goto yy846;
goto yy50;
yy753:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy848;
goto yy50;
yy754:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy850;
goto yy50;
yy755:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yybm[0+yych] & 16) {
goto yy49;
}
goto yy184;
yy756:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= ';') {
+ ++cursor_;
+ if ((yych = *cursor_) <= ';') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -4779,13 +4791,13 @@ yy756:
}
}
yy757:
-#line 288 "src/wast-lexer.cc"
+#line 300 "src/wast-lexer.cc"
{ TEXT_AT(7); RETURN(OFFSET_EQ_NAT); }
-#line 4785 "src/prebuilt/wast-lexer-gen.cc"
+#line 4797 "src/prebuilt/wast-lexer-gen.cc"
yy758:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
if (yych <= ':') {
if (yych <= ')') {
if (yych <= '!') {
@@ -4826,33 +4838,33 @@ yy758:
}
}
yy760:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 436 "src/wast-lexer.cc"
+#line 448 "src/wast-lexer.cc"
{ RETURN(REGISTER); }
-#line 4836 "src/prebuilt/wast-lexer-gen.cc"
+#line 4848 "src/prebuilt/wast-lexer-gen.cc"
yy762:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy852;
goto yy50;
yy763:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy853;
goto yy50;
yy764:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy855;
goto yy50;
yy765:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'b') goto yy857;
goto yy50;
yy766:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
if (yych <= '@') {
if (yych <= '+') {
if (yych <= '"') {
@@ -4896,232 +4908,232 @@ yy766:
}
}
yy768:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'h') goto yy858;
goto yy50;
yy769:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'v') goto yy859;
goto yy50;
yy770:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy860;
goto yy50;
yy771:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy861;
goto yy50;
yy772:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy862;
goto yy50;
yy773:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy863;
goto yy50;
yy774:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy864;
goto yy50;
yy775:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy865;
goto yy50;
yy776:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 292 "src/wast-lexer.cc"
+#line 304 "src/wast-lexer.cc"
{ TYPE(F32); RETURN(CONST); }
-#line 4938 "src/prebuilt/wast-lexer-gen.cc"
+#line 4950 "src/prebuilt/wast-lexer-gen.cc"
yy778:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy866;
goto yy50;
yy779:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy867;
goto yy50;
yy780:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy868;
goto yy50;
yy781:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 310 "src/wast-lexer.cc"
+#line 322 "src/wast-lexer.cc"
{ OPCODE(F32Floor); RETURN(UNARY); }
-#line 4958 "src/prebuilt/wast-lexer-gen.cc"
+#line 4970 "src/prebuilt/wast-lexer-gen.cc"
yy783:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy869;
goto yy50;
yy784:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy870;
goto yy50;
yy785:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 271 "src/wast-lexer.cc"
+#line 283 "src/wast-lexer.cc"
{ OPCODE(F32Store); RETURN(STORE); }
-#line 4974 "src/prebuilt/wast-lexer-gen.cc"
+#line 4986 "src/prebuilt/wast-lexer-gen.cc"
yy787:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 312 "src/wast-lexer.cc"
+#line 324 "src/wast-lexer.cc"
{ OPCODE(F32Trunc); RETURN(UNARY); }
-#line 4982 "src/prebuilt/wast-lexer-gen.cc"
+#line 4994 "src/prebuilt/wast-lexer-gen.cc"
yy789:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 293 "src/wast-lexer.cc"
+#line 305 "src/wast-lexer.cc"
{ TYPE(F64); RETURN(CONST); }
-#line 4990 "src/prebuilt/wast-lexer-gen.cc"
+#line 5002 "src/prebuilt/wast-lexer-gen.cc"
yy791:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy871;
goto yy50;
yy792:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy872;
goto yy50;
yy793:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 311 "src/wast-lexer.cc"
+#line 323 "src/wast-lexer.cc"
{ OPCODE(F64Floor); RETURN(UNARY); }
-#line 5006 "src/prebuilt/wast-lexer-gen.cc"
+#line 5018 "src/prebuilt/wast-lexer-gen.cc"
yy795:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy873;
goto yy50;
yy796:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy874;
goto yy50;
yy797:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy875;
goto yy50;
yy798:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 272 "src/wast-lexer.cc"
+#line 284 "src/wast-lexer.cc"
{ OPCODE(F64Store); RETURN(STORE); }
-#line 5026 "src/prebuilt/wast-lexer-gen.cc"
+#line 5038 "src/prebuilt/wast-lexer-gen.cc"
yy800:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 313 "src/wast-lexer.cc"
+#line 325 "src/wast-lexer.cc"
{ OPCODE(F64Trunc); RETURN(UNARY); }
-#line 5034 "src/prebuilt/wast-lexer-gen.cc"
+#line 5046 "src/prebuilt/wast-lexer-gen.cc"
yy802:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy876;
goto yy50;
yy803:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 260 "src/wast-lexer.cc"
+#line 272 "src/wast-lexer.cc"
{ RETURN(GET_LOCAL); }
-#line 5046 "src/prebuilt/wast-lexer-gen.cc"
+#line 5058 "src/prebuilt/wast-lexer-gen.cc"
yy805:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy878;
goto yy50;
yy806:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 290 "src/wast-lexer.cc"
+#line 302 "src/wast-lexer.cc"
{ TYPE(I32); RETURN(CONST); }
-#line 5058 "src/prebuilt/wast-lexer-gen.cc"
+#line 5070 "src/prebuilt/wast-lexer-gen.cc"
yy808:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 322 "src/wast-lexer.cc"
+#line 334 "src/wast-lexer.cc"
{ OPCODE(I32DivS); RETURN(BINARY); }
-#line 5066 "src/prebuilt/wast-lexer-gen.cc"
+#line 5078 "src/prebuilt/wast-lexer-gen.cc"
yy810:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 324 "src/wast-lexer.cc"
+#line 336 "src/wast-lexer.cc"
{ OPCODE(I32DivU); RETURN(BINARY); }
-#line 5074 "src/prebuilt/wast-lexer-gen.cc"
+#line 5086 "src/prebuilt/wast-lexer-gen.cc"
yy812:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '6') goto yy879;
goto yy50;
yy813:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy880;
goto yy50;
yy814:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy881;
goto yy50;
yy815:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy883;
goto yy50;
yy816:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 326 "src/wast-lexer.cc"
+#line 338 "src/wast-lexer.cc"
{ OPCODE(I32RemS); RETURN(BINARY); }
-#line 5098 "src/prebuilt/wast-lexer-gen.cc"
+#line 5110 "src/prebuilt/wast-lexer-gen.cc"
yy818:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 328 "src/wast-lexer.cc"
+#line 340 "src/wast-lexer.cc"
{ OPCODE(I32RemU); RETURN(BINARY); }
-#line 5106 "src/prebuilt/wast-lexer-gen.cc"
+#line 5118 "src/prebuilt/wast-lexer-gen.cc"
yy820:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 338 "src/wast-lexer.cc"
+#line 350 "src/wast-lexer.cc"
{ OPCODE(I32ShrS); RETURN(BINARY); }
-#line 5114 "src/prebuilt/wast-lexer-gen.cc"
+#line 5126 "src/prebuilt/wast-lexer-gen.cc"
yy822:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 340 "src/wast-lexer.cc"
+#line 352 "src/wast-lexer.cc"
{ OPCODE(I32ShrU); RETURN(BINARY); }
-#line 5122 "src/prebuilt/wast-lexer-gen.cc"
+#line 5134 "src/prebuilt/wast-lexer-gen.cc"
yy824:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= '8') {
+ ++cursor_;
+ if ((yych = *cursor_) <= '8') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -5154,100 +5166,100 @@ yy824:
}
}
yy825:
-#line 269 "src/wast-lexer.cc"
+#line 281 "src/wast-lexer.cc"
{ OPCODE(I32Store); RETURN(STORE); }
-#line 5160 "src/prebuilt/wast-lexer-gen.cc"
+#line 5172 "src/prebuilt/wast-lexer-gen.cc"
yy826:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy887;
goto yy50;
yy827:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy888;
goto yy50;
yy828:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 291 "src/wast-lexer.cc"
+#line 303 "src/wast-lexer.cc"
{ TYPE(I64); RETURN(CONST); }
-#line 5176 "src/prebuilt/wast-lexer-gen.cc"
+#line 5188 "src/prebuilt/wast-lexer-gen.cc"
yy830:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 323 "src/wast-lexer.cc"
+#line 335 "src/wast-lexer.cc"
{ OPCODE(I64DivS); RETURN(BINARY); }
-#line 5184 "src/prebuilt/wast-lexer-gen.cc"
+#line 5196 "src/prebuilt/wast-lexer-gen.cc"
yy832:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 325 "src/wast-lexer.cc"
+#line 337 "src/wast-lexer.cc"
{ OPCODE(I64DivU); RETURN(BINARY); }
-#line 5192 "src/prebuilt/wast-lexer-gen.cc"
+#line 5204 "src/prebuilt/wast-lexer-gen.cc"
yy834:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy889;
goto yy50;
yy835:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '6') goto yy890;
goto yy50;
yy836:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy891;
goto yy50;
yy837:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy892;
goto yy50;
yy838:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy893;
goto yy50;
yy839:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy895;
goto yy50;
yy840:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 327 "src/wast-lexer.cc"
+#line 339 "src/wast-lexer.cc"
{ OPCODE(I64RemS); RETURN(BINARY); }
-#line 5224 "src/prebuilt/wast-lexer-gen.cc"
+#line 5236 "src/prebuilt/wast-lexer-gen.cc"
yy842:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 329 "src/wast-lexer.cc"
+#line 341 "src/wast-lexer.cc"
{ OPCODE(I64RemU); RETURN(BINARY); }
-#line 5232 "src/prebuilt/wast-lexer-gen.cc"
+#line 5244 "src/prebuilt/wast-lexer-gen.cc"
yy844:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 339 "src/wast-lexer.cc"
+#line 351 "src/wast-lexer.cc"
{ OPCODE(I64ShrS); RETURN(BINARY); }
-#line 5240 "src/prebuilt/wast-lexer-gen.cc"
+#line 5252 "src/prebuilt/wast-lexer-gen.cc"
yy846:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 341 "src/wast-lexer.cc"
+#line 353 "src/wast-lexer.cc"
{ OPCODE(I64ShrU); RETURN(BINARY); }
-#line 5248 "src/prebuilt/wast-lexer-gen.cc"
+#line 5260 "src/prebuilt/wast-lexer-gen.cc"
yy848:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= '7') {
+ ++cursor_;
+ if ((yych = *cursor_) <= '7') {
if (yych <= '+') {
if (yych <= '"') {
if (yych == '!') goto yy49;
@@ -5284,15 +5296,15 @@ yy848:
}
}
yy849:
-#line 270 "src/wast-lexer.cc"
+#line 282 "src/wast-lexer.cc"
{ OPCODE(I64Store); RETURN(STORE); }
-#line 5290 "src/prebuilt/wast-lexer-gen.cc"
+#line 5302 "src/prebuilt/wast-lexer-gen.cc"
yy850:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy900;
goto yy50;
yy851:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych <= '@') {
if (yych <= '/') goto yy50;
if (yych <= '9') goto yy901;
@@ -5304,209 +5316,209 @@ yy851:
goto yy50;
}
yy852:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy903;
goto yy50;
yy853:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 261 "src/wast-lexer.cc"
+#line 273 "src/wast-lexer.cc"
{ RETURN(SET_LOCAL); }
-#line 5318 "src/prebuilt/wast-lexer-gen.cc"
+#line 5330 "src/prebuilt/wast-lexer-gen.cc"
yy855:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 262 "src/wast-lexer.cc"
+#line 274 "src/wast-lexer.cc"
{ RETURN(TEE_LOCAL); }
-#line 5326 "src/prebuilt/wast-lexer-gen.cc"
+#line 5338 "src/prebuilt/wast-lexer-gen.cc"
yy857:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy905;
goto yy50;
yy858:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy906;
goto yy50;
yy859:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy907;
goto yy50;
yy860:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy908;
goto yy50;
yy861:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'u') goto yy909;
goto yy50;
yy862:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy910;
goto yy50;
yy863:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy912;
goto yy50;
yy864:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy913;
goto yy50;
yy865:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'm') goto yy914;
goto yy50;
yy866:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy915;
goto yy50;
yy867:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'g') goto yy916;
goto yy50;
yy868:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy917;
goto yy50;
yy869:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy918;
goto yy50;
yy870:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy920;
goto yy50;
yy871:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy921;
goto yy50;
yy872:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'g') goto yy922;
goto yy50;
yy873:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy923;
goto yy50;
yy874:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy925;
goto yy50;
yy875:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy926;
goto yy50;
yy876:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 263 "src/wast-lexer.cc"
+#line 275 "src/wast-lexer.cc"
{ RETURN(GET_GLOBAL); }
-#line 5410 "src/prebuilt/wast-lexer-gen.cc"
+#line 5422 "src/prebuilt/wast-lexer-gen.cc"
yy878:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'y') goto yy927;
goto yy50;
yy879:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy929;
goto yy50;
yy880:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy930;
if (yych == 'u') goto yy932;
goto yy50;
yy881:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 300 "src/wast-lexer.cc"
+#line 312 "src/wast-lexer.cc"
{ OPCODE(I32Popcnt); RETURN(UNARY); }
-#line 5431 "src/prebuilt/wast-lexer-gen.cc"
+#line 5443 "src/prebuilt/wast-lexer-gen.cc"
yy883:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy934;
goto yy50;
yy884:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '6') goto yy935;
goto yy50;
yy885:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 283 "src/wast-lexer.cc"
+#line 295 "src/wast-lexer.cc"
{ OPCODE(I32Store8); RETURN(STORE); }
-#line 5447 "src/prebuilt/wast-lexer-gen.cc"
+#line 5459 "src/prebuilt/wast-lexer-gen.cc"
yy887:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy937;
if (yych == 'u') goto yy938;
goto yy50;
yy888:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '6') goto yy939;
goto yy50;
yy889:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy940;
goto yy50;
yy890:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy941;
goto yy50;
yy891:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy942;
goto yy50;
yy892:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy943;
if (yych == 'u') goto yy945;
goto yy50;
yy893:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 301 "src/wast-lexer.cc"
+#line 313 "src/wast-lexer.cc"
{ OPCODE(I64Popcnt); RETURN(UNARY); }
-#line 5481 "src/prebuilt/wast-lexer-gen.cc"
+#line 5493 "src/prebuilt/wast-lexer-gen.cc"
yy895:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy947;
goto yy50;
yy896:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '6') goto yy948;
goto yy50;
yy897:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy950;
goto yy50;
yy898:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 284 "src/wast-lexer.cc"
+#line 296 "src/wast-lexer.cc"
{ OPCODE(I64Store8); RETURN(STORE); }
-#line 5501 "src/prebuilt/wast-lexer-gen.cc"
+#line 5513 "src/prebuilt/wast-lexer-gen.cc"
yy900:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy952;
if (yych == 'u') goto yy953;
goto yy50;
yy901:
- ++lexer->cursor;
- if (lexer->limit <= lexer->cursor) FILL(1);
- yych = *lexer->cursor;
+ ++cursor_;
+ if (limit_ <= cursor_) FILL(1);
+ yych = *cursor_;
if (yych <= '@') {
if (yych <= '+') {
if (yych <= '"') {
@@ -5550,394 +5562,394 @@ yy901:
}
}
yy903:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 264 "src/wast-lexer.cc"
+#line 276 "src/wast-lexer.cc"
{ RETURN(SET_GLOBAL); }
-#line 5560 "src/prebuilt/wast-lexer-gen.cc"
+#line 5572 "src/prebuilt/wast-lexer-gen.cc"
yy905:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy954;
goto yy50;
yy906:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'u') goto yy956;
goto yy50;
yy907:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy957;
goto yy50;
yy908:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy958;
goto yy50;
yy909:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy959;
goto yy50;
yy910:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 447 "src/wast-lexer.cc"
+#line 459 "src/wast-lexer.cc"
{ RETURN(ASSERT_TRAP); }
-#line 5588 "src/prebuilt/wast-lexer-gen.cc"
+#line 5600 "src/prebuilt/wast-lexer-gen.cc"
yy912:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy960;
goto yy50;
yy913:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy961;
goto yy50;
yy914:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy962;
goto yy50;
yy915:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy963;
goto yy50;
yy916:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy964;
goto yy50;
yy917:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy966;
goto yy50;
yy918:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 314 "src/wast-lexer.cc"
+#line 326 "src/wast-lexer.cc"
{ OPCODE(F32Nearest); RETURN(UNARY); }
-#line 5620 "src/prebuilt/wast-lexer-gen.cc"
+#line 5632 "src/prebuilt/wast-lexer-gen.cc"
yy920:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy967;
goto yy50;
yy921:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy968;
goto yy50;
yy922:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy969;
goto yy50;
yy923:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 315 "src/wast-lexer.cc"
+#line 327 "src/wast-lexer.cc"
{ OPCODE(F64Nearest); RETURN(UNARY); }
-#line 5640 "src/prebuilt/wast-lexer-gen.cc"
+#line 5652 "src/prebuilt/wast-lexer-gen.cc"
yy925:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy971;
goto yy50;
yy926:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy972;
goto yy50;
yy927:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 420 "src/wast-lexer.cc"
+#line 432 "src/wast-lexer.cc"
{ RETURN(GROW_MEMORY); }
-#line 5656 "src/prebuilt/wast-lexer-gen.cc"
+#line 5668 "src/prebuilt/wast-lexer-gen.cc"
yy929:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy973;
if (yych == 'u') goto yy975;
goto yy50;
yy930:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 273 "src/wast-lexer.cc"
+#line 285 "src/wast-lexer.cc"
{ OPCODE(I32Load8S); RETURN(LOAD); }
-#line 5669 "src/prebuilt/wast-lexer-gen.cc"
+#line 5681 "src/prebuilt/wast-lexer-gen.cc"
yy932:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 275 "src/wast-lexer.cc"
+#line 287 "src/wast-lexer.cc"
{ OPCODE(I32Load8U); RETURN(LOAD); }
-#line 5677 "src/prebuilt/wast-lexer-gen.cc"
+#line 5689 "src/prebuilt/wast-lexer-gen.cc"
yy934:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy977;
goto yy50;
yy935:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 285 "src/wast-lexer.cc"
+#line 297 "src/wast-lexer.cc"
{ OPCODE(I32Store16); RETURN(STORE); }
-#line 5689 "src/prebuilt/wast-lexer-gen.cc"
+#line 5701 "src/prebuilt/wast-lexer-gen.cc"
yy937:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy978;
goto yy50;
yy938:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy979;
goto yy50;
yy939:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy980;
goto yy50;
yy940:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy982;
if (yych == 'u') goto yy983;
goto yy50;
yy941:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy984;
if (yych == 'u') goto yy986;
goto yy50;
yy942:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy988;
if (yych == 'u') goto yy990;
goto yy50;
yy943:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 274 "src/wast-lexer.cc"
+#line 286 "src/wast-lexer.cc"
{ OPCODE(I64Load8S); RETURN(LOAD); }
-#line 5724 "src/prebuilt/wast-lexer-gen.cc"
+#line 5736 "src/prebuilt/wast-lexer-gen.cc"
yy945:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 276 "src/wast-lexer.cc"
+#line 288 "src/wast-lexer.cc"
{ OPCODE(I64Load8U); RETURN(LOAD); }
-#line 5732 "src/prebuilt/wast-lexer-gen.cc"
+#line 5744 "src/prebuilt/wast-lexer-gen.cc"
yy947:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'p') goto yy992;
goto yy50;
yy948:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 286 "src/wast-lexer.cc"
+#line 298 "src/wast-lexer.cc"
{ OPCODE(I64Store16); RETURN(STORE); }
-#line 5744 "src/prebuilt/wast-lexer-gen.cc"
+#line 5756 "src/prebuilt/wast-lexer-gen.cc"
yy950:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 287 "src/wast-lexer.cc"
+#line 299 "src/wast-lexer.cc"
{ OPCODE(I64Store32); RETURN(STORE); }
-#line 5752 "src/prebuilt/wast-lexer-gen.cc"
+#line 5764 "src/prebuilt/wast-lexer-gen.cc"
yy952:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy993;
goto yy50;
yy953:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy994;
goto yy50;
yy954:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 418 "src/wast-lexer.cc"
+#line 430 "src/wast-lexer.cc"
{ RETURN(UNREACHABLE); }
-#line 5768 "src/prebuilt/wast-lexer-gen.cc"
+#line 5780 "src/prebuilt/wast-lexer-gen.cc"
yy956:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy995;
goto yy50;
yy957:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy996;
goto yy50;
yy958:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy997;
goto yy50;
yy959:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy998;
goto yy50;
yy960:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'k') goto yy1000;
goto yy50;
yy961:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy1001;
goto yy50;
yy962:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy1003;
goto yy50;
yy963:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy1004;
if (yych == 'u') goto yy1005;
goto yy50;
yy964:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 358 "src/wast-lexer.cc"
+#line 370 "src/wast-lexer.cc"
{ OPCODE(F32Copysign); RETURN(BINARY); }
-#line 5809 "src/prebuilt/wast-lexer-gen.cc"
+#line 5821 "src/prebuilt/wast-lexer-gen.cc"
yy966:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '6') goto yy1006;
goto yy50;
yy967:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy1007;
goto yy50;
yy968:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 's') goto yy1008;
if (yych == 'u') goto yy1009;
goto yy50;
yy969:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 359 "src/wast-lexer.cc"
+#line 371 "src/wast-lexer.cc"
{ OPCODE(F64Copysign); RETURN(BINARY); }
-#line 5830 "src/prebuilt/wast-lexer-gen.cc"
+#line 5842 "src/prebuilt/wast-lexer-gen.cc"
yy971:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy1010;
goto yy50;
yy972:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy1011;
goto yy50;
yy973:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 277 "src/wast-lexer.cc"
+#line 289 "src/wast-lexer.cc"
{ OPCODE(I32Load16S); RETURN(LOAD); }
-#line 5846 "src/prebuilt/wast-lexer-gen.cc"
+#line 5858 "src/prebuilt/wast-lexer-gen.cc"
yy975:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 279 "src/wast-lexer.cc"
+#line 291 "src/wast-lexer.cc"
{ OPCODE(I32Load16U); RETURN(LOAD); }
-#line 5854 "src/prebuilt/wast-lexer-gen.cc"
+#line 5866 "src/prebuilt/wast-lexer-gen.cc"
yy977:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy1012;
goto yy50;
yy978:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy1013;
goto yy50;
yy979:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy1014;
goto yy50;
yy980:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 394 "src/wast-lexer.cc"
+#line 406 "src/wast-lexer.cc"
{ OPCODE(I32WrapI64); RETURN(CONVERT); }
-#line 5874 "src/prebuilt/wast-lexer-gen.cc"
+#line 5886 "src/prebuilt/wast-lexer-gen.cc"
yy982:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy1015;
goto yy50;
yy983:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy1016;
goto yy50;
yy984:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 278 "src/wast-lexer.cc"
+#line 290 "src/wast-lexer.cc"
{ OPCODE(I64Load16S); RETURN(LOAD); }
-#line 5890 "src/prebuilt/wast-lexer-gen.cc"
+#line 5902 "src/prebuilt/wast-lexer-gen.cc"
yy986:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 280 "src/wast-lexer.cc"
+#line 292 "src/wast-lexer.cc"
{ OPCODE(I64Load16U); RETURN(LOAD); }
-#line 5898 "src/prebuilt/wast-lexer-gen.cc"
+#line 5910 "src/prebuilt/wast-lexer-gen.cc"
yy988:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 281 "src/wast-lexer.cc"
+#line 293 "src/wast-lexer.cc"
{ OPCODE(I64Load32S); RETURN(LOAD); }
-#line 5906 "src/prebuilt/wast-lexer-gen.cc"
+#line 5918 "src/prebuilt/wast-lexer-gen.cc"
yy990:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 282 "src/wast-lexer.cc"
+#line 294 "src/wast-lexer.cc"
{ OPCODE(I64Load32U); RETURN(LOAD); }
-#line 5914 "src/prebuilt/wast-lexer-gen.cc"
+#line 5926 "src/prebuilt/wast-lexer-gen.cc"
yy992:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy1017;
goto yy50;
yy993:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy1018;
goto yy50;
yy994:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy1019;
goto yy50;
yy995:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy1020;
goto yy50;
yy996:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy1021;
goto yy50;
yy997:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'm') goto yy1023;
goto yy50;
yy998:
- ++lexer->cursor;
- if ((yych = *lexer->cursor) <= 'Z') {
+ ++cursor_;
+ if ((yych = *cursor_) <= 'Z') {
if (yych <= ')') {
if (yych <= '!') {
if (yych >= '!') goto yy49;
@@ -5970,975 +5982,685 @@ yy998:
}
}
yy999:
-#line 442 "src/wast-lexer.cc"
+#line 454 "src/wast-lexer.cc"
{ RETURN(ASSERT_RETURN); }
-#line 5976 "src/prebuilt/wast-lexer-gen.cc"
+#line 5988 "src/prebuilt/wast-lexer-gen.cc"
yy1000:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy1025;
goto yy50;
yy1001:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 256 "src/wast-lexer.cc"
+#line 268 "src/wast-lexer.cc"
{ RETURN(CALL_INDIRECT); }
-#line 5988 "src/prebuilt/wast-lexer-gen.cc"
+#line 6000 "src/prebuilt/wast-lexer-gen.cc"
yy1003:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'y') goto yy1026;
goto yy50;
yy1004:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy1028;
goto yy50;
yy1005:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy1029;
goto yy50;
yy1006:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy1030;
goto yy50;
yy1007:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy1032;
goto yy50;
yy1008:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy1033;
goto yy50;
yy1009:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy1034;
goto yy50;
yy1010:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '3') goto yy1035;
goto yy50;
yy1011:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy1036;
goto yy50;
yy1012:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy1037;
goto yy50;
yy1013:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '3') goto yy1038;
if (yych == '6') goto yy1039;
goto yy50;
yy1014:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '3') goto yy1040;
if (yych == '6') goto yy1041;
goto yy50;
yy1015:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy1042;
goto yy50;
yy1016:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy1043;
goto yy50;
yy1017:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy1044;
goto yy50;
yy1018:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '3') goto yy1045;
if (yych == '6') goto yy1046;
goto yy50;
yy1019:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '3') goto yy1047;
if (yych == '6') goto yy1048;
goto yy50;
yy1020:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy1049;
goto yy50;
yy1021:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 440 "src/wast-lexer.cc"
+#line 452 "src/wast-lexer.cc"
{ RETURN(ASSERT_INVALID); }
-#line 6072 "src/prebuilt/wast-lexer-gen.cc"
+#line 6084 "src/prebuilt/wast-lexer-gen.cc"
yy1023:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy1050;
goto yy50;
yy1024:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy1051;
if (yych == 'c') goto yy1052;
goto yy50;
yy1025:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'b') goto yy1053;
goto yy50;
yy1026:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 419 "src/wast-lexer.cc"
+#line 431 "src/wast-lexer.cc"
{ RETURN(CURRENT_MEMORY); }
-#line 6093 "src/prebuilt/wast-lexer-gen.cc"
+#line 6105 "src/prebuilt/wast-lexer-gen.cc"
yy1028:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy1054;
goto yy50;
yy1029:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy1055;
goto yy50;
yy1030:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 412 "src/wast-lexer.cc"
+#line 424 "src/wast-lexer.cc"
{ OPCODE(F32DemoteF64); RETURN(CONVERT); }
-#line 6109 "src/prebuilt/wast-lexer-gen.cc"
+#line 6121 "src/prebuilt/wast-lexer-gen.cc"
yy1032:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy1056;
goto yy50;
yy1033:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy1057;
goto yy50;
yy1034:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy1058;
goto yy50;
yy1035:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy1059;
goto yy50;
yy1036:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy1061;
goto yy50;
yy1037:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy1062;
goto yy50;
yy1038:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy1063;
goto yy50;
yy1039:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy1065;
goto yy50;
yy1040:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy1067;
goto yy50;
yy1041:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy1069;
goto yy50;
yy1042:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '3') goto yy1071;
goto yy50;
yy1043:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '3') goto yy1072;
goto yy50;
yy1044:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy1073;
goto yy50;
yy1045:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy1074;
goto yy50;
yy1046:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy1076;
goto yy50;
yy1047:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy1078;
goto yy50;
yy1048:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy1080;
goto yy50;
yy1049:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy1082;
goto yy50;
yy1050:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'd') goto yy1083;
goto yy50;
yy1051:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'r') goto yy1085;
goto yy50;
yy1052:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy1086;
goto yy50;
yy1053:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy1087;
goto yy50;
yy1054:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '3') goto yy1088;
if (yych == '6') goto yy1089;
goto yy50;
yy1055:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '3') goto yy1090;
if (yych == '6') goto yy1091;
goto yy50;
yy1056:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy1092;
goto yy50;
yy1057:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '3') goto yy1093;
if (yych == '6') goto yy1094;
goto yy50;
yy1058:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '3') goto yy1095;
if (yych == '6') goto yy1096;
goto yy50;
yy1059:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 411 "src/wast-lexer.cc"
+#line 423 "src/wast-lexer.cc"
{ OPCODE(F64PromoteF32); RETURN(CONVERT); }
-#line 6229 "src/prebuilt/wast-lexer-gen.cc"
+#line 6241 "src/prebuilt/wast-lexer-gen.cc"
yy1061:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy1097;
goto yy50;
yy1062:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy1098;
goto yy50;
yy1063:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 395 "src/wast-lexer.cc"
+#line 407 "src/wast-lexer.cc"
{ OPCODE(I32TruncSF32); RETURN(CONVERT); }
-#line 6245 "src/prebuilt/wast-lexer-gen.cc"
+#line 6257 "src/prebuilt/wast-lexer-gen.cc"
yy1065:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 397 "src/wast-lexer.cc"
+#line 409 "src/wast-lexer.cc"
{ OPCODE(I32TruncSF64); RETURN(CONVERT); }
-#line 6253 "src/prebuilt/wast-lexer-gen.cc"
+#line 6265 "src/prebuilt/wast-lexer-gen.cc"
yy1067:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 399 "src/wast-lexer.cc"
+#line 411 "src/wast-lexer.cc"
{ OPCODE(I32TruncUF32); RETURN(CONVERT); }
-#line 6261 "src/prebuilt/wast-lexer-gen.cc"
+#line 6273 "src/prebuilt/wast-lexer-gen.cc"
yy1069:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 401 "src/wast-lexer.cc"
+#line 413 "src/wast-lexer.cc"
{ OPCODE(I32TruncUF64); RETURN(CONVERT); }
-#line 6269 "src/prebuilt/wast-lexer-gen.cc"
+#line 6281 "src/prebuilt/wast-lexer-gen.cc"
yy1071:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy1099;
goto yy50;
yy1072:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy1101;
goto yy50;
yy1073:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '/') goto yy1103;
goto yy50;
yy1074:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 396 "src/wast-lexer.cc"
+#line 408 "src/wast-lexer.cc"
{ OPCODE(I64TruncSF32); RETURN(CONVERT); }
-#line 6289 "src/prebuilt/wast-lexer-gen.cc"
+#line 6301 "src/prebuilt/wast-lexer-gen.cc"
yy1076:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 398 "src/wast-lexer.cc"
+#line 410 "src/wast-lexer.cc"
{ OPCODE(I64TruncSF64); RETURN(CONVERT); }
-#line 6297 "src/prebuilt/wast-lexer-gen.cc"
+#line 6309 "src/prebuilt/wast-lexer-gen.cc"
yy1078:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 400 "src/wast-lexer.cc"
+#line 412 "src/wast-lexer.cc"
{ OPCODE(I64TruncUF32); RETURN(CONVERT); }
-#line 6305 "src/prebuilt/wast-lexer-gen.cc"
+#line 6317 "src/prebuilt/wast-lexer-gen.cc"
yy1080:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 402 "src/wast-lexer.cc"
+#line 414 "src/wast-lexer.cc"
{ OPCODE(I64TruncUF64); RETURN(CONVERT); }
-#line 6313 "src/prebuilt/wast-lexer-gen.cc"
+#line 6325 "src/prebuilt/wast-lexer-gen.cc"
yy1082:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy1104;
goto yy50;
yy1083:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 439 "src/wast-lexer.cc"
+#line 451 "src/wast-lexer.cc"
{ RETURN(ASSERT_MALFORMED); }
-#line 6325 "src/prebuilt/wast-lexer-gen.cc"
+#line 6337 "src/prebuilt/wast-lexer-gen.cc"
yy1085:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy1106;
goto yy50;
yy1086:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy1107;
goto yy50;
yy1087:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy1108;
goto yy50;
yy1088:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy1110;
goto yy50;
yy1089:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy1112;
goto yy50;
yy1090:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy1114;
goto yy50;
yy1091:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy1116;
goto yy50;
yy1092:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy1118;
goto yy50;
yy1093:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy1119;
goto yy50;
yy1094:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy1121;
goto yy50;
yy1095:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy1123;
goto yy50;
yy1096:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy1125;
goto yy50;
yy1097:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy1127;
goto yy50;
yy1098:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy1128;
goto yy50;
yy1099:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 392 "src/wast-lexer.cc"
+#line 404 "src/wast-lexer.cc"
{ OPCODE(I64ExtendSI32); RETURN(CONVERT); }
-#line 6389 "src/prebuilt/wast-lexer-gen.cc"
+#line 6401 "src/prebuilt/wast-lexer-gen.cc"
yy1101:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 393 "src/wast-lexer.cc"
+#line 405 "src/wast-lexer.cc"
{ OPCODE(I64ExtendUI32); RETURN(CONVERT); }
-#line 6397 "src/prebuilt/wast-lexer-gen.cc"
+#line 6409 "src/prebuilt/wast-lexer-gen.cc"
yy1103:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'f') goto yy1129;
goto yy50;
yy1104:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 448 "src/wast-lexer.cc"
+#line 460 "src/wast-lexer.cc"
{ RETURN(ASSERT_EXHAUSTION); }
-#line 6409 "src/prebuilt/wast-lexer-gen.cc"
+#line 6421 "src/prebuilt/wast-lexer-gen.cc"
yy1106:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy1130;
goto yy50;
yy1107:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'o') goto yy1131;
goto yy50;
yy1108:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 441 "src/wast-lexer.cc"
+#line 453 "src/wast-lexer.cc"
{ RETURN(ASSERT_UNLINKABLE); }
-#line 6425 "src/prebuilt/wast-lexer-gen.cc"
+#line 6437 "src/prebuilt/wast-lexer-gen.cc"
yy1110:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 403 "src/wast-lexer.cc"
+#line 415 "src/wast-lexer.cc"
{ OPCODE(F32ConvertSI32); RETURN(CONVERT); }
-#line 6433 "src/prebuilt/wast-lexer-gen.cc"
+#line 6445 "src/prebuilt/wast-lexer-gen.cc"
yy1112:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 405 "src/wast-lexer.cc"
+#line 417 "src/wast-lexer.cc"
{ OPCODE(F32ConvertSI64); RETURN(CONVERT); }
-#line 6441 "src/prebuilt/wast-lexer-gen.cc"
+#line 6453 "src/prebuilt/wast-lexer-gen.cc"
yy1114:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 407 "src/wast-lexer.cc"
+#line 419 "src/wast-lexer.cc"
{ OPCODE(F32ConvertUI32); RETURN(CONVERT); }
-#line 6449 "src/prebuilt/wast-lexer-gen.cc"
+#line 6461 "src/prebuilt/wast-lexer-gen.cc"
yy1116:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 409 "src/wast-lexer.cc"
+#line 421 "src/wast-lexer.cc"
{ OPCODE(F32ConvertUI64); RETURN(CONVERT); }
-#line 6457 "src/prebuilt/wast-lexer-gen.cc"
+#line 6469 "src/prebuilt/wast-lexer-gen.cc"
yy1118:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '3') goto yy1132;
goto yy50;
yy1119:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 404 "src/wast-lexer.cc"
+#line 416 "src/wast-lexer.cc"
{ OPCODE(F64ConvertSI32); RETURN(CONVERT); }
-#line 6469 "src/prebuilt/wast-lexer-gen.cc"
+#line 6481 "src/prebuilt/wast-lexer-gen.cc"
yy1121:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 406 "src/wast-lexer.cc"
+#line 418 "src/wast-lexer.cc"
{ OPCODE(F64ConvertSI64); RETURN(CONVERT); }
-#line 6477 "src/prebuilt/wast-lexer-gen.cc"
+#line 6489 "src/prebuilt/wast-lexer-gen.cc"
yy1123:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 408 "src/wast-lexer.cc"
+#line 420 "src/wast-lexer.cc"
{ OPCODE(F64ConvertUI32); RETURN(CONVERT); }
-#line 6485 "src/prebuilt/wast-lexer-gen.cc"
+#line 6497 "src/prebuilt/wast-lexer-gen.cc"
yy1125:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 410 "src/wast-lexer.cc"
+#line 422 "src/wast-lexer.cc"
{ OPCODE(F64ConvertUI64); RETURN(CONVERT); }
-#line 6493 "src/prebuilt/wast-lexer-gen.cc"
+#line 6505 "src/prebuilt/wast-lexer-gen.cc"
yy1127:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '6') goto yy1133;
goto yy50;
yy1128:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '3') goto yy1134;
goto yy50;
yy1129:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '6') goto yy1135;
goto yy50;
yy1130:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'h') goto yy1136;
goto yy50;
yy1131:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy1137;
goto yy50;
yy1132:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy1138;
goto yy50;
yy1133:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy1140;
goto yy50;
yy1134:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '2') goto yy1142;
goto yy50;
yy1135:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '4') goto yy1144;
goto yy50;
yy1136:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'm') goto yy1146;
goto yy50;
yy1137:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy1147;
goto yy50;
yy1138:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 413 "src/wast-lexer.cc"
+#line 425 "src/wast-lexer.cc"
{ OPCODE(F32ReinterpretI32); RETURN(CONVERT); }
-#line 6545 "src/prebuilt/wast-lexer-gen.cc"
+#line 6557 "src/prebuilt/wast-lexer-gen.cc"
yy1140:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 415 "src/wast-lexer.cc"
+#line 427 "src/wast-lexer.cc"
{ OPCODE(F64ReinterpretI64); RETURN(CONVERT); }
-#line 6553 "src/prebuilt/wast-lexer-gen.cc"
+#line 6565 "src/prebuilt/wast-lexer-gen.cc"
yy1142:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 414 "src/wast-lexer.cc"
+#line 426 "src/wast-lexer.cc"
{ OPCODE(I32ReinterpretF32); RETURN(CONVERT); }
-#line 6561 "src/prebuilt/wast-lexer-gen.cc"
+#line 6573 "src/prebuilt/wast-lexer-gen.cc"
yy1144:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 416 "src/wast-lexer.cc"
+#line 428 "src/wast-lexer.cc"
{ OPCODE(I64ReinterpretF64); RETURN(CONVERT); }
-#line 6569 "src/prebuilt/wast-lexer-gen.cc"
+#line 6581 "src/prebuilt/wast-lexer-gen.cc"
yy1146:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'e') goto yy1148;
goto yy50;
yy1147:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy1149;
goto yy50;
yy1148:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 't') goto yy1150;
goto yy50;
yy1149:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy1151;
goto yy50;
yy1150:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'i') goto yy1152;
goto yy50;
yy1151:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'l') goto yy1153;
goto yy50;
yy1152:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'c') goto yy1154;
goto yy50;
yy1153:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy1155;
goto yy50;
yy1154:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == '_') goto yy1156;
goto yy50;
yy1155:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy1157;
goto yy50;
yy1156:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy1158;
goto yy50;
yy1157:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy1159;
goto yy50;
yy1158:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'a') goto yy1160;
goto yy50;
yy1159:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy1161;
goto yy50;
yy1160:
- yych = *++lexer->cursor;
+ yych = *++cursor_;
if (yych == 'n') goto yy1163;
goto yy50;
yy1161:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 443 "src/wast-lexer.cc"
+#line 455 "src/wast-lexer.cc"
{
RETURN(ASSERT_RETURN_CANONICAL_NAN); }
-#line 6638 "src/prebuilt/wast-lexer-gen.cc"
+#line 6650 "src/prebuilt/wast-lexer-gen.cc"
yy1163:
- ++lexer->cursor;
- if (yybm[0+(yych = *lexer->cursor)] & 16) {
+ ++cursor_;
+ if (yybm[0+(yych = *cursor_)] & 16) {
goto yy49;
}
-#line 445 "src/wast-lexer.cc"
+#line 457 "src/wast-lexer.cc"
{
RETURN(ASSERT_RETURN_ARITHMETIC_NAN); }
-#line 6647 "src/prebuilt/wast-lexer-gen.cc"
+#line 6659 "src/prebuilt/wast-lexer-gen.cc"
}
}
-#line 469 "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;
-}
+#line 481 "src/wast-lexer.cc"
-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
diff --git a/src/prebuilt/wast-parser-gen.cc b/src/prebuilt/wast-parser-gen.cc
index ac4b7283..aabb118c 100644
--- a/src/prebuilt/wast-parser-gen.cc
+++ b/src/prebuilt/wast-parser-gen.cc
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2. */
+/* A Bison parser, made by GNU Bison 3.0.4. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "3.0.2"
+#define YYBISON_VERSION "3.0.4"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -227,7 +227,7 @@ class BinaryErrorHandlerModule : public BinaryErrorHandler {
WastParser* parser_;
};
-#define wabt_wast_parser_lex wast_lexer_lex
+#define wabt_wast_parser_lex(...) lexer->GetToken(__VA_ARGS__, parser)
#define wabt_wast_parser_error wast_parser_error
@@ -682,24 +682,24 @@ static const yytype_uint8 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 292, 292, 298, 308, 309, 313, 331, 332, 338,
- 341, 346, 353, 356, 357, 362, 369, 377, 383, 389,
- 394, 401, 407, 418, 422, 426, 433, 438, 445, 446,
- 452, 453, 456, 460, 461, 465, 466, 476, 477, 488,
- 489, 490, 493, 496, 499, 502, 505, 508, 511, 514,
- 517, 520, 523, 526, 529, 532, 535, 538, 541, 544,
- 557, 560, 563, 566, 569, 572, 577, 582, 587, 592,
- 600, 609, 613, 616, 621, 626, 636, 640, 644, 648,
- 652, 656, 663, 664, 672, 673, 681, 686, 687, 693,
- 699, 709, 715, 721, 731, 783, 793, 800, 808, 818,
- 821, 825, 832, 844, 852, 874, 881, 893, 901, 922,
- 944, 952, 965, 973, 981, 987, 993, 1001, 1006, 1014,
- 1022, 1028, 1034, 1043, 1051, 1056, 1061, 1066, 1073, 1080,
- 1084, 1087, 1099, 1104, 1113, 1117, 1120, 1127, 1136, 1153,
- 1170, 1182, 1188, 1194, 1200, 1233, 1243, 1263, 1274, 1296,
- 1301, 1309, 1319, 1329, 1335, 1341, 1347, 1353, 1359, 1364,
- 1369, 1375, 1384, 1389, 1390, 1395, 1404, 1405, 1412, 1424,
- 1425, 1432, 1498
+ 0, 291, 291, 297, 307, 308, 312, 330, 331, 337,
+ 340, 345, 352, 355, 356, 361, 368, 376, 382, 388,
+ 393, 400, 406, 417, 421, 425, 432, 437, 444, 445,
+ 451, 452, 455, 459, 460, 464, 465, 475, 476, 487,
+ 488, 489, 492, 495, 498, 501, 504, 507, 510, 513,
+ 516, 519, 522, 525, 528, 531, 534, 537, 540, 543,
+ 556, 559, 562, 565, 568, 571, 576, 581, 586, 591,
+ 599, 608, 612, 615, 620, 625, 635, 639, 643, 647,
+ 651, 655, 662, 663, 671, 672, 680, 685, 686, 692,
+ 698, 708, 714, 720, 730, 782, 792, 799, 807, 817,
+ 820, 824, 831, 843, 851, 873, 880, 892, 900, 921,
+ 943, 951, 964, 972, 980, 986, 992, 1000, 1005, 1013,
+ 1021, 1027, 1033, 1042, 1050, 1055, 1060, 1065, 1072, 1079,
+ 1083, 1086, 1098, 1103, 1112, 1116, 1119, 1126, 1135, 1152,
+ 1169, 1181, 1187, 1193, 1199, 1232, 1242, 1262, 1273, 1295,
+ 1300, 1308, 1318, 1328, 1334, 1340, 1346, 1352, 1358, 1363,
+ 1368, 1374, 1383, 1388, 1389, 1394, 1403, 1404, 1411, 1423,
+ 1424, 1431, 1497
};
#endif
@@ -1636,361 +1636,361 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
switch (yytype)
{
case 5: /* NAT */
-#line 249 "src/wast-parser.y" /* yacc.c:1257 */
+#line 248 "src/wast-parser.y" /* yacc.c:1257 */
{}
#line 1642 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 6: /* INT */
-#line 249 "src/wast-parser.y" /* yacc.c:1257 */
+#line 248 "src/wast-parser.y" /* yacc.c:1257 */
{}
#line 1648 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 7: /* FLOAT */
-#line 249 "src/wast-parser.y" /* yacc.c:1257 */
+#line 248 "src/wast-parser.y" /* yacc.c:1257 */
{}
#line 1654 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 8: /* TEXT */
-#line 249 "src/wast-parser.y" /* yacc.c:1257 */
+#line 248 "src/wast-parser.y" /* yacc.c:1257 */
{}
#line 1660 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 9: /* VAR */
-#line 249 "src/wast-parser.y" /* yacc.c:1257 */
+#line 248 "src/wast-parser.y" /* yacc.c:1257 */
{}
#line 1666 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 34: /* OFFSET_EQ_NAT */
-#line 249 "src/wast-parser.y" /* yacc.c:1257 */
+#line 248 "src/wast-parser.y" /* yacc.c:1257 */
{}
#line 1672 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 35: /* ALIGN_EQ_NAT */
-#line 249 "src/wast-parser.y" /* yacc.c:1257 */
+#line 248 "src/wast-parser.y" /* yacc.c:1257 */
{}
#line 1678 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 73: /* non_empty_text_list */
-#line 276 "src/wast-parser.y" /* yacc.c:1257 */
+#line 275 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_text_list(&((*yyvaluep).text_list)); }
#line 1684 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 74: /* text_list */
-#line 276 "src/wast-parser.y" /* yacc.c:1257 */
+#line 275 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_text_list(&((*yyvaluep).text_list)); }
#line 1690 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 75: /* quoted_text */
-#line 250 "src/wast-parser.y" /* yacc.c:1257 */
+#line 249 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_string_slice(&((*yyvaluep).text)); }
#line 1696 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 76: /* value_type_list */
-#line 277 "src/wast-parser.y" /* yacc.c:1257 */
+#line 276 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).types); }
#line 1702 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 78: /* global_type */
-#line 269 "src/wast-parser.y" /* yacc.c:1257 */
+#line 268 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).global); }
#line 1708 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 79: /* func_type */
-#line 267 "src/wast-parser.y" /* yacc.c:1257 */
+#line 266 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).func_sig); }
#line 1714 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 80: /* func_sig */
-#line 267 "src/wast-parser.y" /* yacc.c:1257 */
+#line 266 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).func_sig); }
#line 1720 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 82: /* memory_sig */
-#line 272 "src/wast-parser.y" /* yacc.c:1257 */
+#line 271 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).memory); }
#line 1726 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 84: /* type_use */
-#line 278 "src/wast-parser.y" /* yacc.c:1257 */
+#line 277 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_var(&((*yyvaluep).var)); }
#line 1732 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 86: /* literal */
-#line 251 "src/wast-parser.y" /* yacc.c:1257 */
+#line 250 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_string_slice(&((*yyvaluep).literal).text); }
#line 1738 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 87: /* var */
-#line 278 "src/wast-parser.y" /* yacc.c:1257 */
+#line 277 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_var(&((*yyvaluep).var)); }
#line 1744 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 88: /* var_list */
-#line 279 "src/wast-parser.y" /* yacc.c:1257 */
+#line 278 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).vars); }
#line 1750 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 89: /* bind_var_opt */
-#line 250 "src/wast-parser.y" /* yacc.c:1257 */
+#line 249 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_string_slice(&((*yyvaluep).text)); }
#line 1756 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 90: /* bind_var */
-#line 250 "src/wast-parser.y" /* yacc.c:1257 */
+#line 249 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_string_slice(&((*yyvaluep).text)); }
#line 1762 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 91: /* labeling_opt */
-#line 250 "src/wast-parser.y" /* yacc.c:1257 */
+#line 249 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_string_slice(&((*yyvaluep).text)); }
#line 1768 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 94: /* instr */
-#line 264 "src/wast-parser.y" /* yacc.c:1257 */
+#line 263 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_expr_list(((*yyvaluep).expr_list).first); }
#line 1774 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 95: /* plain_instr */
-#line 263 "src/wast-parser.y" /* yacc.c:1257 */
+#line 262 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).expr); }
#line 1780 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 96: /* block_instr */
-#line 263 "src/wast-parser.y" /* yacc.c:1257 */
+#line 262 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).expr); }
#line 1786 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 97: /* block */
-#line 253 "src/wast-parser.y" /* yacc.c:1257 */
+#line 252 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).block); }
#line 1792 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 98: /* expr */
-#line 264 "src/wast-parser.y" /* yacc.c:1257 */
+#line 263 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_expr_list(((*yyvaluep).expr_list).first); }
#line 1798 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 99: /* expr1 */
-#line 264 "src/wast-parser.y" /* yacc.c:1257 */
+#line 263 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_expr_list(((*yyvaluep).expr_list).first); }
#line 1804 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 100: /* if_ */
-#line 264 "src/wast-parser.y" /* yacc.c:1257 */
+#line 263 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_expr_list(((*yyvaluep).expr_list).first); }
#line 1810 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 101: /* instr_list */
-#line 264 "src/wast-parser.y" /* yacc.c:1257 */
+#line 263 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_expr_list(((*yyvaluep).expr_list).first); }
#line 1816 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 102: /* expr_list */
-#line 264 "src/wast-parser.y" /* yacc.c:1257 */
+#line 263 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_expr_list(((*yyvaluep).expr_list).first); }
#line 1822 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 103: /* const_expr */
-#line 264 "src/wast-parser.y" /* yacc.c:1257 */
+#line 263 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_expr_list(((*yyvaluep).expr_list).first); }
#line 1828 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 104: /* func_fields */
-#line 265 "src/wast-parser.y" /* yacc.c:1257 */
+#line 264 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_func_fields(((*yyvaluep).func_fields)); }
#line 1834 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 105: /* func_body */
-#line 265 "src/wast-parser.y" /* yacc.c:1257 */
+#line 264 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_func_fields(((*yyvaluep).func_fields)); }
#line 1840 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 106: /* func_info */
-#line 266 "src/wast-parser.y" /* yacc.c:1257 */
+#line 265 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).func); }
#line 1846 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 107: /* func */
-#line 260 "src/wast-parser.y" /* yacc.c:1257 */
+#line 259 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).exported_func); }
#line 1852 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 108: /* offset */
-#line 264 "src/wast-parser.y" /* yacc.c:1257 */
+#line 263 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_expr_list(((*yyvaluep).expr_list).first); }
#line 1858 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 109: /* elem */
-#line 258 "src/wast-parser.y" /* yacc.c:1257 */
+#line 257 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).elem_segment); }
#line 1864 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 110: /* table */
-#line 262 "src/wast-parser.y" /* yacc.c:1257 */
+#line 261 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).exported_table); }
#line 1870 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 111: /* data */
-#line 257 "src/wast-parser.y" /* yacc.c:1257 */
+#line 256 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).data_segment); }
#line 1876 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 112: /* memory */
-#line 261 "src/wast-parser.y" /* yacc.c:1257 */
+#line 260 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).exported_memory); }
#line 1882 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 114: /* import_kind */
-#line 270 "src/wast-parser.y" /* yacc.c:1257 */
+#line 269 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).import); }
#line 1888 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 115: /* import */
-#line 270 "src/wast-parser.y" /* yacc.c:1257 */
+#line 269 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).import); }
#line 1894 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 116: /* inline_import */
-#line 270 "src/wast-parser.y" /* yacc.c:1257 */
+#line 269 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).import); }
#line 1900 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 117: /* export_kind */
-#line 259 "src/wast-parser.y" /* yacc.c:1257 */
+#line 258 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).export_); }
#line 1906 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 118: /* export */
-#line 259 "src/wast-parser.y" /* yacc.c:1257 */
+#line 258 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).export_); }
#line 1912 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 119: /* inline_export_opt */
-#line 271 "src/wast-parser.y" /* yacc.c:1257 */
+#line 270 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).optional_export); }
#line 1918 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 120: /* inline_export */
-#line 271 "src/wast-parser.y" /* yacc.c:1257 */
+#line 270 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).optional_export); }
#line 1924 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 121: /* type_def */
-#line 268 "src/wast-parser.y" /* yacc.c:1257 */
+#line 267 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).func_type); }
#line 1930 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 122: /* start */
-#line 278 "src/wast-parser.y" /* yacc.c:1257 */
+#line 277 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_var(&((*yyvaluep).var)); }
#line 1936 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 123: /* module_fields */
-#line 273 "src/wast-parser.y" /* yacc.c:1257 */
+#line 272 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).module); }
#line 1942 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 124: /* raw_module */
-#line 274 "src/wast-parser.y" /* yacc.c:1257 */
+#line 273 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).raw_module); }
#line 1948 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 125: /* module */
-#line 273 "src/wast-parser.y" /* yacc.c:1257 */
+#line 272 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).module); }
#line 1954 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 126: /* script_var_opt */
-#line 278 "src/wast-parser.y" /* yacc.c:1257 */
+#line 277 "src/wast-parser.y" /* yacc.c:1257 */
{ destroy_var(&((*yyvaluep).var)); }
#line 1960 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 127: /* action */
-#line 252 "src/wast-parser.y" /* yacc.c:1257 */
+#line 251 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).action); }
#line 1966 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 128: /* assertion */
-#line 254 "src/wast-parser.y" /* yacc.c:1257 */
+#line 253 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).command); }
#line 1972 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 129: /* cmd */
-#line 254 "src/wast-parser.y" /* yacc.c:1257 */
+#line 253 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).command); }
#line 1978 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 130: /* cmd_list */
-#line 255 "src/wast-parser.y" /* yacc.c:1257 */
+#line 254 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).commands); }
#line 1984 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 132: /* const_list */
-#line 256 "src/wast-parser.y" /* yacc.c:1257 */
+#line 255 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).consts); }
#line 1990 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
case 133: /* script */
-#line 275 "src/wast-parser.y" /* yacc.c:1257 */
+#line 274 "src/wast-parser.y" /* yacc.c:1257 */
{ delete ((*yyvaluep).script); }
#line 1996 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1257 */
break;
@@ -2204,7 +2204,7 @@ yybackup:
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
- yychar = yylex (&yylval, &yylloc, lexer, parser);
+ yychar = yylex (&yylval, &yylloc);
}
if (yychar <= YYEOF)
@@ -2284,7 +2284,7 @@ yyreduce:
switch (yyn)
{
case 2:
-#line 292 "src/wast-parser.y" /* yacc.c:1646 */
+#line 291 "src/wast-parser.y" /* yacc.c:1646 */
{
TextListNode* node = new TextListNode();
DUPTEXT(node->text, (yyvsp[0].text));
@@ -2295,7 +2295,7 @@ yyreduce:
break;
case 3:
-#line 298 "src/wast-parser.y" /* yacc.c:1646 */
+#line 297 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.text_list) = (yyvsp[-1].text_list);
TextListNode* node = new TextListNode();
@@ -2308,13 +2308,13 @@ yyreduce:
break;
case 4:
-#line 308 "src/wast-parser.y" /* yacc.c:1646 */
+#line 307 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.text_list).first = (yyval.text_list).last = nullptr; }
#line 2314 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 6:
-#line 313 "src/wast-parser.y" /* yacc.c:1646 */
+#line 312 "src/wast-parser.y" /* yacc.c:1646 */
{
TextListNode node;
node.text = (yyvsp[0].text);
@@ -2332,13 +2332,13 @@ yyreduce:
break;
case 7:
-#line 331 "src/wast-parser.y" /* yacc.c:1646 */
+#line 330 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.types) = new TypeVector(); }
#line 2338 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 8:
-#line 332 "src/wast-parser.y" /* yacc.c:1646 */
+#line 331 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.types) = (yyvsp[-1].types);
(yyval.types)->push_back((yyvsp[0].type));
@@ -2347,13 +2347,13 @@ yyreduce:
break;
case 9:
-#line 338 "src/wast-parser.y" /* yacc.c:1646 */
+#line 337 "src/wast-parser.y" /* yacc.c:1646 */
{}
#line 2353 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 10:
-#line 341 "src/wast-parser.y" /* yacc.c:1646 */
+#line 340 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.global) = new Global();
(yyval.global)->type = (yyvsp[0].type);
@@ -2363,7 +2363,7 @@ yyreduce:
break;
case 11:
-#line 346 "src/wast-parser.y" /* yacc.c:1646 */
+#line 345 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.global) = new Global();
(yyval.global)->type = (yyvsp[-1].type);
@@ -2373,19 +2373,19 @@ yyreduce:
break;
case 12:
-#line 353 "src/wast-parser.y" /* yacc.c:1646 */
+#line 352 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.func_sig) = (yyvsp[-1].func_sig); }
#line 2379 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 13:
-#line 356 "src/wast-parser.y" /* yacc.c:1646 */
+#line 355 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.func_sig) = new FuncSignature(); }
#line 2385 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 14:
-#line 357 "src/wast-parser.y" /* yacc.c:1646 */
+#line 356 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.func_sig) = new FuncSignature();
(yyval.func_sig)->param_types = std::move(*(yyvsp[-1].types));
@@ -2395,7 +2395,7 @@ yyreduce:
break;
case 15:
-#line 362 "src/wast-parser.y" /* yacc.c:1646 */
+#line 361 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.func_sig) = new FuncSignature();
(yyval.func_sig)->param_types = std::move(*(yyvsp[-5].types));
@@ -2407,7 +2407,7 @@ yyreduce:
break;
case 16:
-#line 369 "src/wast-parser.y" /* yacc.c:1646 */
+#line 368 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.func_sig) = new FuncSignature();
(yyval.func_sig)->result_types = std::move(*(yyvsp[-1].types));
@@ -2417,7 +2417,7 @@ yyreduce:
break;
case 17:
-#line 377 "src/wast-parser.y" /* yacc.c:1646 */
+#line 376 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.table) = new Table();
(yyval.table)->elem_limits = (yyvsp[-1].limits);
@@ -2426,7 +2426,7 @@ yyreduce:
break;
case 18:
-#line 383 "src/wast-parser.y" /* yacc.c:1646 */
+#line 382 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.memory) = new Memory();
(yyval.memory)->page_limits = (yyvsp[0].limits);
@@ -2435,7 +2435,7 @@ yyreduce:
break;
case 19:
-#line 389 "src/wast-parser.y" /* yacc.c:1646 */
+#line 388 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.limits).has_max = false;
(yyval.limits).initial = (yyvsp[0].u64);
@@ -2445,7 +2445,7 @@ yyreduce:
break;
case 20:
-#line 394 "src/wast-parser.y" /* yacc.c:1646 */
+#line 393 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.limits).has_max = true;
(yyval.limits).initial = (yyvsp[-1].u64);
@@ -2455,13 +2455,13 @@ yyreduce:
break;
case 21:
-#line 401 "src/wast-parser.y" /* yacc.c:1646 */
+#line 400 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.var) = (yyvsp[-1].var); }
#line 2461 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 22:
-#line 407 "src/wast-parser.y" /* yacc.c:1646 */
+#line 406 "src/wast-parser.y" /* yacc.c:1646 */
{
if (WABT_FAILED(parse_uint64((yyvsp[0].literal).text.start,
(yyvsp[0].literal).text.start + (yyvsp[0].literal).text.length, &(yyval.u64)))) {
@@ -2474,7 +2474,7 @@ yyreduce:
break;
case 23:
-#line 418 "src/wast-parser.y" /* yacc.c:1646 */
+#line 417 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.literal).type = (yyvsp[0].literal).type;
DUPTEXT((yyval.literal).text, (yyvsp[0].literal).text);
@@ -2483,7 +2483,7 @@ yyreduce:
break;
case 24:
-#line 422 "src/wast-parser.y" /* yacc.c:1646 */
+#line 421 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.literal).type = (yyvsp[0].literal).type;
DUPTEXT((yyval.literal).text, (yyvsp[0].literal).text);
@@ -2492,7 +2492,7 @@ yyreduce:
break;
case 25:
-#line 426 "src/wast-parser.y" /* yacc.c:1646 */
+#line 425 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.literal).type = (yyvsp[0].literal).type;
DUPTEXT((yyval.literal).text, (yyvsp[0].literal).text);
@@ -2501,7 +2501,7 @@ yyreduce:
break;
case 26:
-#line 433 "src/wast-parser.y" /* yacc.c:1646 */
+#line 432 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.var).loc = (yylsp[0]);
(yyval.var).type = VarType::Index;
@@ -2511,7 +2511,7 @@ yyreduce:
break;
case 27:
-#line 438 "src/wast-parser.y" /* yacc.c:1646 */
+#line 437 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.var).loc = (yylsp[0]);
(yyval.var).type = VarType::Name;
@@ -2521,13 +2521,13 @@ yyreduce:
break;
case 28:
-#line 445 "src/wast-parser.y" /* yacc.c:1646 */
+#line 444 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.vars) = new VarVector(); }
#line 2527 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 29:
-#line 446 "src/wast-parser.y" /* yacc.c:1646 */
+#line 445 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.vars) = (yyvsp[-1].vars);
(yyval.vars)->push_back((yyvsp[0].var));
@@ -2536,31 +2536,31 @@ yyreduce:
break;
case 30:
-#line 452 "src/wast-parser.y" /* yacc.c:1646 */
+#line 451 "src/wast-parser.y" /* yacc.c:1646 */
{ WABT_ZERO_MEMORY((yyval.text)); }
#line 2542 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 32:
-#line 456 "src/wast-parser.y" /* yacc.c:1646 */
+#line 455 "src/wast-parser.y" /* yacc.c:1646 */
{ DUPTEXT((yyval.text), (yyvsp[0].text)); }
#line 2548 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 33:
-#line 460 "src/wast-parser.y" /* yacc.c:1646 */
+#line 459 "src/wast-parser.y" /* yacc.c:1646 */
{ WABT_ZERO_MEMORY((yyval.text)); }
#line 2554 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 35:
-#line 465 "src/wast-parser.y" /* yacc.c:1646 */
+#line 464 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.u64) = 0; }
#line 2560 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 36:
-#line 466 "src/wast-parser.y" /* yacc.c:1646 */
+#line 465 "src/wast-parser.y" /* yacc.c:1646 */
{
if (WABT_FAILED(parse_int64((yyvsp[0].text).start, (yyvsp[0].text).start + (yyvsp[0].text).length, &(yyval.u64),
ParseIntType::SignedAndUnsigned))) {
@@ -2573,13 +2573,13 @@ yyreduce:
break;
case 37:
-#line 476 "src/wast-parser.y" /* yacc.c:1646 */
+#line 475 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.u32) = USE_NATURAL_ALIGNMENT; }
#line 2579 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 38:
-#line 477 "src/wast-parser.y" /* yacc.c:1646 */
+#line 476 "src/wast-parser.y" /* yacc.c:1646 */
{
if (WABT_FAILED(parse_int32((yyvsp[0].text).start, (yyvsp[0].text).start + (yyvsp[0].text).length, &(yyval.u32),
ParseIntType::UnsignedOnly))) {
@@ -2592,25 +2592,25 @@ yyreduce:
break;
case 39:
-#line 488 "src/wast-parser.y" /* yacc.c:1646 */
+#line 487 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.expr_list) = join_exprs1(&(yylsp[0]), (yyvsp[0].expr)); }
#line 2598 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 40:
-#line 489 "src/wast-parser.y" /* yacc.c:1646 */
+#line 488 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.expr_list) = join_exprs1(&(yylsp[0]), (yyvsp[0].expr)); }
#line 2604 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 41:
-#line 490 "src/wast-parser.y" /* yacc.c:1646 */
+#line 489 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.expr_list) = (yyvsp[0].expr_list); }
#line 2610 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 42:
-#line 493 "src/wast-parser.y" /* yacc.c:1646 */
+#line 492 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateUnreachable();
}
@@ -2618,7 +2618,7 @@ yyreduce:
break;
case 43:
-#line 496 "src/wast-parser.y" /* yacc.c:1646 */
+#line 495 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateNop();
}
@@ -2626,7 +2626,7 @@ yyreduce:
break;
case 44:
-#line 499 "src/wast-parser.y" /* yacc.c:1646 */
+#line 498 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateDrop();
}
@@ -2634,7 +2634,7 @@ yyreduce:
break;
case 45:
-#line 502 "src/wast-parser.y" /* yacc.c:1646 */
+#line 501 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateSelect();
}
@@ -2642,7 +2642,7 @@ yyreduce:
break;
case 46:
-#line 505 "src/wast-parser.y" /* yacc.c:1646 */
+#line 504 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateBr((yyvsp[0].var));
}
@@ -2650,7 +2650,7 @@ yyreduce:
break;
case 47:
-#line 508 "src/wast-parser.y" /* yacc.c:1646 */
+#line 507 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateBrIf((yyvsp[0].var));
}
@@ -2658,7 +2658,7 @@ yyreduce:
break;
case 48:
-#line 511 "src/wast-parser.y" /* yacc.c:1646 */
+#line 510 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateBrTable((yyvsp[-1].vars), (yyvsp[0].var));
}
@@ -2666,7 +2666,7 @@ yyreduce:
break;
case 49:
-#line 514 "src/wast-parser.y" /* yacc.c:1646 */
+#line 513 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateReturn();
}
@@ -2674,7 +2674,7 @@ yyreduce:
break;
case 50:
-#line 517 "src/wast-parser.y" /* yacc.c:1646 */
+#line 516 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateCall((yyvsp[0].var));
}
@@ -2682,7 +2682,7 @@ yyreduce:
break;
case 51:
-#line 520 "src/wast-parser.y" /* yacc.c:1646 */
+#line 519 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateCallIndirect((yyvsp[0].var));
}
@@ -2690,7 +2690,7 @@ yyreduce:
break;
case 52:
-#line 523 "src/wast-parser.y" /* yacc.c:1646 */
+#line 522 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateGetLocal((yyvsp[0].var));
}
@@ -2698,7 +2698,7 @@ yyreduce:
break;
case 53:
-#line 526 "src/wast-parser.y" /* yacc.c:1646 */
+#line 525 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateSetLocal((yyvsp[0].var));
}
@@ -2706,7 +2706,7 @@ yyreduce:
break;
case 54:
-#line 529 "src/wast-parser.y" /* yacc.c:1646 */
+#line 528 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateTeeLocal((yyvsp[0].var));
}
@@ -2714,7 +2714,7 @@ yyreduce:
break;
case 55:
-#line 532 "src/wast-parser.y" /* yacc.c:1646 */
+#line 531 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateGetGlobal((yyvsp[0].var));
}
@@ -2722,7 +2722,7 @@ yyreduce:
break;
case 56:
-#line 535 "src/wast-parser.y" /* yacc.c:1646 */
+#line 534 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateSetGlobal((yyvsp[0].var));
}
@@ -2730,7 +2730,7 @@ yyreduce:
break;
case 57:
-#line 538 "src/wast-parser.y" /* yacc.c:1646 */
+#line 537 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateLoad((yyvsp[-2].opcode), (yyvsp[0].u32), (yyvsp[-1].u64));
}
@@ -2738,7 +2738,7 @@ yyreduce:
break;
case 58:
-#line 541 "src/wast-parser.y" /* yacc.c:1646 */
+#line 540 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateStore((yyvsp[-2].opcode), (yyvsp[0].u32), (yyvsp[-1].u64));
}
@@ -2746,7 +2746,7 @@ yyreduce:
break;
case 59:
-#line 544 "src/wast-parser.y" /* yacc.c:1646 */
+#line 543 "src/wast-parser.y" /* yacc.c:1646 */
{
Const const_;
WABT_ZERO_MEMORY(const_);
@@ -2764,7 +2764,7 @@ yyreduce:
break;
case 60:
-#line 557 "src/wast-parser.y" /* yacc.c:1646 */
+#line 556 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateUnary((yyvsp[0].opcode));
}
@@ -2772,7 +2772,7 @@ yyreduce:
break;
case 61:
-#line 560 "src/wast-parser.y" /* yacc.c:1646 */
+#line 559 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateBinary((yyvsp[0].opcode));
}
@@ -2780,7 +2780,7 @@ yyreduce:
break;
case 62:
-#line 563 "src/wast-parser.y" /* yacc.c:1646 */
+#line 562 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateCompare((yyvsp[0].opcode));
}
@@ -2788,7 +2788,7 @@ yyreduce:
break;
case 63:
-#line 566 "src/wast-parser.y" /* yacc.c:1646 */
+#line 565 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateConvert((yyvsp[0].opcode));
}
@@ -2796,7 +2796,7 @@ yyreduce:
break;
case 64:
-#line 569 "src/wast-parser.y" /* yacc.c:1646 */
+#line 568 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateCurrentMemory();
}
@@ -2804,7 +2804,7 @@ yyreduce:
break;
case 65:
-#line 572 "src/wast-parser.y" /* yacc.c:1646 */
+#line 571 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateGrowMemory();
}
@@ -2812,7 +2812,7 @@ yyreduce:
break;
case 66:
-#line 577 "src/wast-parser.y" /* yacc.c:1646 */
+#line 576 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateBlock((yyvsp[-2].block));
(yyval.expr)->block->label = (yyvsp[-3].text);
@@ -2822,7 +2822,7 @@ yyreduce:
break;
case 67:
-#line 582 "src/wast-parser.y" /* yacc.c:1646 */
+#line 581 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateLoop((yyvsp[-2].block));
(yyval.expr)->loop->label = (yyvsp[-3].text);
@@ -2832,7 +2832,7 @@ yyreduce:
break;
case 68:
-#line 587 "src/wast-parser.y" /* yacc.c:1646 */
+#line 586 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateIf((yyvsp[-2].block), nullptr);
(yyval.expr)->if_.true_->label = (yyvsp[-3].text);
@@ -2842,7 +2842,7 @@ yyreduce:
break;
case 69:
-#line 592 "src/wast-parser.y" /* yacc.c:1646 */
+#line 591 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = Expr::CreateIf((yyvsp[-5].block), (yyvsp[-2].expr_list).first);
(yyval.expr)->if_.true_->label = (yyvsp[-6].text);
@@ -2853,7 +2853,7 @@ yyreduce:
break;
case 70:
-#line 600 "src/wast-parser.y" /* yacc.c:1646 */
+#line 599 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.block) = new Block();
(yyval.block)->sig = std::move(*(yyvsp[-1].types));
@@ -2864,13 +2864,13 @@ yyreduce:
break;
case 71:
-#line 609 "src/wast-parser.y" /* yacc.c:1646 */
+#line 608 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.expr_list) = (yyvsp[-1].expr_list); }
#line 2870 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 72:
-#line 613 "src/wast-parser.y" /* yacc.c:1646 */
+#line 612 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr_list) = join_exprs2(&(yylsp[-1]), &(yyvsp[0].expr_list), (yyvsp[-1].expr));
}
@@ -2878,7 +2878,7 @@ yyreduce:
break;
case 73:
-#line 616 "src/wast-parser.y" /* yacc.c:1646 */
+#line 615 "src/wast-parser.y" /* yacc.c:1646 */
{
Expr* expr = Expr::CreateBlock((yyvsp[0].block));
expr->block->label = (yyvsp[-1].text);
@@ -2888,7 +2888,7 @@ yyreduce:
break;
case 74:
-#line 621 "src/wast-parser.y" /* yacc.c:1646 */
+#line 620 "src/wast-parser.y" /* yacc.c:1646 */
{
Expr* expr = Expr::CreateLoop((yyvsp[0].block));
expr->loop->label = (yyvsp[-1].text);
@@ -2898,7 +2898,7 @@ yyreduce:
break;
case 75:
-#line 626 "src/wast-parser.y" /* yacc.c:1646 */
+#line 625 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr_list) = (yyvsp[0].expr_list);
Expr* if_ = (yyvsp[0].expr_list).last;
@@ -2911,7 +2911,7 @@ yyreduce:
break;
case 76:
-#line 636 "src/wast-parser.y" /* yacc.c:1646 */
+#line 635 "src/wast-parser.y" /* yacc.c:1646 */
{
Expr* expr = Expr::CreateIf(new Block((yyvsp[-5].expr_list).first), (yyvsp[-1].expr_list).first);
(yyval.expr_list) = join_exprs1(&(yylsp[-7]), expr);
@@ -2920,7 +2920,7 @@ yyreduce:
break;
case 77:
-#line 640 "src/wast-parser.y" /* yacc.c:1646 */
+#line 639 "src/wast-parser.y" /* yacc.c:1646 */
{
Expr* expr = Expr::CreateIf(new Block((yyvsp[-1].expr_list).first), nullptr);
(yyval.expr_list) = join_exprs1(&(yylsp[-3]), expr);
@@ -2929,7 +2929,7 @@ yyreduce:
break;
case 78:
-#line 644 "src/wast-parser.y" /* yacc.c:1646 */
+#line 643 "src/wast-parser.y" /* yacc.c:1646 */
{
Expr* expr = Expr::CreateIf(new Block((yyvsp[-5].expr_list).first), (yyvsp[-1].expr_list).first);
(yyval.expr_list) = join_exprs2(&(yylsp[-8]), &(yyvsp[-8].expr_list), expr);
@@ -2938,7 +2938,7 @@ yyreduce:
break;
case 79:
-#line 648 "src/wast-parser.y" /* yacc.c:1646 */
+#line 647 "src/wast-parser.y" /* yacc.c:1646 */
{
Expr* expr = Expr::CreateIf(new Block((yyvsp[-1].expr_list).first), nullptr);
(yyval.expr_list) = join_exprs2(&(yylsp[-4]), &(yyvsp[-4].expr_list), expr);
@@ -2947,7 +2947,7 @@ yyreduce:
break;
case 80:
-#line 652 "src/wast-parser.y" /* yacc.c:1646 */
+#line 651 "src/wast-parser.y" /* yacc.c:1646 */
{
Expr* expr = Expr::CreateIf(new Block((yyvsp[-1].expr_list).first), (yyvsp[0].expr_list).first);
(yyval.expr_list) = join_exprs2(&(yylsp[-2]), &(yyvsp[-2].expr_list), expr);
@@ -2956,7 +2956,7 @@ yyreduce:
break;
case 81:
-#line 656 "src/wast-parser.y" /* yacc.c:1646 */
+#line 655 "src/wast-parser.y" /* yacc.c:1646 */
{
Expr* expr = Expr::CreateIf(new Block((yyvsp[0].expr_list).first), nullptr);
(yyval.expr_list) = join_exprs2(&(yylsp[-1]), &(yyvsp[-1].expr_list), expr);
@@ -2965,13 +2965,13 @@ yyreduce:
break;
case 82:
-#line 663 "src/wast-parser.y" /* yacc.c:1646 */
+#line 662 "src/wast-parser.y" /* yacc.c:1646 */
{ WABT_ZERO_MEMORY((yyval.expr_list)); }
#line 2971 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 83:
-#line 664 "src/wast-parser.y" /* yacc.c:1646 */
+#line 663 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr_list).first = (yyvsp[-1].expr_list).first;
(yyvsp[-1].expr_list).last->next = (yyvsp[0].expr_list).first;
@@ -2982,13 +2982,13 @@ yyreduce:
break;
case 84:
-#line 672 "src/wast-parser.y" /* yacc.c:1646 */
+#line 671 "src/wast-parser.y" /* yacc.c:1646 */
{ WABT_ZERO_MEMORY((yyval.expr_list)); }
#line 2988 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 85:
-#line 673 "src/wast-parser.y" /* yacc.c:1646 */
+#line 672 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr_list).first = (yyvsp[-1].expr_list).first;
(yyvsp[-1].expr_list).last->next = (yyvsp[0].expr_list).first;
@@ -2999,7 +2999,7 @@ yyreduce:
break;
case 88:
-#line 687 "src/wast-parser.y" /* yacc.c:1646 */
+#line 686 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.func_fields) = new FuncField();
(yyval.func_fields)->type = FuncFieldType::ResultTypes;
@@ -3010,7 +3010,7 @@ yyreduce:
break;
case 89:
-#line 693 "src/wast-parser.y" /* yacc.c:1646 */
+#line 692 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.func_fields) = new FuncField();
(yyval.func_fields)->type = FuncFieldType::ParamTypes;
@@ -3021,7 +3021,7 @@ yyreduce:
break;
case 90:
-#line 699 "src/wast-parser.y" /* yacc.c:1646 */
+#line 698 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.func_fields) = new FuncField();
(yyval.func_fields)->type = FuncFieldType::BoundParam;
@@ -3034,7 +3034,7 @@ yyreduce:
break;
case 91:
-#line 709 "src/wast-parser.y" /* yacc.c:1646 */
+#line 708 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.func_fields) = new FuncField();
(yyval.func_fields)->type = FuncFieldType::Exprs;
@@ -3045,7 +3045,7 @@ yyreduce:
break;
case 92:
-#line 715 "src/wast-parser.y" /* yacc.c:1646 */
+#line 714 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.func_fields) = new FuncField();
(yyval.func_fields)->type = FuncFieldType::LocalTypes;
@@ -3056,7 +3056,7 @@ yyreduce:
break;
case 93:
-#line 721 "src/wast-parser.y" /* yacc.c:1646 */
+#line 720 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.func_fields) = new FuncField();
(yyval.func_fields)->type = FuncFieldType::BoundLocal;
@@ -3069,7 +3069,7 @@ yyreduce:
break;
case 94:
-#line 731 "src/wast-parser.y" /* yacc.c:1646 */
+#line 730 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.func) = new Func();
FuncField* field = (yyvsp[0].func_fields);
@@ -3124,7 +3124,7 @@ yyreduce:
break;
case 95:
-#line 783 "src/wast-parser.y" /* yacc.c:1646 */
+#line 782 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.exported_func) = new ExportedFunc();
(yyval.exported_func)->func.reset((yyvsp[-1].func));
@@ -3138,7 +3138,7 @@ yyreduce:
break;
case 96:
-#line 793 "src/wast-parser.y" /* yacc.c:1646 */
+#line 792 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.exported_func) = new ExportedFunc();
(yyval.exported_func)->func.reset((yyvsp[-1].func));
@@ -3150,7 +3150,7 @@ yyreduce:
break;
case 97:
-#line 800 "src/wast-parser.y" /* yacc.c:1646 */
+#line 799 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.exported_func) = new ExportedFunc();
(yyval.exported_func)->func.reset((yyvsp[-1].func));
@@ -3162,7 +3162,7 @@ yyreduce:
break;
case 98:
-#line 808 "src/wast-parser.y" /* yacc.c:1646 */
+#line 807 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.exported_func) = new ExportedFunc();
(yyval.exported_func)->func.reset((yyvsp[-1].func));
@@ -3172,7 +3172,7 @@ yyreduce:
break;
case 99:
-#line 818 "src/wast-parser.y" /* yacc.c:1646 */
+#line 817 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.expr_list) = (yyvsp[-1].expr_list);
}
@@ -3180,7 +3180,7 @@ yyreduce:
break;
case 101:
-#line 825 "src/wast-parser.y" /* yacc.c:1646 */
+#line 824 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.elem_segment) = new ElemSegment();
(yyval.elem_segment)->table_var = (yyvsp[-3].var);
@@ -3192,7 +3192,7 @@ yyreduce:
break;
case 102:
-#line 832 "src/wast-parser.y" /* yacc.c:1646 */
+#line 831 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.elem_segment) = new ElemSegment();
(yyval.elem_segment)->table_var.loc = (yylsp[-3]);
@@ -3206,7 +3206,7 @@ yyreduce:
break;
case 103:
-#line 844 "src/wast-parser.y" /* yacc.c:1646 */
+#line 843 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.exported_table) = new ExportedTable();
(yyval.exported_table)->table.reset((yyvsp[-1].table));
@@ -3219,7 +3219,7 @@ yyreduce:
break;
case 104:
-#line 853 "src/wast-parser.y" /* yacc.c:1646 */
+#line 852 "src/wast-parser.y" /* yacc.c:1646 */
{
Expr* expr = Expr::CreateConst(Const(Const::I32(), 0));
expr->loc = (yylsp[-8]);
@@ -3242,7 +3242,7 @@ yyreduce:
break;
case 105:
-#line 874 "src/wast-parser.y" /* yacc.c:1646 */
+#line 873 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.data_segment) = new DataSegment();
(yyval.data_segment)->memory_var = (yyvsp[-3].var);
@@ -3254,7 +3254,7 @@ yyreduce:
break;
case 106:
-#line 881 "src/wast-parser.y" /* yacc.c:1646 */
+#line 880 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.data_segment) = new DataSegment();
(yyval.data_segment)->memory_var.loc = (yylsp[-3]);
@@ -3268,7 +3268,7 @@ yyreduce:
break;
case 107:
-#line 893 "src/wast-parser.y" /* yacc.c:1646 */
+#line 892 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.exported_memory) = new ExportedMemory();
(yyval.exported_memory)->memory.reset((yyvsp[-1].memory));
@@ -3281,7 +3281,7 @@ yyreduce:
break;
case 108:
-#line 901 "src/wast-parser.y" /* yacc.c:1646 */
+#line 900 "src/wast-parser.y" /* yacc.c:1646 */
{
Expr* expr = Expr::CreateConst(Const(Const::I32(), 0));
expr->loc = (yylsp[-7]);
@@ -3306,7 +3306,7 @@ yyreduce:
break;
case 109:
-#line 922 "src/wast-parser.y" /* yacc.c:1646 */
+#line 921 "src/wast-parser.y" /* yacc.c:1646 */
{
Expr* expr = Expr::CreateConst(Const(Const::I32(), 0));
expr->loc = (yylsp[-6]);
@@ -3330,7 +3330,7 @@ yyreduce:
break;
case 110:
-#line 944 "src/wast-parser.y" /* yacc.c:1646 */
+#line 943 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.exported_global) = new ExportedGlobal();
(yyval.exported_global)->global.reset((yyvsp[-2].global));
@@ -3343,7 +3343,7 @@ yyreduce:
break;
case 111:
-#line 952 "src/wast-parser.y" /* yacc.c:1646 */
+#line 951 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.exported_global) = new ExportedGlobal();
(yyval.exported_global)->global.reset((yyvsp[-2].global));
@@ -3355,7 +3355,7 @@ yyreduce:
break;
case 112:
-#line 965 "src/wast-parser.y" /* yacc.c:1646 */
+#line 964 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.import) = new Import();
(yyval.import)->kind = ExternalKind::Func;
@@ -3368,7 +3368,7 @@ yyreduce:
break;
case 113:
-#line 973 "src/wast-parser.y" /* yacc.c:1646 */
+#line 972 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.import) = new Import();
(yyval.import)->kind = ExternalKind::Func;
@@ -3381,7 +3381,7 @@ yyreduce:
break;
case 114:
-#line 981 "src/wast-parser.y" /* yacc.c:1646 */
+#line 980 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.import) = new Import();
(yyval.import)->kind = ExternalKind::Table;
@@ -3392,7 +3392,7 @@ yyreduce:
break;
case 115:
-#line 987 "src/wast-parser.y" /* yacc.c:1646 */
+#line 986 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.import) = new Import();
(yyval.import)->kind = ExternalKind::Memory;
@@ -3403,7 +3403,7 @@ yyreduce:
break;
case 116:
-#line 993 "src/wast-parser.y" /* yacc.c:1646 */
+#line 992 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.import) = new Import();
(yyval.import)->kind = ExternalKind::Global;
@@ -3414,7 +3414,7 @@ yyreduce:
break;
case 117:
-#line 1001 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1000 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.import) = (yyvsp[-1].import);
(yyval.import)->module_name = (yyvsp[-3].text);
@@ -3424,7 +3424,7 @@ yyreduce:
break;
case 118:
-#line 1006 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1005 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.import) = (yyvsp[-2].import);
(yyval.import)->kind = ExternalKind::Func;
@@ -3437,7 +3437,7 @@ yyreduce:
break;
case 119:
-#line 1014 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1013 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.import) = (yyvsp[-2].import);
(yyval.import)->kind = ExternalKind::Func;
@@ -3450,7 +3450,7 @@ yyreduce:
break;
case 120:
-#line 1022 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1021 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.import) = (yyvsp[-2].import);
(yyval.import)->kind = ExternalKind::Table;
@@ -3461,7 +3461,7 @@ yyreduce:
break;
case 121:
-#line 1028 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1027 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.import) = (yyvsp[-2].import);
(yyval.import)->kind = ExternalKind::Memory;
@@ -3472,7 +3472,7 @@ yyreduce:
break;
case 122:
-#line 1034 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1033 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.import) = (yyvsp[-2].import);
(yyval.import)->kind = ExternalKind::Global;
@@ -3483,7 +3483,7 @@ yyreduce:
break;
case 123:
-#line 1043 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1042 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.import) = new Import();
(yyval.import)->module_name = (yyvsp[-2].text);
@@ -3493,7 +3493,7 @@ yyreduce:
break;
case 124:
-#line 1051 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1050 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.export_) = new Export();
(yyval.export_)->kind = ExternalKind::Func;
@@ -3503,7 +3503,7 @@ yyreduce:
break;
case 125:
-#line 1056 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1055 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.export_) = new Export();
(yyval.export_)->kind = ExternalKind::Table;
@@ -3513,7 +3513,7 @@ yyreduce:
break;
case 126:
-#line 1061 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1060 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.export_) = new Export();
(yyval.export_)->kind = ExternalKind::Memory;
@@ -3523,7 +3523,7 @@ yyreduce:
break;
case 127:
-#line 1066 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1065 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.export_) = new Export();
(yyval.export_)->kind = ExternalKind::Global;
@@ -3533,7 +3533,7 @@ yyreduce:
break;
case 128:
-#line 1073 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1072 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.export_) = (yyvsp[-1].export_);
(yyval.export_)->name = (yyvsp[-2].text);
@@ -3542,7 +3542,7 @@ yyreduce:
break;
case 129:
-#line 1080 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1079 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.optional_export) = new OptionalExport();
(yyval.optional_export)->has_export = false;
@@ -3551,7 +3551,7 @@ yyreduce:
break;
case 131:
-#line 1087 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1086 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.optional_export) = new OptionalExport();
(yyval.optional_export)->has_export = true;
@@ -3562,7 +3562,7 @@ yyreduce:
break;
case 132:
-#line 1099 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1098 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.func_type) = new FuncType();
(yyval.func_type)->sig = std::move(*(yyvsp[-1].func_sig));
@@ -3572,7 +3572,7 @@ yyreduce:
break;
case 133:
-#line 1104 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1103 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.func_type) = new FuncType();
(yyval.func_type)->name = (yyvsp[-2].text);
@@ -3583,13 +3583,13 @@ yyreduce:
break;
case 134:
-#line 1113 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1112 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.var) = (yyvsp[-1].var); }
#line 3589 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 135:
-#line 1117 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1116 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.module) = new Module();
}
@@ -3597,7 +3597,7 @@ yyreduce:
break;
case 136:
-#line 1120 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1119 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
ModuleField* field;
@@ -3609,7 +3609,7 @@ yyreduce:
break;
case 137:
-#line 1127 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1126 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
ModuleField* field;
@@ -3623,7 +3623,7 @@ yyreduce:
break;
case 138:
-#line 1136 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1135 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
ModuleField* field;
@@ -3645,7 +3645,7 @@ yyreduce:
break;
case 139:
-#line 1153 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1152 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
ModuleField* field;
@@ -3667,7 +3667,7 @@ yyreduce:
break;
case 140:
-#line 1170 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1169 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
ModuleField* field;
@@ -3684,7 +3684,7 @@ yyreduce:
break;
case 141:
-#line 1182 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1181 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
ModuleField* field;
@@ -3695,7 +3695,7 @@ yyreduce:
break;
case 142:
-#line 1188 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1187 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
ModuleField* field;
@@ -3706,7 +3706,7 @@ yyreduce:
break;
case 143:
-#line 1194 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1193 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
ModuleField* field;
@@ -3717,7 +3717,7 @@ yyreduce:
break;
case 144:
-#line 1200 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1199 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
ModuleField* field;
@@ -3755,7 +3755,7 @@ yyreduce:
break;
case 145:
-#line 1233 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1232 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
ModuleField* field;
@@ -3767,7 +3767,7 @@ yyreduce:
break;
case 146:
-#line 1243 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1242 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.raw_module) = new RawModule();
(yyval.raw_module)->type = RawModuleType::Text;
@@ -3792,7 +3792,7 @@ yyreduce:
break;
case 147:
-#line 1263 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1262 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.raw_module) = new RawModule();
(yyval.raw_module)->type = RawModuleType::Binary;
@@ -3805,7 +3805,7 @@ yyreduce:
break;
case 148:
-#line 1274 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1273 "src/wast-parser.y" /* yacc.c:1646 */
{
if ((yyvsp[0].raw_module)->type == RawModuleType::Text) {
(yyval.module) = (yyvsp[0].raw_module)->text;
@@ -3827,7 +3827,7 @@ yyreduce:
break;
case 149:
-#line 1296 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1295 "src/wast-parser.y" /* yacc.c:1646 */
{
WABT_ZERO_MEMORY((yyval.var));
(yyval.var).type = VarType::Index;
@@ -3837,7 +3837,7 @@ yyreduce:
break;
case 150:
-#line 1301 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1300 "src/wast-parser.y" /* yacc.c:1646 */
{
WABT_ZERO_MEMORY((yyval.var));
(yyval.var).type = VarType::Name;
@@ -3847,7 +3847,7 @@ yyreduce:
break;
case 151:
-#line 1309 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1308 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.action) = new Action();
(yyval.action)->loc = (yylsp[-4]);
@@ -3862,7 +3862,7 @@ yyreduce:
break;
case 152:
-#line 1319 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1318 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.action) = new Action();
(yyval.action)->loc = (yylsp[-3]);
@@ -3874,7 +3874,7 @@ yyreduce:
break;
case 153:
-#line 1329 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1328 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new Command();
(yyval.command)->type = CommandType::AssertMalformed;
@@ -3885,7 +3885,7 @@ yyreduce:
break;
case 154:
-#line 1335 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1334 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new Command();
(yyval.command)->type = CommandType::AssertInvalid;
@@ -3896,7 +3896,7 @@ yyreduce:
break;
case 155:
-#line 1341 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1340 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new Command();
(yyval.command)->type = CommandType::AssertUnlinkable;
@@ -3907,7 +3907,7 @@ yyreduce:
break;
case 156:
-#line 1347 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1346 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new Command();
(yyval.command)->type = CommandType::AssertUninstantiable;
@@ -3918,7 +3918,7 @@ yyreduce:
break;
case 157:
-#line 1353 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1352 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new Command();
(yyval.command)->type = CommandType::AssertReturn;
@@ -3929,7 +3929,7 @@ yyreduce:
break;
case 158:
-#line 1359 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1358 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new Command();
(yyval.command)->type = CommandType::AssertReturnCanonicalNan;
@@ -3939,7 +3939,7 @@ yyreduce:
break;
case 159:
-#line 1364 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1363 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new Command();
(yyval.command)->type = CommandType::AssertReturnArithmeticNan;
@@ -3949,7 +3949,7 @@ yyreduce:
break;
case 160:
-#line 1369 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1368 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new Command();
(yyval.command)->type = CommandType::AssertTrap;
@@ -3960,7 +3960,7 @@ yyreduce:
break;
case 161:
-#line 1375 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1374 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new Command();
(yyval.command)->type = CommandType::AssertExhaustion;
@@ -3971,7 +3971,7 @@ yyreduce:
break;
case 162:
-#line 1384 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1383 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new Command();
(yyval.command)->type = CommandType::Action;
@@ -3981,7 +3981,7 @@ yyreduce:
break;
case 164:
-#line 1390 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1389 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new Command();
(yyval.command)->type = CommandType::Module;
@@ -3991,7 +3991,7 @@ yyreduce:
break;
case 165:
-#line 1395 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1394 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new Command();
(yyval.command)->type = CommandType::Register;
@@ -4003,13 +4003,13 @@ yyreduce:
break;
case 166:
-#line 1404 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1403 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.commands) = new CommandPtrVector(); }
#line 4009 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 167:
-#line 1405 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1404 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.commands) = (yyvsp[-1].commands);
(yyval.commands)->emplace_back((yyvsp[0].command));
@@ -4018,7 +4018,7 @@ yyreduce:
break;
case 168:
-#line 1412 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1411 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.const_).loc = (yylsp[-2]);
if (WABT_FAILED(parse_const((yyvsp[-2].type), (yyvsp[-1].literal).type, (yyvsp[-1].literal).text.start,
@@ -4033,13 +4033,13 @@ yyreduce:
break;
case 169:
-#line 1424 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1423 "src/wast-parser.y" /* yacc.c:1646 */
{ (yyval.consts) = new ConstVector(); }
#line 4039 "src/prebuilt/wast-parser-gen.cc" /* yacc.c:1646 */
break;
case 170:
-#line 1425 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1424 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.consts) = (yyvsp[-1].consts);
(yyval.consts)->push_back((yyvsp[0].const_));
@@ -4048,7 +4048,7 @@ yyreduce:
break;
case 171:
-#line 1432 "src/wast-parser.y" /* yacc.c:1646 */
+#line 1431 "src/wast-parser.y" /* yacc.c:1646 */
{
(yyval.script) = new Script();
(yyval.script)->commands = std::move(*(yyvsp[0].commands));
@@ -4349,7 +4349,7 @@ yyreturn:
#endif
return yyresult;
}
-#line 1501 "src/wast-parser.y" /* yacc.c:1906 */
+#line 1500 "src/wast-parser.y" /* yacc.c:1906 */
void append_expr_list(ExprList* expr_list, ExprList* expr) {
diff --git a/src/prebuilt/wast-parser-gen.hh b/src/prebuilt/wast-parser-gen.hh
index 39ebe5a8..68e6da21 100644
--- a/src/prebuilt/wast-parser-gen.hh
+++ b/src/prebuilt/wast-parser-gen.hh
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2. */
+/* A Bison parser, made by GNU Bison 3.0.4. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/src/range.h b/src/range.h
new file mode 100644
index 00000000..aba816f3
--- /dev/null
+++ b/src/range.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2017 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.
+ */
+
+#ifndef WABT_RANGE_H_
+#define WABT_RANGE_H_
+
+namespace wabt {
+
+template <typename T>
+struct Range {
+ Range() : start(0), end(0) {}
+ Range(T start, T end) : start(start), end(end) {}
+ T start;
+ T end;
+
+ T size() const { return end - start; }
+};
+
+typedef Range<Offset> OffsetRange;
+typedef Range<int> ColumnRange;
+
+} // namespace wabt
+
+#endif // WABT_RANGE_H_
diff --git a/src/resolve-names.h b/src/resolve-names.h
index 059c8edc..2ae7a0f9 100644
--- a/src/resolve-names.h
+++ b/src/resolve-names.h
@@ -21,7 +21,7 @@
namespace wabt {
-struct WastLexer;
+class WastLexer;
struct Module;
struct Script;
class SourceErrorHandler;
diff --git a/src/tools/wast-desugar.cc b/src/tools/wast-desugar.cc
index a22bdc05..3d36d6cc 100644
--- a/src/tools/wast-desugar.cc
+++ b/src/tools/wast-desugar.cc
@@ -136,13 +136,13 @@ int ProgramMain(int argc, char** argv) {
init_stdio();
parse_options(argc, argv);
- WastLexer* lexer = new_wast_file_lexer(s_infile);
+ std::unique_ptr<WastLexer> lexer(WastLexer::CreateFileLexer(s_infile));
if (!lexer)
WABT_FATAL("unable to read %s\n", s_infile);
SourceErrorHandlerFile error_handler;
Script* script;
- Result result = parse_wast(lexer, &script, &error_handler);
+ Result result = parse_wast(lexer.get(), &script, &error_handler);
if (WABT_SUCCEEDED(result)) {
Module* module = get_first_module(script);
@@ -161,7 +161,6 @@ int ProgramMain(int argc, char** argv) {
}
}
- destroy_wast_lexer(lexer);
delete script;
return result != Result::Ok;
}
diff --git a/src/tools/wast2wasm.cc b/src/tools/wast2wasm.cc
index 9296dd5e..7226028b 100644
--- a/src/tools/wast2wasm.cc
+++ b/src/tools/wast2wasm.cc
@@ -198,19 +198,19 @@ int ProgramMain(int argc, char** argv) {
parse_options(argc, argv);
- WastLexer* lexer = new_wast_file_lexer(s_infile);
+ std::unique_ptr<WastLexer> lexer = WastLexer::CreateFileLexer(s_infile);
if (!lexer)
WABT_FATAL("unable to read file: %s\n", s_infile);
SourceErrorHandlerFile error_handler;
Script* script;
- Result result = parse_wast(lexer, &script, &error_handler);
+ Result result = parse_wast(lexer.get(), &script, &error_handler);
if (WABT_SUCCEEDED(result)) {
- result = resolve_names_script(lexer, script, &error_handler);
+ result = resolve_names_script(lexer.get(), script, &error_handler);
if (WABT_SUCCEEDED(result) && s_validate)
- result = validate_script(lexer, script, &error_handler);
+ result = validate_script(lexer.get(), script, &error_handler);
if (WABT_SUCCEEDED(result)) {
if (s_spec) {
@@ -235,7 +235,6 @@ int ProgramMain(int argc, char** argv) {
}
}
- destroy_wast_lexer(lexer);
delete script;
return result != Result::Ok;
}
diff --git a/src/wast-lexer.cc b/src/wast-lexer.cc
index 7700be21..8586d925 100644
--- a/src/wast-lexer.cc
+++ b/src/wast-lexer.cc
@@ -21,6 +21,7 @@
#include "config.h"
+#include "lexer-source.h"
#include "wast-parser.h"
#include "wast-parser-lexer-shared.h"
@@ -31,12 +32,12 @@
#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 YY_USER_ACTION \
+ { \
+ loc->filename = filename_; \
+ loc->line = line_; \
+ loc->first_column = COLUMN(token_); \
+ loc->last_column = COLUMN(cursor_); \
}
#define RETURN(name) \
@@ -45,32 +46,32 @@
#define ERROR(...) \
YY_USER_ACTION; \
- wast_parser_error(loc, lexer, parser, __VA_ARGS__)
+ wast_parser_error(loc, this, 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; \
- } \
+#define FILL(n) \
+ do { \
+ if (WABT_FAILED(Fill(loc, parser, n))) { \
+ RETURN(EOF); \
+ continue; \
+ } \
} while (0)
-#define yytext (lexer->token)
-#define yyleng (lexer->cursor - lexer->token)
+#define yytext (token_)
+#define yyleng (cursor_ - 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); \
+#define FILE_OFFSET(p) ((p) - (buffer_) + buffer_file_offset_)
+#define COLUMN(p) (FILE_OFFSET(p) - line_file_offset_ + 1)
+
+#define COMMENT_NESTING (comment_nesting_)
+#define NEWLINE \
+ do { \
+ line_++; \
+ line_file_offset_ = FILE_OFFSET(cursor_); \
} while (0)
#define TEXT \
@@ -92,83 +93,94 @@
namespace wabt {
-static Result fill(Location* loc,
- WastLexer* lexer,
- WastParser* parser,
- size_t need) {
- if (lexer->eof)
+WastLexer::WastLexer(std::unique_ptr<LexerSource> source, const char* filename)
+ : source_(std::move(source)),
+ line_finder_(source_->Clone()),
+ filename_(filename),
+ line_(1),
+ comment_nesting_(0),
+ buffer_file_offset_(0),
+ line_file_offset_(0),
+ eof_(false),
+ buffer_(nullptr),
+ buffer_size_(0),
+ marker_(nullptr),
+ token_(nullptr),
+ cursor_(nullptr),
+ limit_(nullptr) {}
+
+WastLexer::~WastLexer() {
+ delete[] buffer_;
+}
+
+// static
+std::unique_ptr<WastLexer> WastLexer::CreateFileLexer(const char* filename) {
+ std::unique_ptr<LexerSource> source(new LexerSourceFile(filename));
+ return std::unique_ptr<WastLexer>(new WastLexer(std::move(source), filename));
+}
+
+// static
+std::unique_ptr<WastLexer> WastLexer::CreateBufferLexer(const char* filename,
+ const void* data,
+ size_t size) {
+ std::unique_ptr<LexerSource> source(new LexerSourceBuffer(data, size));
+ return std::unique_ptr<WastLexer>(new WastLexer(std::move(source), filename));
+}
+
+Result WastLexer::Fill(Location* loc, WastParser* parser, size_t need) {
+ if (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 */
+ size_t free = token_ - buffer_;
+ assert(static_cast<size_t>(cursor_ - 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;
+ char* old_buffer = buffer_;
+ size_t old_buffer_size = 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 */
+ // 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;
+ if (limit_ > token_)
+ memmove(new_buffer, token_, limit_ - token_);
+ buffer_ = new_buffer;
+ buffer_size_ = new_buffer_size;
+ token_ = new_buffer + (token_ - old_buffer) - free;
+ marker_ = new_buffer + (marker_ - old_buffer) - free;
+ cursor_ = new_buffer + (cursor_ - old_buffer) - free;
+ limit_ = new_buffer + (limit_ - old_buffer) - free;
+ 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;
+ // Shift everything down to make more room in the buffer.
+ if (limit_ > token_)
+ memmove(buffer_, token_, limit_ - token_);
+ token_ -= free;
+ marker_ -= free;
+ cursor_ -= free;
+ limit_ -= free;
+ buffer_file_offset_ += free;
}
- /* 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;
+ // Read the new data into the buffer.
+ limit_ += source_->Fill(limit_, free);
+
+ // 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 (limit_ < buffer_ + buffer_size_ - YYMAXFILL) {
+ eof_ = true;
+ memset(limit_, 0, YYMAXFILL);
+ limit_ += YYMAXFILL;
}
return Result::Ok;
}
-int wast_lexer_lex(WABT_WAST_PARSER_STYPE* lval,
- WABT_WAST_PARSER_LTYPE* loc,
- WastLexer* lexer,
- WastParser* parser) {
+int WastLexer::GetToken(Token* lval, Location* loc, WastParser* parser) {
enum {
YYCOND_INIT,
YYCOND_BAD_TEXT,
@@ -178,14 +190,14 @@ int wast_lexer_lex(WABT_WAST_PARSER_STYPE* lval,
} cond = YYCOND_INIT;
for (;;) {
- lexer->token = lexer->cursor;
+ token_ = cursor_;
/*!re2c
re2c:condprefix = YYCOND_;
re2c:condenumprefix = YYCOND_;
re2c:define:YYCTYPE = "unsigned char";
- re2c:define:YYCURSOR = lexer->cursor;
- re2c:define:YYMARKER = lexer->marker;
- re2c:define:YYLIMIT = lexer->limit;
+ re2c:define:YYCURSOR = cursor_;
+ re2c:define:YYMARKER = marker_;
+ re2c:define:YYLIMIT = limit_;
re2c:define:YYFILL = "FILL";
re2c:define:YYGETCONDITION = "cond";
re2c:define:YYGETCONDITION:naked = 1;
@@ -470,294 +482,4 @@ int wast_lexer_lex(WABT_WAST_PARSER_STYPE* lval,
}
}
-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
diff --git a/src/wast-lexer.h b/src/wast-lexer.h
index 00cfacfb..40ecd43f 100644
--- a/src/wast-lexer.h
+++ b/src/wast-lexer.h
@@ -17,53 +17,55 @@
#ifndef WABT_WAST_LEXER_H_
#define WABT_WAST_LEXER_H_
-#include <stddef.h>
-#include <stdio.h>
+#include <cstddef>
+#include <cstdio>
+#include <memory>
#include "common.h"
+#include "lexer-source-line-finder.h"
namespace wabt {
-enum class WastLexerSourceType {
- File,
- Buffer,
-};
+union Token;
+struct WastParser;
+class LexerSource;
-struct WastLexerSource {
- WastLexerSourceType type;
- union {
- FILE* file;
- struct {
- const void* data;
- size_t size;
- size_t read_offset;
- } buffer;
- };
-};
+class WastLexer {
+ public:
+ WastLexer(std::unique_ptr<LexerSource> source, const char* filename);
+ ~WastLexer();
-struct WastLexer {
- WastLexerSource source;
- const char* filename;
- int line;
- int comment_nesting;
- size_t buffer_file_offset; /* file offset of the start of the buffer */
- size_t line_file_offset; /* file offset of the start of the current line */
+ // Convenience functions.
+ static std::unique_ptr<WastLexer> CreateFileLexer(const char* filename);
+ static std::unique_ptr<WastLexer> CreateBufferLexer(const char* filename,
+ const void* data,
+ size_t size);
- /* lexing data needed by re2c */
- bool eof;
- char* buffer;
- size_t buffer_size;
- char* marker;
- char* token;
- char* cursor;
- char* limit;
-};
+ int GetToken(Token* lval, Location* loc, WastParser* parser);
+ Result Fill(Location* loc, WastParser* parser, size_t need);
+
+ LexerSourceLineFinder& line_finder() { return line_finder_; }
-WastLexer* new_wast_file_lexer(const char* filename);
-WastLexer* new_wast_buffer_lexer(const char* filename,
- const void* data,
- size_t size);
-void destroy_wast_lexer(WastLexer*);
+ private:
+ std::unique_ptr<LexerSource> source_;
+ LexerSourceLineFinder line_finder_;
+ const char* filename_;
+ int line_;
+ int comment_nesting_;
+ size_t buffer_file_offset_; // File offset of the start of the buffer.
+ size_t line_file_offset_; // File offset of the start of the current line.
+
+ // Lexing data needed by re2c.
+ bool eof_;
+ char* buffer_;
+ size_t buffer_size_;
+ char* marker_;
+ char* token_;
+ char* cursor_;
+ char* limit_;
+
+ WABT_DISALLOW_COPY_AND_ASSIGN(WastLexer);
+};
} // namespace wabt
diff --git a/src/wast-parser-lexer-shared.cc b/src/wast-parser-lexer-shared.cc
index e073a369..fe785fe8 100644
--- a/src/wast-parser-lexer-shared.cc
+++ b/src/wast-parser-lexer-shared.cc
@@ -50,25 +50,20 @@ void wast_format_error(SourceErrorHandler* error_handler,
len = wabt_vsnprintf(buffer, len + 1, format, args_copy);
}
- char* source_line = nullptr;
- size_t source_line_length = 0;
- int source_line_column_offset = 0;
- size_t source_line_max_length = error_handler->source_line_max_length();
+ LexerSourceLineFinder::SourceLine source_line;
if (loc && lexer) {
- source_line = static_cast<char*>(alloca(source_line_max_length + 1));
- Result result = wast_lexer_get_source_line(
- lexer, loc, source_line_max_length, source_line, &source_line_length,
- &source_line_column_offset);
+ size_t source_line_max_length = error_handler->source_line_max_length();
+ Result result = lexer->line_finder().GetSourceLine(
+ *loc, source_line_max_length, &source_line);
if (WABT_FAILED(result)) {
- /* if this fails, it means that we've probably screwed up the lexer. blow
- * up. */
+ // If this fails, it means that we've probably screwed up the lexer. Blow
+ // up.
WABT_FATAL("error getting the source line.\n");
}
}
- error_handler->OnError(loc, std::string(buffer),
- std::string(source_line, source_line_length),
- source_line_column_offset);
+ error_handler->OnError(loc, std::string(buffer), source_line.line,
+ source_line.column_offset);
va_end(args_copy);
}
diff --git a/src/wast-parser-lexer-shared.h b/src/wast-parser-lexer-shared.h
index 807fcbb5..e8e0acbb 100644
--- a/src/wast-parser-lexer-shared.h
+++ b/src/wast-parser-lexer-shared.h
@@ -172,12 +172,6 @@ int wast_lexer_lex(union Token*,
struct Location*,
WastLexer*,
struct WastParser*);
-Result wast_lexer_get_source_line(WastLexer*,
- const struct Location*,
- size_t line_max_length,
- char* line,
- size_t* out_line_length,
- int* out_column_offset);
void WABT_PRINTF_FORMAT(4, 5) wast_parser_error(struct Location*,
WastLexer*,
struct WastParser*,
diff --git a/src/wast-parser.y b/src/wast-parser.y
index 782c0bf8..2b8a4b0a 100644
--- a/src/wast-parser.y
+++ b/src/wast-parser.y
@@ -170,7 +170,7 @@ class BinaryErrorHandlerModule : public BinaryErrorHandler {
WastParser* parser_;
};
-#define wabt_wast_parser_lex wast_lexer_lex
+#define wabt_wast_parser_lex(...) lexer->GetToken(__VA_ARGS__, parser)
#define wabt_wast_parser_error wast_parser_error
%}
@@ -180,7 +180,6 @@ class BinaryErrorHandlerModule : public BinaryErrorHandler {
%define api.value.type {::wabt::Token}
%define api.token.prefix {WABT_TOKEN_TYPE_}
%define parse.error verbose
-%lex-param {::wabt::WastLexer* lexer} {::wabt::WastParser* parser}
%parse-param {::wabt::WastLexer* lexer} {::wabt::WastParser* parser}
%locations