webassemblyjs icon indicating copy to clipboard operation
webassemblyjs copied to clipboard

`local.get` or `get_local`

Open coderaiser opened this issue 3 years ago • 2 comments

MDN says and wabt thinks that local.get:

inline:4:7: error: unexpected token get_local, expected ).
      get_local $n1
      ^^^^^^^^^

With such code:

import { traverse } from "@webassemblyjs/ast";
import { parse } from "@webassemblyjs/wast-parser";

const code = `
  (module
    (func (export "add") (param $n1 i32) (param $n2 i32) (result i32)
      local.get $n1
      local.get $n2
      i32.add)
  )
`;

const ast = parse(code);

I see crash:

/Users/coderaiser/webasm/node_modules/@webassemblyjs/wast-parser/lib/grammar.js:946
            return new Error("\n" + (0, _helperCodeFrame.codeFrameFromSource)(source, token.loc) + "\n" + "Unexpected token in instruction argument" + ", given " + tokenToString(token));
                   ^

Error:
  (module
    (func (export "add") (param $n1 i32) (param $n2 i32) (result i32)
      local.get $n1
      local.get $n2
     ^^^^^
      i32.add)
  )


Unexpected token in instruction argument, given name
    at /Users/coderaiser/webasm/node_modules/@webassemblyjs/wast-parser/lib/grammar.js:946:20
    at parseFuncInstrArguments (/Users/coderaiser/webasm/node_modules/@webassemblyjs/wast-parser/lib/grammar.js:947:12)
    at parseFuncInstr (/Users/coderaiser/webasm/node_modules/@webassemblyjs/wast-parser/lib/grammar.js:1068:37)
    at parseFunc (/Users/coderaiser/webasm/node_modules/@webassemblyjs/wast-parser/lib/grammar.js:1182:23)
    at walk (/Users/coderaiser/webasm/node_modules/@webassemblyjs/wast-parser/lib/grammar.js:1623:22)
    at parseModule (/Users/coderaiser/webasm/node_modules/@webassemblyjs/wast-parser/lib/grammar.js:858:27)
    at walk (/Users/coderaiser/webasm/node_modules/@webassemblyjs/wast-parser/lib/grammar.js:1635:22)
    at Object.parse (/Users/coderaiser/webasm/node_modules/@webassemblyjs/wast-parser/lib/grammar.js:1776:15)
    at parse (/Users/coderaiser/webasm/node_modules/@webassemblyjs/wast-parser/lib/index.js:33:20)
    at file:///Users/coderaiser/webasm/index.mjs:14:13

coderaiser avatar Jun 06 '22 12:06 coderaiser

get_local is the old WAST syntax. I think the AST validator needs to be updated because right now it only accepts get_local for local.get.

d3lm avatar Jun 14 '22 12:06 d3lm

Make sense. Please feel free to submit a change

xtuc avatar Jul 02 '22 11:07 xtuc