UNPKG

antlr-ng

Version:

Next generation ANTLR Tool

58 lines (57 loc) 2.49 kB
import { ST, type IST, type STGroup } from "stringtemplate4ts"; import { Grammar } from "../tool/Grammar.js"; import { Target } from "./Target.js"; import type { IToolParameters } from "../tool-parameters.js"; export declare const targetLanguages: readonly ["Cpp", "CSharp", "Dart", "Go", "JavaScript", "Java", "PHP", "Python3", "Swift", "TypeScript"]; export type SupportedLanguage = typeof targetLanguages[number]; /** General controller for code gen. Can instantiate sub generator(s). */ export declare class CodeGenerator { private static readonly vocabFilePattern; private static languageMap; target: Target; readonly g?: Grammar; readonly language: SupportedLanguage; private readonly tool?; private readonly lineWidth; constructor(grammarOrLanguage: Grammar | SupportedLanguage); get templates(): STGroup; generateLexer(toolParameters: IToolParameters, header?: boolean): IST; generateParser(toolParameters: IToolParameters, header?: boolean): IST; generateListener(header?: boolean): IST; generateBaseListener(header?: boolean): IST; generateVisitor(header?: boolean): IST; generateBaseVisitor(header?: boolean): IST; writeRecognizer(outputFileST: IST, header: boolean): void; writeListener(outputFileST: IST, header: boolean): void; writeBaseListener(outputFileST: IST, header: boolean): void; writeVisitor(outputFileST: IST, header: boolean): void; writeBaseVisitor(outputFileST: IST, header: boolean): void; writeVocabFile(): void; write(code: IST, fileName: string): void; getRecognizerFileName(header?: boolean): string; getListenerFileName(header?: boolean): string; getVisitorFileName(header?: boolean): string; getBaseListenerFileName(header?: boolean): string; getBaseVisitorFileName(header?: boolean): string; /** * What is the name of the vocab file generated for this grammar? * * @returns undefined if no ".tokens" file should be generated. */ getVocabFileName(): string | undefined; getHeaderFileName(): string | undefined; /** * Generates a token vocab file with all the token names/types. For example: * ``` * ID=7 * FOR=8 * 'for'=8 * ``` * This is independent of the target language and used by antlr internally. * * @returns The token vocab file as a string template. */ protected getTokenVocabOutput(): ST; private createController; private walk; }