UNPKG

toylang

Version:

A toy programming language built with TypeScript for learning purposes

24 lines (23 loc) 1.05 kB
"use strict"; 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;