antlr-ng
Version:
Next generation ANTLR Tool
53 lines (52 loc) • 3.29 kB
TypeScript
import type { IntervalSet } from "antlr4ng";
import type { IToolParameters } from "../tool-parameters.js";
import type { Alternative } from "../tool/Alternative.js";
import type { Grammar } from "../tool/Grammar.js";
import type { Rule } from "../tool/Rule.js";
import type { ActionAST } from "../tool/ast/ActionAST.js";
import type { BlockAST } from "../tool/ast/BlockAST.js";
import type { GrammarAST } from "../tool/ast/GrammarAST.js";
import type { CodeGenerator } from "./CodeGenerator.js";
import type { OutputModelController } from "./OutputModelController.js";
import type { Choice } from "./model/Choice.js";
import type { CodeBlockForAlt } from "./model/CodeBlockForAlt.js";
import type { ILabeledOp } from "./model/ILabeledOp.js";
import type { Lexer } from "./model/Lexer.js";
import type { LexerFile } from "./model/LexerFile.js";
import type { Parser } from "./model/Parser.js";
import type { ParserFile } from "./model/ParserFile.js";
import type { RuleFunction } from "./model/RuleFunction.js";
import type { SrcOp } from "./model/SrcOp.js";
import type { CodeBlock } from "./model/decl/CodeBlock.js";
export interface IOutputModelFactory {
readonly controller: OutputModelController;
readonly g: Grammar;
getGenerator(): CodeGenerator | undefined;
parserFile(fileName: string, toolParameters: IToolParameters): ParserFile | undefined;
parser(file: ParserFile): Parser | undefined;
lexerFile(fileName: string): LexerFile | undefined;
lexer(file: LexerFile): Lexer | undefined;
rule(r: Rule): RuleFunction | undefined;
rulePostamble(func: RuleFunction, r: Rule): SrcOp[] | undefined;
alternative(alt: Alternative, outerMost: boolean): CodeBlockForAlt | undefined;
finishAlternative(blk: CodeBlockForAlt, ops: SrcOp[]): CodeBlockForAlt;
epsilon(alt: Alternative, outerMost: boolean): CodeBlockForAlt | undefined;
ruleRef(ID: GrammarAST, label: GrammarAST | null, args: GrammarAST | null): SrcOp[] | undefined;
tokenRef(ID: GrammarAST, label: GrammarAST | null, args: GrammarAST | null): SrcOp[] | undefined;
stringRef(ID: GrammarAST, label: GrammarAST | null): SrcOp[] | undefined;
set(setAST: GrammarAST, label: GrammarAST | null, invert: boolean): SrcOp[] | undefined;
wildcard(ast: GrammarAST, labelAST: GrammarAST | null): SrcOp[] | undefined;
action(ast: ActionAST): SrcOp[] | undefined;
sempred(ast: ActionAST): SrcOp[] | undefined;
getChoiceBlock(blkAST: BlockAST, alts: CodeBlockForAlt[], label: GrammarAST | null): Choice | undefined;
getEBNFBlock(ebnfRoot: GrammarAST | null, alts: CodeBlockForAlt[]): Choice | undefined;
getLL1ChoiceBlock(blkAST: BlockAST, alts: CodeBlockForAlt[]): Choice | undefined;
getComplexChoiceBlock(blkAST: BlockAST, alts: CodeBlockForAlt[]): Choice | undefined;
getLL1EBNFBlock(ebnfRoot: GrammarAST, alts: CodeBlockForAlt[]): Choice | undefined;
getComplexEBNFBlock(ebnfRoot: GrammarAST, alts: CodeBlockForAlt[]): Choice | undefined;
getLL1Test(look: IntervalSet, blkAST: GrammarAST): SrcOp[] | undefined;
needsImplicitLabel(ID: GrammarAST, op: ILabeledOp): boolean;
getCurrentRuleFunction(): RuleFunction | undefined;
getCurrentOuterMostAlt(): Alternative | undefined;
getCurrentBlock(): CodeBlock | undefined;
}