js-slang
Version:
Javascript-based implementations of Source, written in Typescript
187 lines (186 loc) • 4.61 kB
TypeScript
export declare enum Chapter {
SOURCE_1 = 1,
SOURCE_2 = 2,
SOURCE_3 = 3,
SOURCE_4 = 4,
FULL_JS = -1,
HTML = -2,
FULL_TS = -3,
PYTHON_1 = -4,
PYTHON_2 = -5,
PYTHON_3 = -6,
PYTHON_4 = -7,
FULL_PYTHON = -8,
SCHEME_1 = -9,
SCHEME_2 = -10,
SCHEME_3 = -11,
SCHEME_4 = -12,
FULL_SCHEME = -13,
FULL_C = -14,
FULL_JAVA = -15,
LIBRARY_PARSER = 100
}
export declare enum Variant {
DEFAULT = "default",
TYPED = "typed",
NATIVE = "native",
WASM = "wasm",
EXPLICIT_CONTROL = "explicit-control"
}
export type LanguageOptions = Record<string, string>;
export interface Language {
chapter: Chapter;
variant: Variant;
languageOptions?: LanguageOptions;
}
export declare const sourceLanguages: ({
chapter: Chapter.SOURCE_1;
variant: Variant.DEFAULT;
} | {
chapter: Chapter.SOURCE_1;
variant: Variant.TYPED;
} | {
chapter: Chapter.SOURCE_1;
variant: Variant.WASM;
} | {
chapter: Chapter.SOURCE_2;
variant: Variant.DEFAULT;
} | {
chapter: Chapter.SOURCE_2;
variant: Variant.TYPED;
} | {
chapter: Chapter.SOURCE_3;
variant: Variant.DEFAULT;
} | {
chapter: Chapter.SOURCE_3;
variant: Variant.TYPED;
} | {
chapter: Chapter.SOURCE_4;
variant: Variant.DEFAULT;
} | {
chapter: Chapter.SOURCE_4;
variant: Variant.TYPED;
} | {
chapter: Chapter.SOURCE_4;
variant: Variant.EXPLICIT_CONTROL;
})[], isSourceLanguage: (lang: Language) => lang is {
chapter: Chapter.SOURCE_1;
variant: Variant.DEFAULT;
} | {
chapter: Chapter.SOURCE_1;
variant: Variant.TYPED;
} | {
chapter: Chapter.SOURCE_1;
variant: Variant.WASM;
} | {
chapter: Chapter.SOURCE_2;
variant: Variant.DEFAULT;
} | {
chapter: Chapter.SOURCE_2;
variant: Variant.TYPED;
} | {
chapter: Chapter.SOURCE_3;
variant: Variant.DEFAULT;
} | {
chapter: Chapter.SOURCE_3;
variant: Variant.TYPED;
} | {
chapter: Chapter.SOURCE_4;
variant: Variant.DEFAULT;
} | {
chapter: Chapter.SOURCE_4;
variant: Variant.TYPED;
} | {
chapter: Chapter.SOURCE_4;
variant: Variant.EXPLICIT_CONTROL;
};
export type SourceLanguages = (typeof sourceLanguages)[number];
export declare const scmLanguages: ({
chapter: Chapter.SCHEME_1;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.SCHEME_2;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.SCHEME_3;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.SCHEME_4;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.FULL_SCHEME;
variant: Variant.EXPLICIT_CONTROL;
})[], isSchemeLanguage: (lang: Language) => lang is {
chapter: Chapter.SCHEME_1;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.SCHEME_2;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.SCHEME_3;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.SCHEME_4;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.FULL_SCHEME;
variant: Variant.EXPLICIT_CONTROL;
};
export type SchemeLanguages = (typeof scmLanguages)[number];
export declare const pyLanguages: {
chapter: Chapter.PYTHON_1;
variant: Variant.DEFAULT;
}[], isPythonLanguage: (lang: Language) => lang is {
chapter: Chapter.PYTHON_1;
variant: Variant.DEFAULT;
};
export type PythonLanguages = (typeof pyLanguages)[number];
export declare function isSupportedLanguageCombo(lang: Language): lang is {
chapter: Chapter.SOURCE_1;
variant: Variant.DEFAULT;
} | {
chapter: Chapter.SOURCE_1;
variant: Variant.TYPED;
} | {
chapter: Chapter.SOURCE_1;
variant: Variant.WASM;
} | {
chapter: Chapter.SOURCE_2;
variant: Variant.DEFAULT;
} | {
chapter: Chapter.SOURCE_2;
variant: Variant.TYPED;
} | {
chapter: Chapter.SOURCE_3;
variant: Variant.DEFAULT;
} | {
chapter: Chapter.SOURCE_3;
variant: Variant.TYPED;
} | {
chapter: Chapter.SOURCE_4;
variant: Variant.DEFAULT;
} | {
chapter: Chapter.SOURCE_4;
variant: Variant.TYPED;
} | {
chapter: Chapter.SOURCE_4;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.SCHEME_1;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.SCHEME_2;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.SCHEME_3;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.SCHEME_4;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.FULL_SCHEME;
variant: Variant.EXPLICIT_CONTROL;
} | {
chapter: Chapter.PYTHON_1;
variant: Variant.DEFAULT;
};