solidity-antlr4
Version:
Solidity Lang Lexer and Parser by official ANTLR4 grammar
30 lines (29 loc) • 1.02 kB
JavaScript
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;
};