168 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			168 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # @webassemblyjs/ast
 | |
| 
 | |
| > AST utils for webassemblyjs
 | |
| 
 | |
| ## Installation
 | |
| 
 | |
| ```sh
 | |
| yarn add @webassemblyjs/ast
 | |
| ```
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| ### Traverse
 | |
| 
 | |
| ```js
 | |
| import { traverse } from "@webassemblyjs/ast";
 | |
| 
 | |
| traverse(ast, {
 | |
|   Module(path) {
 | |
|     console.log(path.node);
 | |
|   }
 | |
| });
 | |
| ```
 | |
| 
 | |
| ### Instruction signatures
 | |
| 
 | |
| ```js
 | |
| import { signatures } from "@webassemblyjs/ast";
 | |
| 
 | |
| console.log(signatures);
 | |
| ```
 | |
| 
 | |
| ### Path methods
 | |
| 
 | |
| - `findParent: NodeLocator`
 | |
| - `replaceWith: Node => void`
 | |
| - `remove: () => void`
 | |
| - `insertBefore: Node => void`
 | |
| - `insertAfter: Node => void`
 | |
| - `stop: () => void`
 | |
| 
 | |
| ### AST utils
 | |
| 
 | |
| - function `module(id, fields, metadata)`
 | |
| - function `moduleMetadata(sections, functionNames, localNames)`
 | |
| - function `moduleNameMetadata(value)`
 | |
| - function `functionNameMetadata(value, index)`
 | |
| - function `localNameMetadata(value, localIndex, functionIndex)`
 | |
| - function `binaryModule(id, blob)`
 | |
| - function `quoteModule(id, string)`
 | |
| - function `sectionMetadata(section, startOffset, size, vectorOfSize)`
 | |
| - function `loopInstruction(label, resulttype, instr)`
 | |
| - function `instruction(id, args, namedArgs)`
 | |
| - function `objectInstruction(id, object, args, namedArgs)`
 | |
| - function `ifInstruction(testLabel, test, result, consequent, alternate)`
 | |
| - function `stringLiteral(value)`
 | |
| - function `numberLiteralFromRaw(value, raw)`
 | |
| - function `longNumberLiteral(value, raw)`
 | |
| - function `floatLiteral(value, nan, inf, raw)`
 | |
| - function `elem(table, offset, funcs)`
 | |
| - function `indexInFuncSection(index)`
 | |
| - function `valtypeLiteral(name)`
 | |
| - function `typeInstruction(id, functype)`
 | |
| - function `start(index)`
 | |
| - function `globalType(valtype, mutability)`
 | |
| - function `leadingComment(value)`
 | |
| - function `blockComment(value)`
 | |
| - function `data(memoryIndex, offset, init)`
 | |
| - function `global(globalType, init, name)`
 | |
| - function `table(elementType, limits, name, elements)`
 | |
| - function `memory(limits, id)`
 | |
| - function `funcImportDescr(id, signature)`
 | |
| - function `moduleImport(module, name, descr)`
 | |
| - function `moduleExportDescr(exportType, id)`
 | |
| - function `moduleExport(name, descr)`
 | |
| - function `limit(min, max)`
 | |
| - function `signature(params, results)`
 | |
| - function `program(body)`
 | |
| - function `identifier(value, raw)`
 | |
| - function `blockInstruction(label, instr, result)`
 | |
| - function `callInstruction(index, instrArgs)`
 | |
| - function `callIndirectInstruction(signature, intrs)`
 | |
| - function `byteArray(values)`
 | |
| - function `func(name, signature, body, isExternal, metadata)`
 | |
| - Constant`isModule`
 | |
| - Constant`isModuleMetadata`
 | |
| - Constant`isModuleNameMetadata`
 | |
| - Constant`isFunctionNameMetadata`
 | |
| - Constant`isLocalNameMetadata`
 | |
| - Constant`isBinaryModule`
 | |
| - Constant`isQuoteModule`
 | |
| - Constant`isSectionMetadata`
 | |
| - Constant`isLoopInstruction`
 | |
| - Constant`isInstruction`
 | |
| - Constant`isObjectInstruction`
 | |
| - Constant`isIfInstruction`
 | |
| - Constant`isStringLiteral`
 | |
| - Constant`isNumberLiteral`
 | |
| - Constant`isLongNumberLiteral`
 | |
| - Constant`isFloatLiteral`
 | |
| - Constant`isElem`
 | |
| - Constant`isIndexInFuncSection`
 | |
| - Constant`isValtypeLiteral`
 | |
| - Constant`isTypeInstruction`
 | |
| - Constant`isStart`
 | |
| - Constant`isGlobalType`
 | |
| - Constant`isLeadingComment`
 | |
| - Constant`isBlockComment`
 | |
| - Constant`isData`
 | |
| - Constant`isGlobal`
 | |
| - Constant`isTable`
 | |
| - Constant`isMemory`
 | |
| - Constant`isFuncImportDescr`
 | |
| - Constant`isModuleImport`
 | |
| - Constant`isModuleExportDescr`
 | |
| - Constant`isModuleExport`
 | |
| - Constant`isLimit`
 | |
| - Constant`isSignature`
 | |
| - Constant`isProgram`
 | |
| - Constant`isIdentifier`
 | |
| - Constant`isBlockInstruction`
 | |
| - Constant`isCallInstruction`
 | |
| - Constant`isCallIndirectInstruction`
 | |
| - Constant`isByteArray`
 | |
| - Constant`isFunc`
 | |
| - Constant`assertModule`
 | |
| - Constant`assertModuleMetadata`
 | |
| - Constant`assertModuleNameMetadata`
 | |
| - Constant`assertFunctionNameMetadata`
 | |
| - Constant`assertLocalNameMetadata`
 | |
| - Constant`assertBinaryModule`
 | |
| - Constant`assertQuoteModule`
 | |
| - Constant`assertSectionMetadata`
 | |
| - Constant`assertLoopInstruction`
 | |
| - Constant`assertInstruction`
 | |
| - Constant`assertObjectInstruction`
 | |
| - Constant`assertIfInstruction`
 | |
| - Constant`assertStringLiteral`
 | |
| - Constant`assertNumberLiteral`
 | |
| - Constant`assertLongNumberLiteral`
 | |
| - Constant`assertFloatLiteral`
 | |
| - Constant`assertElem`
 | |
| - Constant`assertIndexInFuncSection`
 | |
| - Constant`assertValtypeLiteral`
 | |
| - Constant`assertTypeInstruction`
 | |
| - Constant`assertStart`
 | |
| - Constant`assertGlobalType`
 | |
| - Constant`assertLeadingComment`
 | |
| - Constant`assertBlockComment`
 | |
| - Constant`assertData`
 | |
| - Constant`assertGlobal`
 | |
| - Constant`assertTable`
 | |
| - Constant`assertMemory`
 | |
| - Constant`assertFuncImportDescr`
 | |
| - Constant`assertModuleImport`
 | |
| - Constant`assertModuleExportDescr`
 | |
| - Constant`assertModuleExport`
 | |
| - Constant`assertLimit`
 | |
| - Constant`assertSignature`
 | |
| - Constant`assertProgram`
 | |
| - Constant`assertIdentifier`
 | |
| - Constant`assertBlockInstruction`
 | |
| - Constant`assertCallInstruction`
 | |
| - Constant`assertCallIndirectInstruction`
 | |
| - Constant`assertByteArray`
 | |
| - Constant`assertFunc`
 | |
| 
 |