toylang
Version:
A toy programming language built with TypeScript for learning purposes
24 lines (23 loc) • 1.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseClassExtends = exports.parseClassDeclaration = void 0;
var Tokenizer_1 = require("../Tokenizer");
var identifiers_1 = require("./identifiers");
var statement_1 = require("./statement");
// `class` Identifier `extends` OptExtends: BlockStatement
function parseClassDeclaration(parser) {
var _a;
parser._eat(Tokenizer_1.TokenTypes.class);
var id = identifiers_1.parseIdentifier(parser);
var superClass = ((_a = parser._lookahead) === null || _a === void 0 ? void 0 : _a.type) === Tokenizer_1.TokenTypes.extends
? parseClassExtends(parser)
: null;
var body = statement_1.parseBlockStatement(parser);
return parser.factory.ClassDeclaration(id, body, superClass);
}
exports.parseClassDeclaration = parseClassDeclaration;
function parseClassExtends(parser) {
parser._eat(Tokenizer_1.TokenTypes.extends);
return identifiers_1.parseIdentifier(parser);
}
exports.parseClassExtends = parseClassExtends;