UNPKG

awv3

Version:
365 lines (284 loc) 13.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _regenerator = require("babel-runtime/regenerator"); var _regenerator2 = _interopRequireDefault(_regenerator); var _slicedToArray2 = require("babel-runtime/helpers/slicedToArray"); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); var _getIterator2 = require("babel-runtime/core-js/get-iterator"); var _getIterator3 = _interopRequireDefault(_getIterator2); var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require("babel-runtime/helpers/createClass"); var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* * Abstract syntax tree of the ClassCad language. * API is closely based on python ast module, see there for class/method help. */ var Ast = function () { function Ast() { (0, _classCallCheck3.default)(this, Ast); var i = 0; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = (0, _getIterator3.default)(this.iter_fields()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _ref; var _step$value = (0, _slicedToArray3.default)(_step.value, 2), name = _step$value[0], field = _step$value[1]; this[name] = (_ref = i++, arguments.length <= _ref ? undefined : arguments[_ref]); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } (0, _createClass3.default)(Ast, [{ key: "iter_fields", value: _regenerator2.default.mark(function iter_fields() { var _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, field; return _regenerator2.default.wrap(function iter_fields$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _iteratorNormalCompletion2 = true; _didIteratorError2 = false; _iteratorError2 = undefined; _context.prev = 3; _iterator2 = (0, _getIterator3.default)(this.constructor._fields); case 5: if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) { _context.next = 12; break; } field = _step2.value; _context.next = 9; return [field, this[field]]; case 9: _iteratorNormalCompletion2 = true; _context.next = 5; break; case 12: _context.next = 18; break; case 14: _context.prev = 14; _context.t0 = _context["catch"](3); _didIteratorError2 = true; _iteratorError2 = _context.t0; case 18: _context.prev = 18; _context.prev = 19; if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } case 21: _context.prev = 21; if (!_didIteratorError2) { _context.next = 24; break; } throw _iteratorError2; case 24: return _context.finish(21); case 25: return _context.finish(18); case 26: case "end": return _context.stop(); } } }, iter_fields, this, [[3, 14, 18, 26], [19,, 21, 25]]); }) }, { key: "iter_child_nodes", value: _regenerator2.default.mark(function iter_child_nodes() { var _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, _step3$value, name, field, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, _item; return _regenerator2.default.wrap(function iter_child_nodes$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _iteratorNormalCompletion3 = true; _didIteratorError3 = false; _iteratorError3 = undefined; _context2.prev = 3; _iterator3 = (0, _getIterator3.default)(this.iter_fields()); case 5: if (_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done) { _context2.next = 43; break; } _step3$value = (0, _slicedToArray3.default)(_step3.value, 2), name = _step3$value[0], field = _step3$value[1]; if (!(field instanceof Ast)) { _context2.next = 12; break; } _context2.next = 10; return field; case 10: _context2.next = 40; break; case 12: if (!(field instanceof Array)) { _context2.next = 40; break; } _iteratorNormalCompletion4 = true; _didIteratorError4 = false; _iteratorError4 = undefined; _context2.prev = 16; _iterator4 = (0, _getIterator3.default)(field); case 18: if (_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done) { _context2.next = 26; break; } _item = _step4.value; if (!(_item instanceof Ast)) { _context2.next = 23; break; } _context2.next = 23; return _item; case 23: _iteratorNormalCompletion4 = true; _context2.next = 18; break; case 26: _context2.next = 32; break; case 28: _context2.prev = 28; _context2.t0 = _context2["catch"](16); _didIteratorError4 = true; _iteratorError4 = _context2.t0; case 32: _context2.prev = 32; _context2.prev = 33; if (!_iteratorNormalCompletion4 && _iterator4.return) { _iterator4.return(); } case 35: _context2.prev = 35; if (!_didIteratorError4) { _context2.next = 38; break; } throw _iteratorError4; case 38: return _context2.finish(35); case 39: return _context2.finish(32); case 40: _iteratorNormalCompletion3 = true; _context2.next = 5; break; case 43: _context2.next = 49; break; case 45: _context2.prev = 45; _context2.t1 = _context2["catch"](3); _didIteratorError3 = true; _iteratorError3 = _context2.t1; case 49: _context2.prev = 49; _context2.prev = 50; if (!_iteratorNormalCompletion3 && _iterator3.return) { _iterator3.return(); } case 52: _context2.prev = 52; if (!_didIteratorError3) { _context2.next = 55; break; } throw _iteratorError3; case 55: return _context2.finish(52); case 56: return _context2.finish(49); case 57: case "end": return _context2.stop(); } } }, iter_child_nodes, this, [[3, 45, 49, 57], [16, 28, 32, 40], [33,, 35, 39], [50,, 52, 56]]); }) }, { key: "walk", value: _regenerator2.default.mark(function walk() { var _iteratorNormalCompletion5, _didIteratorError5, _iteratorError5, _iterator5, _step5, child; return _regenerator2.default.wrap(function walk$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.next = 2; return this; case 2: _iteratorNormalCompletion5 = true; _didIteratorError5 = false; _iteratorError5 = undefined; _context3.prev = 5; _iterator5 = (0, _getIterator3.default)(this.iter_child_nodes()); case 7: if (_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done) { _context3.next = 13; break; } child = _step5.value; return _context3.delegateYield(child.walk(), "t0", 10); case 10: _iteratorNormalCompletion5 = true; _context3.next = 7; break; case 13: _context3.next = 19; break; case 15: _context3.prev = 15; _context3.t1 = _context3["catch"](5); _didIteratorError5 = true; _iteratorError5 = _context3.t1; case 19: _context3.prev = 19; _context3.prev = 20; if (!_iteratorNormalCompletion5 && _iterator5.return) { _iterator5.return(); } case 22: _context3.prev = 22; if (!_didIteratorError5) { _context3.next = 25; break; } throw _iteratorError5; case 25: return _context3.finish(22); case 26: return _context3.finish(19); case 27: case "end": return _context3.stop(); } } }, walk, this, [[5, 15, 19, 27], [20,, 22, 26]]); }) }]); return Ast; }(); exports.default = Ast;