UNPKG

solidity-antlr4

Version:

Solidity Lang Lexer and Parser by official ANTLR4 grammar

30 lines (29 loc) 1.02 kB
import { PrinterDeclaration } from "./declaration.js"; import { PrinterExpression } from "./expression.js"; import { PrinterMeta } from "./meta.js"; import { PrinterStatement } from "./statement.js"; import { PrinterType } from "./type.js"; import { PrinterYul } from "./yul.js"; export * from "./comment.js"; export const print = (path, options, _print) => { const node = path.node; if (node === null) return ""; if (Array.isArray(node)) return path.map(_print); const printerName = `print${node.type}`; const mixin = Object.assign( {}, new PrinterDeclaration(options, _print), new PrinterExpression(options, _print), new PrinterMeta(options, _print), new PrinterStatement(options, _print), new PrinterType(options, _print), new PrinterYul(options, _print) ); const printer = mixin[printerName]; if (!printer) throw new Error(`missing printer for node type "${node.type}"`); const document = printer({ path, options, print: _print, node }); return document; };