UNPKG

hopper

Version:

An interpreter for the Grace programming language

43 lines (33 loc) 1.08 kB
var Task, prim, rt, util; Task = require("../task"); prim = require("../runtime/primitives"); rt = require("../runtime"); util = require("../util"); // Top-level abstract Node constructor, used as a type in Grace. function Node(located) { this.location = located.location; } // A list of nodes, equivalent to a standard list but can also accept visitors. function NodeList(nodes) { Node.call(this, nodes[0]); prim.List.call(this, nodes); } util.inherits(NodeList, prim.List); NodeList.prototype.accept = rt.method("accept()", [[1, 1]], function (part) { return Task.each(this.object.nodes, function (node) { return node.accept(part); }).then(function (list) { return rt.list(list); }); }); // Abstract statement constructor, used as a type in Grace. function Statement(located) { Node.call(this, located); } util.inherits(Statement, Node); // Abstract expression constructor, used as a type in Grace. // All expressions are valid statements. function Expression(located) { Statement.call(this, located); } util.inherits(Expression, Statement);