public Node parseClassExpression() { Node id = null; Node superClass = null; Node classNode = new Node(); List<Node> classBody; bool previousStrict = strict; strict = true; expectKeyword("class"); if (lookahead.type == TokenType.Identifier) { id = parseVariableIdentifier(); } if (matchKeyword("extends")) { lex(); superClass = isolateCoverGrammar(parseLeftHandSideExpressionAllowCall); } classBody = new List<Node>() { parseClassBody() }; strict = previousStrict; return classNode.finishClassExpression(id, superClass, classBody); }