import Exception from '../../exception/Exception'; import { ITextDecoder, IToken } from './Tokenizer'; export declare class ASTGenerationException extends Exception { } export declare enum NodeType { Identifier = 0, ExportStatement = 1, TemplateExpression = 2, ParamDefinition = 3, TraitDefinition = 4, LiteralString = 5, LiteralNumber = 6, TypeDefinition = 7, CallDefinition = 8, ImportStatement = 9 } export interface INodeTemplateExpression extends INode { type: NodeType.TemplateExpression; name: INodeIdentifier; templateArguments: ReadonlyArray; } export interface INodeLiteralString extends INode { type: NodeType.LiteralString; value: string; } export interface INodeLiteralNumber extends INode { type: NodeType.LiteralNumber; value: string; } export interface INodeIdentifier extends INode { type: NodeType.Identifier; value: string; } export interface INodePosition { start: IToken; end: IToken; } export interface INode { position: INodePosition; } export interface INodeTypeDefinition extends INode { type: NodeType.TypeDefinition; name: INodeIdentifier; parameters: ReadonlyArray; traits: INodeIdentifier[]; } export interface INodeImportStatement extends INode { type: NodeType.ImportStatement; requirements: INodeIdentifier[] | null; from: INodeLiteralString; } export interface INodeParamDefinition extends INode { type: NodeType.ParamDefinition; name: INodeIdentifier; typeExpression: NodeTypeExpression; } export interface INodeCallDefinition extends INode { type: NodeType.CallDefinition; name: INodeIdentifier; returnType: INodeIdentifier; traits: INodeIdentifier[]; parameters: ReadonlyArray; } export interface INodeTraitDefinition extends INode { type: NodeType.TraitDefinition; name: INodeIdentifier; traits: INodeIdentifier[]; } export interface INodeExportStatement extends INode { type: NodeType.ExportStatement; value: INodeTypeDefinition | INodeTraitDefinition | INodeCallDefinition; } export type Node = INodeLiteralString | INodeImportStatement | INodeTypeDefinition | INodeExportStatement; export type NodeTypeExpression = INodeLiteralString | INodeLiteralNumber | INodeIdentifier | INodeTemplateExpression; export type ASTGeneratorOutputNode = INodeExportStatement | INodeCallDefinition | INodeImportStatement | INodeTypeDefinition | INodeTraitDefinition; export default class ASTGenerator { #private; constructor({ contents, textDecoder, tokens, file }: { file: string; tokens: ReadonlyArray; contents: Uint8Array; textDecoder: ITextDecoder; }); generate(): ASTGeneratorOutputNode[]; } //# sourceMappingURL=ASTGenerator.d.ts.map