## Introduction This document specifies the WebAssembly AST node types. Spec directly reflects [AstSemantics](https://github.com/WebAssembly/design/blob/master/AstSemantics.md) document. ## Types [types](https://github.com/WebAssembly/design/blob/master/AstSemantics.md#types) ## Objects [module](https://github.com/WebAssembly/design/blob/master/Modules.md) ```js { kind: 'assert_invalid', module: , failure: } ``` ```js { kind: 'assert_return', invoke: , expr: } ``` ```js { kind: 'assert_return_nan', invoke: } ``` ```js { kind: 'assert_trap', invoke: , failure: } ``` ```js { kind: 'binop', type: , operator: String, left: , right: } ``` ```js { kind: 'block', id: | | null, body: [ ] } ``` ```js { kind: 'br', id: | | null, expr: | null } ``` ```js { kind: 'br_if', id: | | null, test: , expr: | null } ``` ```js { kind: 'br_table', expr: [ | | null ], body: [ ] } ``` ```js { kind: 'call', id: | | null, expr: } ``` ```js { kind: 'call_import', id: | | null, expr: } ``` ```js { kind: 'call_indirect', id: | | null, expr: } ``` ```js { kind: 'const', type: , init: } ``` ```js { kind: 'cvtop', type: , type1: , operator: , expr: } ``` ```js { kind: 'else', id: | | null, body: [ ] } ``` ```js { kind: 'export', name: , id: | | null } ``` ```js { kind: 'func', expo: | null, id: | | null, local: [ | | null], param: , result: , body: [ ] } ``` ```js { kind: 'get_local', id: | | null } ``` ```js { kind: 'grow_memory', expr: } ``` ```js { kind: 'identifier', name: String } ``` ```js { kind: 'if', test: , then: , else: | null } ``` ```js { kind: 'import', id: | | null, modName: , funcName: , params: [ ] } ``` ```js { kind: 'invoke', name: | , body: [ ] } ``` ```js { kind: 'item', type: } ``` ```js { kind: 'literal', value: Integer | String, raw: String } ``` [load](https://github.com/WebAssembly/design/blob/master/AstSemantics.md#linear-memory-accesses) ```js { kind: 'load', type: , size: 8 | 16 | 32, sign: 's' | 'u' | null, offset: Integer, align: Integer, expr: } ``` ```js { kind: 'local', items: [ ] } ``` ```js { kind: 'loop', id: | , extra: , body: [ ] } ``` ```js { kind: 'memory', 'segment' } ``` ```js { kind: 'memory_size' } ``` ```js { kind: 'module', body: [ ] } ``` ```js { kind: 'nop' } ``` ```js { kind: 'param', items: [ ] } ``` ```js { kind: 'relop', type: , operator: , left: , right: } ``` ```js { kind: 'result', type: } ``` ```js { kind: 'return', expr: } ``` ```js { kind: 'script', body: [ ] } ``` ```js { kind: 'segment', } ``` ```js { kind: 'select', test: , then: , else: } ``` ```js { kind: 'set_local', id: | | null, init: } ``` ```js { kind: 'start', id: | | null } ``` [store](https://github.com/WebAssembly/design/blob/master/AstSemantics.md#linear-memory-accesses) ```js { kind: 'store', type: , size: 8 | 16 | 32, offset: Integer, align: Integer, addr: String, data: String } ``` ```js { kind: 'table', items: [ ] } ``` ```js { kind: 'then', id: | | null, body: [ ] } ``` ```js { kind: 'type', id: | | null } ``` ```js { kind: 'unop', type: , operator: String expr: } ``` ```js { kind: 'unreachable' } ```