@maniascript/api
Version:
Maniascript API generator
70 lines (69 loc) • 2.77 kB
TypeScript
import type { CommonTokenStream } from 'antlr4ng';
import type { ClassDeclarationContext, EnumDeclarationContext, FunctionDeclarationContext, FunctionParameterContext, MemberDeclarationListContext, NamespaceDeclarationContext, ProgramContext, TypeArrayContext, TypeArrayValueContext, TypeClassContext, TypeContext, TypeEnumContext, TypeLiteralContext, VariableDeclarationContext } from '../antlr/DocParser.js';
import type { Documentation } from './doc-visitor.js';
type TypeCategory = 'class' | 'literal' | 'array' | 'enum';
interface Type {
category: TypeCategory;
isValueConst?: boolean;
isPointer?: boolean;
isPointerConst?: boolean;
name?: string;
namespace?: string;
type?: Type;
}
interface Enum {
rawDocumentation?: string;
documentation?: Documentation;
values: string[];
}
interface Variable {
rawDocumentation?: string;
documentation?: Documentation;
isConst?: boolean;
type: Type;
}
interface FunctionDeclaration {
rawDocumentation?: string;
documentation?: Documentation;
type: Type;
parameters: FunctionParameter[];
}
interface FunctionParameter {
type: Type;
name: string;
}
interface ClassContent {
rawDocumentation?: string;
documentation?: Documentation;
parent?: string;
enums?: Record<string, Enum>;
variables?: Record<string, Variable>;
functions?: Record<string, FunctionDeclaration[]>;
}
interface API {
classNames: string[];
namespaceNames: string[];
classes: Record<string, ClassContent>;
namespaces: Record<string, ClassContent>;
}
declare class APIVisitorError extends Error {
}
declare class APIVisitor {
tokens: CommonTokenStream;
constructor(tokens: CommonTokenStream);
visitTypeLiteral(ctx: TypeLiteralContext): Type;
visitTypeClass(ctx: TypeClassContext): Type;
visitTypeEnum(ctx: TypeEnumContext): Type;
visitTypeArrayValue(ctx: TypeArrayValueContext): Type;
visitTypeArray(ctx: TypeArrayContext): Type;
visitType(ctx: TypeContext): Type;
visitVariableDeclaration(ctx: VariableDeclarationContext): Variable;
visitFunctionParameter(ctx: FunctionParameterContext): FunctionParameter;
visitFunctionDeclaration(ctx: FunctionDeclarationContext): FunctionDeclaration;
visitEnumDeclaration(ctx: EnumDeclarationContext): Enum;
visitMemberDeclarationList(ctx: MemberDeclarationListContext): ClassContent;
visitClassDeclaration(api: API, ctx: ClassDeclarationContext): API;
visitNamespaceDeclaration(api: API, ctx: NamespaceDeclarationContext): API;
visit(ctx: ProgramContext): API;
}
export { APIVisitor, APIVisitorError, type TypeCategory, type Type, type Enum, type Variable, type FunctionDeclaration, type FunctionParameter, type ClassContent, type API };