antlr-ng
Version:
Next generation ANTLR Tool
58 lines (57 loc) • 2.49 kB
TypeScript
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;
}