@runtimeverificationinc/tsk
Version:
TypeScript/JavaScript library for K Framework functionality
62 lines (61 loc) • 2.27 kB
TypeScript
import { KInner } from "./inner";
import type { KAst } from "./kast";
import { KDefinition, KFlatModule, KProduction } from "./outer";
type SymbolTable = Record<string, (...args: string[]) => string>;
export declare class PrettyPrinter {
readonly definition: KDefinition;
private readonly extraUnparsingModules;
private readonly patchSymbolTable?;
private readonly unalias;
private readonly sortCollections;
private cachedSymbolTable?;
constructor(options: {
definition: KDefinition;
extraUnparsingModules?: KFlatModule[];
patchSymbolTable?: (symbolTable: SymbolTable) => void;
unalias?: boolean;
sortCollections?: boolean;
});
get symbolTable(): SymbolTable;
print(kast: KAst): string;
private printKOuter;
private printKInner;
/**
* Iterative version of printKInner that uses explicit stacks to avoid recursion
*/
printKInnerIteratively(kast: KInner): string;
private printKSort;
private printKLabel;
private printKVariable;
private printKToken;
private printKApply;
private printKAs;
private printKRewrite;
private printKSequence;
private printKTerminal;
private printKRegexTerminal;
private printKNonTerminal;
private printKProduction;
private printKSyntaxSort;
private printKSortSynonym;
private printKSyntaxLexical;
private printKSyntaxAssociativity;
private printKSyntaxPriority;
private printKBubble;
private printKRule;
private printKClaim;
private printKContext;
private printKAtt;
private printKImport;
private printKFlatModule;
private printKRequire;
private printKDefinition;
private printKastBool;
private appliedLabelStr;
}
export declare function buildSymbolTable(definition: KDefinition, extraModules?: KFlatModule[], opinionated?: boolean): SymbolTable;
export declare function unparserForProduction(prod: KProduction): (...args: string[]) => string;
export declare function indent(text: string, size?: number): string;
export declare function paren(printer: (...args: string[]) => string): (...args: string[]) => string;
export declare function assocWithUnit(assocJoin: string, unit: string): (...args: string[]) => string;
export {};