awv3
Version:
⚡ AWV3 embedded CAD
281 lines (220 loc) • 6.88 kB
JavaScript
import _regeneratorRuntime from "@babel/runtime/regenerator";
/*
* Abstract syntax tree of the ClassCad language.
* API is closely based on python ast module, see there for class/method help.
*/
var Ast =
/*#__PURE__*/
function () {
function Ast() {
var i = 0;
for (var _iterator = this.iter_fields(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
var _ref3;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref3 = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref3 = _i.value;
}
var _ref4 = _ref3;
var _name = _ref4[0];
var _field = _ref4[1];
this[_name] = (_ref = i++, _ref < 0 || arguments.length <= _ref ? undefined : arguments[_ref]);
}
}
var _proto = Ast.prototype;
_proto.iter_fields =
/*#__PURE__*/
_regeneratorRuntime.mark(function iter_fields() {
var _iterator2, _isArray2, _i2, _ref5, _field2;
return _regeneratorRuntime.wrap(function iter_fields$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_iterator2 = this.constructor._fields, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();
case 1:
if (!_isArray2) {
_context.next = 7;
break;
}
if (!(_i2 >= _iterator2.length)) {
_context.next = 4;
break;
}
return _context.abrupt("break", 16);
case 4:
_ref5 = _iterator2[_i2++];
_context.next = 11;
break;
case 7:
_i2 = _iterator2.next();
if (!_i2.done) {
_context.next = 10;
break;
}
return _context.abrupt("break", 16);
case 10:
_ref5 = _i2.value;
case 11:
_field2 = _ref5;
_context.next = 14;
return [_field2, this[_field2]];
case 14:
_context.next = 1;
break;
case 16:
case "end":
return _context.stop();
}
}
}, iter_fields, this);
});
_proto.iter_child_nodes =
/*#__PURE__*/
_regeneratorRuntime.mark(function iter_child_nodes() {
var _iterator3, _isArray3, _i3, _ref7, _ref8, _name2, _field3, _iterator4, _isArray4, _i4, _ref9, _item;
return _regeneratorRuntime.wrap(function iter_child_nodes$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_iterator3 = this.iter_fields(), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();
case 1:
if (!_isArray3) {
_context2.next = 7;
break;
}
if (!(_i3 >= _iterator3.length)) {
_context2.next = 4;
break;
}
return _context2.abrupt("break", 39);
case 4:
_ref7 = _iterator3[_i3++];
_context2.next = 11;
break;
case 7:
_i3 = _iterator3.next();
if (!_i3.done) {
_context2.next = 10;
break;
}
return _context2.abrupt("break", 39);
case 10:
_ref7 = _i3.value;
case 11:
_ref8 = _ref7;
_name2 = _ref8[0];
_field3 = _ref8[1];
if (!(_field3 instanceof Ast)) {
_context2.next = 19;
break;
}
_context2.next = 17;
return _field3;
case 17:
_context2.next = 37;
break;
case 19:
if (!(_field3 instanceof Array)) {
_context2.next = 37;
break;
}
_iterator4 = _field3, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();
case 21:
if (!_isArray4) {
_context2.next = 27;
break;
}
if (!(_i4 >= _iterator4.length)) {
_context2.next = 24;
break;
}
return _context2.abrupt("break", 37);
case 24:
_ref9 = _iterator4[_i4++];
_context2.next = 31;
break;
case 27:
_i4 = _iterator4.next();
if (!_i4.done) {
_context2.next = 30;
break;
}
return _context2.abrupt("break", 37);
case 30:
_ref9 = _i4.value;
case 31:
_item = _ref9;
if (!(_item instanceof Ast)) {
_context2.next = 35;
break;
}
_context2.next = 35;
return _item;
case 35:
_context2.next = 21;
break;
case 37:
_context2.next = 1;
break;
case 39:
case "end":
return _context2.stop();
}
}
}, iter_child_nodes, this);
});
_proto.walk =
/*#__PURE__*/
_regeneratorRuntime.mark(function walk() {
var _iterator5, _isArray5, _i5, _ref10, _child;
return _regeneratorRuntime.wrap(function walk$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return this;
case 2:
_iterator5 = this.iter_child_nodes(), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();
case 3:
if (!_isArray5) {
_context3.next = 9;
break;
}
if (!(_i5 >= _iterator5.length)) {
_context3.next = 6;
break;
}
return _context3.abrupt("break", 17);
case 6:
_ref10 = _iterator5[_i5++];
_context3.next = 13;
break;
case 9:
_i5 = _iterator5.next();
if (!_i5.done) {
_context3.next = 12;
break;
}
return _context3.abrupt("break", 17);
case 12:
_ref10 = _i5.value;
case 13:
_child = _ref10;
return _context3.delegateYield(_child.walk(), "t0", 15);
case 15:
_context3.next = 3;
break;
case 17:
case "end":
return _context3.stop();
}
}
}, walk, this);
});
return Ast;
}();
export { Ast as default };