onelang
Version:
OneLang transpiler framework core
29 lines (28 loc) • 1.68 kB
TypeScript
import { OneAst as one } from "./One/Ast";
import { SchemaContext } from "./One/SchemaContext";
import { LangFileSchema } from "./Generator/LangFileSchema";
import { CodeGenerator } from "./Generator/CodeGenerator";
import { GenericTransformer } from "./One/Transforms/GenericTransformer";
import { IParser } from "./Parsers/Common/IParser";
import { PackageManager } from "./StdLib/PackageManager";
export declare class OneCompiler {
parser: IParser;
schemaCtx: SchemaContext;
overlayCtx: SchemaContext;
stdlibCtx: SchemaContext;
genericTransformer: GenericTransformer;
langName: string;
saveSchemaStateCallback: (type: "overviewText" | "schemaJson", schemaType: "program" | "overlay" | "stdlib", name: string, data: string) => void;
setup(overlayCode: string, stdlibCode: string, genericTransformerYaml: string): void;
/**
* Schema types:
* - program: the input program to be compiled into another language
* - overlay: helper classes which map the input language's built-in methods / properties to OneLang methods (eg. Object.keys(map) -> map.keys())
* - stdlib: declaration (not implementation!) of OneLang methods (eg. map.keys) which are implemented in every language separately
*/
parse(langName: string, programCode: string): void;
protected saveSchemaState(schemaCtx: SchemaContext, name: string): void;
static parseLangSchema(langYaml: string, pacMan: PackageManager, stdlib: one.Schema): LangFileSchema.LangFile;
getCodeGenerator(lang: LangFileSchema.LangFile): CodeGenerator;
compile(langCode: string, pacMan: PackageManager, callTestMethod?: boolean, genMeta?: boolean): string;
}