import { Expr } from '../parser/expr'; import { Token } from '../parser/lex/token'; declare enum JSON_TYPES { BINARY = "binary", GROUP = "group", LITERAL = "literal", UNARY = "unary", PERCENTAGE = "percentage", UNIT = "unit", CONVERSION = "conversion", ASSIGN = "assign", VARIABLE = "variable", CALL = "call", LOGICAL = "logical", TERNARY = "ternary" } interface InterfaceJSON { type: JSON_TYPES; right?: InterfaceJSON; left?: InterfaceJSON; operator?: Token; value?: InterfaceJSON | string; phrase?: string; unit?: string; ns?: string; converter?: string; variable?: string; name?: string; main?: InterfaceJSON; trueExpr?: InterfaceJSON; falseExpr?: InterfaceJSON; start?: number; end?: number; args?: InterfaceJSON[]; } declare class ToJSON implements Expr.IVisitor { private ast; constructor(ast: Expr); toJSON(): string; toObj(): object; visitBinaryExpr(expr: Expr.Binary): InterfaceJSON; visitGroupingExpr(expr: Expr.Grouping): InterfaceJSON; visitLiteralExpr(expr: Expr.Literal): InterfaceJSON; visitUnaryExpr(expr: Expr.Unary): InterfaceJSON; visitPercentageExpr(expr: Expr.Percentage): InterfaceJSON; visitUnitExpr(expr: Expr.UnitExpr): InterfaceJSON; visitConversionExpr(expr: Expr.ConversionExpr): InterfaceJSON; visitAssignExpr(expr: Expr.Assign): InterfaceJSON; visitVariableExpr(expr: Expr.Variable): InterfaceJSON; visitCallExpr(expr: Expr.Call): InterfaceJSON; visitLogicalExpr(expr: Expr.Logical): InterfaceJSON; visitTernaryExpr(expr: Expr.Ternary): InterfaceJSON; private evaluate; } export { ToJSON, JSON_TYPES, InterfaceJSON };