awv3
Version:
⚡ AWV3 embedded CAD
366 lines (285 loc) • 13.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = undefined;
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;