UNPKG

@maniascript/api

Version:

Maniascript API generator

70 lines (69 loc) 2.77 kB
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 };