MCPcopy Create free account
hub / github.com/davidkingzyb/SCAST / parseClass

Function parseClass

lib/filbert.js:2328–2362  ·  view source on GitHub ↗
(ctorNode)

Source from the content-addressed store, hash-verified

2326 // Parse class
2327
2328 function parseClass(ctorNode) {
2329 // Container for class constructor and prototype functions
2330 var container = startNodeFrom(ctorNode);
2331 container.body = [];
2332
2333 // Parse class signature
2334 ctorNode.id = parseIdent();
2335 ctorNode.params = [];
2336 var classParams = [];
2337 if (eat(_parenL)) {
2338 var first = true;
2339 while (!eat(_parenR)) {
2340 if (!first) expect(_comma); else first = false;
2341 classParams.push(parseIdent());
2342 }
2343 }
2344 if (classParams.length > 1) raise(tokPos, "Multiple inheritance not supported");
2345 expect(_colon);
2346
2347 // Start new namespace for class body
2348 scope.startClass(ctorNode.id.name);
2349
2350 // Save a reference for source ranges
2351 var classBodyRefNode = finishNode(startNode());
2352
2353 // Parse class body
2354 var classBlock = parseSuite();
2355
2356 // Generate additional AST to implement class
2357 var classStmt = nc.createClass(container, ctorNode, classParams, classBodyRefNode, classBlock);
2358
2359 scope.end();
2360
2361 return classStmt;
2362 }
2363
2364 // Parse dictionary
2365 // Custom dict object used to simulate native Python dict

Callers 1

parseStatementFunction · 0.85

Calls 8

startNodeFromFunction · 0.85
parseIdentFunction · 0.85
eatFunction · 0.85
expectFunction · 0.85
raiseFunction · 0.85
finishNodeFunction · 0.85
startNodeFunction · 0.85
parseSuiteFunction · 0.85

Tested by

no test coverage detected