cookeylang-ts
Version:
A dynamic, interpreted language.
85 lines (84 loc) • 2.49 kB
JavaScript
"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;