[6a3a178] | 1 | # @webassemblyjs/ast
|
---|
| 2 |
|
---|
| 3 | > AST utils for webassemblyjs
|
---|
| 4 |
|
---|
| 5 | ## Installation
|
---|
| 6 |
|
---|
| 7 | ```sh
|
---|
| 8 | yarn add @webassemblyjs/ast
|
---|
| 9 | ```
|
---|
| 10 |
|
---|
| 11 | ## Usage
|
---|
| 12 |
|
---|
| 13 | ### Traverse
|
---|
| 14 |
|
---|
| 15 | ```js
|
---|
| 16 | import { traverse } from "@webassemblyjs/ast";
|
---|
| 17 |
|
---|
| 18 | traverse(ast, {
|
---|
| 19 | Module(path) {
|
---|
| 20 | console.log(path.node);
|
---|
| 21 | }
|
---|
| 22 | });
|
---|
| 23 | ```
|
---|
| 24 |
|
---|
| 25 | ### Instruction signatures
|
---|
| 26 |
|
---|
| 27 | ```js
|
---|
| 28 | import { signatures } from "@webassemblyjs/ast";
|
---|
| 29 |
|
---|
| 30 | console.log(signatures);
|
---|
| 31 | ```
|
---|
| 32 |
|
---|
| 33 | ### Path methods
|
---|
| 34 |
|
---|
| 35 | - `findParent: NodeLocator`
|
---|
| 36 | - `replaceWith: Node => void`
|
---|
| 37 | - `remove: () => void`
|
---|
| 38 | - `insertBefore: Node => void`
|
---|
| 39 | - `insertAfter: Node => void`
|
---|
| 40 | - `stop: () => void`
|
---|
| 41 |
|
---|
| 42 | ### AST utils
|
---|
| 43 |
|
---|
| 44 | - function `module(id, fields, metadata)`
|
---|
| 45 | - function `moduleMetadata(sections, functionNames, localNames)`
|
---|
| 46 | - function `moduleNameMetadata(value)`
|
---|
| 47 | - function `functionNameMetadata(value, index)`
|
---|
| 48 | - function `localNameMetadata(value, localIndex, functionIndex)`
|
---|
| 49 | - function `binaryModule(id, blob)`
|
---|
| 50 | - function `quoteModule(id, string)`
|
---|
| 51 | - function `sectionMetadata(section, startOffset, size, vectorOfSize)`
|
---|
| 52 | - function `loopInstruction(label, resulttype, instr)`
|
---|
| 53 | - function `instruction(id, args, namedArgs)`
|
---|
| 54 | - function `objectInstruction(id, object, args, namedArgs)`
|
---|
| 55 | - function `ifInstruction(testLabel, test, result, consequent, alternate)`
|
---|
| 56 | - function `stringLiteral(value)`
|
---|
| 57 | - function `numberLiteralFromRaw(value, raw)`
|
---|
| 58 | - function `longNumberLiteral(value, raw)`
|
---|
| 59 | - function `floatLiteral(value, nan, inf, raw)`
|
---|
| 60 | - function `elem(table, offset, funcs)`
|
---|
| 61 | - function `indexInFuncSection(index)`
|
---|
| 62 | - function `valtypeLiteral(name)`
|
---|
| 63 | - function `typeInstruction(id, functype)`
|
---|
| 64 | - function `start(index)`
|
---|
| 65 | - function `globalType(valtype, mutability)`
|
---|
| 66 | - function `leadingComment(value)`
|
---|
| 67 | - function `blockComment(value)`
|
---|
| 68 | - function `data(memoryIndex, offset, init)`
|
---|
| 69 | - function `global(globalType, init, name)`
|
---|
| 70 | - function `table(elementType, limits, name, elements)`
|
---|
| 71 | - function `memory(limits, id)`
|
---|
| 72 | - function `funcImportDescr(id, signature)`
|
---|
| 73 | - function `moduleImport(module, name, descr)`
|
---|
| 74 | - function `moduleExportDescr(exportType, id)`
|
---|
| 75 | - function `moduleExport(name, descr)`
|
---|
| 76 | - function `limit(min, max)`
|
---|
| 77 | - function `signature(params, results)`
|
---|
| 78 | - function `program(body)`
|
---|
| 79 | - function `identifier(value, raw)`
|
---|
| 80 | - function `blockInstruction(label, instr, result)`
|
---|
| 81 | - function `callInstruction(index, instrArgs)`
|
---|
| 82 | - function `callIndirectInstruction(signature, intrs)`
|
---|
| 83 | - function `byteArray(values)`
|
---|
| 84 | - function `func(name, signature, body, isExternal, metadata)`
|
---|
| 85 | - Constant`isModule`
|
---|
| 86 | - Constant`isModuleMetadata`
|
---|
| 87 | - Constant`isModuleNameMetadata`
|
---|
| 88 | - Constant`isFunctionNameMetadata`
|
---|
| 89 | - Constant`isLocalNameMetadata`
|
---|
| 90 | - Constant`isBinaryModule`
|
---|
| 91 | - Constant`isQuoteModule`
|
---|
| 92 | - Constant`isSectionMetadata`
|
---|
| 93 | - Constant`isLoopInstruction`
|
---|
| 94 | - Constant`isInstruction`
|
---|
| 95 | - Constant`isObjectInstruction`
|
---|
| 96 | - Constant`isIfInstruction`
|
---|
| 97 | - Constant`isStringLiteral`
|
---|
| 98 | - Constant`isNumberLiteral`
|
---|
| 99 | - Constant`isLongNumberLiteral`
|
---|
| 100 | - Constant`isFloatLiteral`
|
---|
| 101 | - Constant`isElem`
|
---|
| 102 | - Constant`isIndexInFuncSection`
|
---|
| 103 | - Constant`isValtypeLiteral`
|
---|
| 104 | - Constant`isTypeInstruction`
|
---|
| 105 | - Constant`isStart`
|
---|
| 106 | - Constant`isGlobalType`
|
---|
| 107 | - Constant`isLeadingComment`
|
---|
| 108 | - Constant`isBlockComment`
|
---|
| 109 | - Constant`isData`
|
---|
| 110 | - Constant`isGlobal`
|
---|
| 111 | - Constant`isTable`
|
---|
| 112 | - Constant`isMemory`
|
---|
| 113 | - Constant`isFuncImportDescr`
|
---|
| 114 | - Constant`isModuleImport`
|
---|
| 115 | - Constant`isModuleExportDescr`
|
---|
| 116 | - Constant`isModuleExport`
|
---|
| 117 | - Constant`isLimit`
|
---|
| 118 | - Constant`isSignature`
|
---|
| 119 | - Constant`isProgram`
|
---|
| 120 | - Constant`isIdentifier`
|
---|
| 121 | - Constant`isBlockInstruction`
|
---|
| 122 | - Constant`isCallInstruction`
|
---|
| 123 | - Constant`isCallIndirectInstruction`
|
---|
| 124 | - Constant`isByteArray`
|
---|
| 125 | - Constant`isFunc`
|
---|
| 126 | - Constant`assertModule`
|
---|
| 127 | - Constant`assertModuleMetadata`
|
---|
| 128 | - Constant`assertModuleNameMetadata`
|
---|
| 129 | - Constant`assertFunctionNameMetadata`
|
---|
| 130 | - Constant`assertLocalNameMetadata`
|
---|
| 131 | - Constant`assertBinaryModule`
|
---|
| 132 | - Constant`assertQuoteModule`
|
---|
| 133 | - Constant`assertSectionMetadata`
|
---|
| 134 | - Constant`assertLoopInstruction`
|
---|
| 135 | - Constant`assertInstruction`
|
---|
| 136 | - Constant`assertObjectInstruction`
|
---|
| 137 | - Constant`assertIfInstruction`
|
---|
| 138 | - Constant`assertStringLiteral`
|
---|
| 139 | - Constant`assertNumberLiteral`
|
---|
| 140 | - Constant`assertLongNumberLiteral`
|
---|
| 141 | - Constant`assertFloatLiteral`
|
---|
| 142 | - Constant`assertElem`
|
---|
| 143 | - Constant`assertIndexInFuncSection`
|
---|
| 144 | - Constant`assertValtypeLiteral`
|
---|
| 145 | - Constant`assertTypeInstruction`
|
---|
| 146 | - Constant`assertStart`
|
---|
| 147 | - Constant`assertGlobalType`
|
---|
| 148 | - Constant`assertLeadingComment`
|
---|
| 149 | - Constant`assertBlockComment`
|
---|
| 150 | - Constant`assertData`
|
---|
| 151 | - Constant`assertGlobal`
|
---|
| 152 | - Constant`assertTable`
|
---|
| 153 | - Constant`assertMemory`
|
---|
| 154 | - Constant`assertFuncImportDescr`
|
---|
| 155 | - Constant`assertModuleImport`
|
---|
| 156 | - Constant`assertModuleExportDescr`
|
---|
| 157 | - Constant`assertModuleExport`
|
---|
| 158 | - Constant`assertLimit`
|
---|
| 159 | - Constant`assertSignature`
|
---|
| 160 | - Constant`assertProgram`
|
---|
| 161 | - Constant`assertIdentifier`
|
---|
| 162 | - Constant`assertBlockInstruction`
|
---|
| 163 | - Constant`assertCallInstruction`
|
---|
| 164 | - Constant`assertCallIndirectInstruction`
|
---|
| 165 | - Constant`assertByteArray`
|
---|
| 166 | - Constant`assertFunc`
|
---|
| 167 |
|
---|