UNPKG

cookeylang-ts

Version:
85 lines (84 loc) 2.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Block = exports.RetStmt = exports.ExitStmt = exports.WhileStmt = exports.IfStmt = exports.ExprStmt = exports.VarDecl = exports.ClassDecl = exports.FuncDecl = void 0; const base_1 = require("./base"); class FuncDecl extends base_1.Base { constructor(name, params, body) { super(name); this.name = name; this.params = params; this.body = body; } visit(visit) { return visit.FuncDecl(this); } } exports.FuncDecl = FuncDecl; class ClassDecl extends base_1.Base { constructor(name, methods) { super(name); this.name = name; this.methods = methods; } visit(visit) { return visit.ClassDecl(this); } } exports.ClassDecl = ClassDecl; class VarDecl extends base_1.Base { constructor(mut, name, value) { super(name); this.mut = mut; this.name = name; this.value = value; } visit(visit) { return visit.VarDecl(this); } } exports.VarDecl = VarDecl; class ExprStmt extends base_1.Base { constructor(expr) { super(expr.lineData); this.expr = expr; } visit(visit) { return visit.ExprStmt(this); } } exports.ExprStmt = ExprStmt; class IfStmt extends base_1.Base { constructor(condition, thenBr, elseBr) { super(condition.lineData); this.condition = condition; this.thenBr = thenBr; this.elseBr = elseBr; } visit(visit) { return visit.IfStmt(this); } } exports.IfStmt = IfStmt; class WhileStmt extends base_1.Base { constructor(condition, body) { super(condition.lineData); this.condition = condition; this.body = body; } visit(visit) { return visit.WhileStmt(this); } } exports.WhileStmt = WhileStmt; class ExitStmt extends base_1.Base { constructor(exit) { super(exit.lineData); this.exit = exit; } visit(visit) { return visit.ExitStmt(this); } } exports.ExitStmt = ExitStmt; class RetStmt extends base_1.Base { constructor(ret, value) { super(ret); this.value = value; } visit(visit) { return visit.RetStmt(this); } } exports.RetStmt = RetStmt; class Block extends base_1.Base { constructor(stmts) { super(stmts[0].lineData); this.stmts = stmts; } visit(visit) { return visit.Block(this); } } exports.Block = Block;