import { ExpressionOperators, LogicalOperators } from './operators'; import { Token } from './token-types'; export type AstNodeType = 'assign' | 'binOp' | 'const' | 'logicalOp' | 'getSingleVar' | 'setSingleVar' | 'chainingCalls' | 'chainingObjectAccess' | 'funcCall' | 'funcDef' | 'arrowFuncDef' | 'createObject' | 'createArray' | 'if' | 'elif' | 'for' | 'while' | 'tryExcept' | 'raise' | 'import' | 'comment' | 'return' | 'continue' | 'break'; export interface NameAlias { name: string; alias: string | undefined; } export interface ExceptBody { error: NameAlias; body: AstNode[]; } export interface FuncDefNode { params: string[]; funcAst: AstBlock; } export interface IsNullCoelsing { nullCoelsing: boolean | undefined; } export interface ObjectPropertyInfo { name: AstNode; value: AstNode; } export declare abstract class AstNode { type: AstNodeType; loc: Uint16Array | undefined; constructor(type: AstNodeType); } export declare class AssignNode extends AstNode { target: AstNode; source: AstNode; loc: Uint16Array; constructor(target: AstNode, source: AstNode, loc: Uint16Array); } export declare class ConstNode extends AstNode { value: number | string | boolean | null; constructor(token: Token); } export declare class CommentNode extends AstNode { comment: string; loc: Uint16Array; constructor(comment: string, loc: Uint16Array); } export declare class ReturnNode extends AstNode { returnValue: AstNode | undefined; loc: Uint16Array; constructor(returnValue: AstNode | undefined, loc: Uint16Array); } export declare class RaiseNode extends AstNode { errorName: string; errorMessageAst: AstNode; loc: Uint16Array; constructor(errorName: string, errorMessageAst: AstNode, loc: Uint16Array); } export declare class ContinueNode extends AstNode { constructor(); } export declare class BreakNode extends AstNode { constructor(); } export declare class SetSingleVarNode extends AstNode { name: string; constructor(token: Token); } export declare class FunctionCallNode extends AstNode implements IsNullCoelsing { name: string; paramNodes: AstNode[] | null; loc: Uint16Array; nullCoelsing: boolean | undefined; constructor(name: string, paramNodes: AstNode[] | null, loc: Uint16Array); } export declare class FunctionDefNode extends AstNode implements FuncDefNode { funcAst: AstBlock; params: string[]; isAsync: boolean; loc: Uint16Array; constructor(funcAst: AstBlock, params: string[], isAsync: boolean, loc: Uint16Array); } export declare class ArrowFuncDefNode extends AstNode implements FuncDefNode { funcAst: AstBlock; params: string[]; loc: Uint16Array; constructor(funcAst: AstBlock, params: string[], loc: Uint16Array); } export declare class ElifNode extends AstNode { conditionNode: AstNode; elifBody: AstNode[]; loc: Uint16Array; constructor(conditionNode: AstNode, elifBody: AstNode[], loc: Uint16Array); } export declare class IfNode extends AstNode { conditionNode: AstNode; ifBody: AstNode[]; elifs: ElifNode[] | undefined; elseBody: AstNode[] | undefined; loc: Uint16Array; constructor(conditionNode: AstNode, ifBody: AstNode[], elifs: ElifNode[] | undefined, elseBody: AstNode[] | undefined, loc: Uint16Array); } export declare class TryExceptNode extends AstNode { tryBody: AstNode[]; exepts: ExceptBody[]; elseBody: AstNode[] | undefined; finallyBody: AstNode[] | undefined; loc: Uint16Array; constructor(tryBody: AstNode[], exepts: ExceptBody[], elseBody: AstNode[] | undefined, finallyBody: AstNode[] | undefined, loc: Uint16Array); } export declare class ForNode extends AstNode { sourceArray: AstNode; itemVarName: string; body: AstNode[]; loc: Uint16Array; constructor(sourceArray: AstNode, itemVarName: string, body: AstNode[], loc: Uint16Array); } export declare class WhileNode extends AstNode { condition: AstNode; body: AstNode[]; loc: Uint16Array; constructor(condition: AstNode, body: AstNode[], loc: Uint16Array); } export declare class ImportNode extends AstNode { module: NameAlias; body: AstBlock; parts: NameAlias[] | undefined; loc: Uint16Array; constructor(module: NameAlias, body: AstBlock, parts: NameAlias[] | undefined, loc: Uint16Array); } export declare class GetSingleVarNode extends AstNode implements IsNullCoelsing { name: string; nullCoelsing: boolean | undefined; constructor(token: Token, nullCoelsing?: boolean | undefined); } export declare class ChainingCallsNode extends AstNode { innerNodes: AstNode[]; loc: Uint16Array; constructor(innerNodes: AstNode[], loc: Uint16Array); } export declare class CreateObjectNode extends AstNode { props: ObjectPropertyInfo[]; loc: Uint16Array; constructor(props: ObjectPropertyInfo[], loc: Uint16Array); } export declare class CreateArrayNode extends AstNode { items: AstNode[]; loc: Uint16Array; constructor(items: AstNode[], loc: Uint16Array); } export declare class ChainingObjectAccessNode extends AstNode { indexerBody: AstNode; nullCoelsing: boolean | undefined; loc: Uint16Array; constructor(indexerBody: AstNode, nullCoelsing: boolean | undefined, loc: Uint16Array); } export interface LogicalNodeItem { node: AstNode; op: LogicalOperators | undefined; } export declare class LogicalOpNode extends AstNode { items: LogicalNodeItem[]; loc: Uint16Array; constructor(items: LogicalNodeItem[], loc: Uint16Array); } export declare class BinOpNode extends AstNode { left: AstNode; op: ExpressionOperators; right: AstNode; loc: Uint16Array; constructor(left: AstNode, op: ExpressionOperators, right: AstNode, loc: Uint16Array); } export interface AstBlock { name: string; type: 'module' | 'func' | 'if' | 'for' | 'while' | 'trycatch'; funcs: FunctionDefNode[]; body: AstNode[]; } //# sourceMappingURL=ast-types.d.ts.map