示例#1
0
        public Node parseClassDeclaration(bool identifierIsOptional)
        {
            Node id = null;
            Node superClass = null;
            Node classNode = new Node();
            List<Node> classBody;
            bool previousStrict = strict;
            strict = true;

            expectKeyword("class");

            if (!identifierIsOptional || lookahead.type == TokenType.Identifier)
            {
                id = parseVariableIdentifier();
            }

            if (matchKeyword("extends"))
            {
                lex();
                superClass = isolateCoverGrammar(parseLeftHandSideExpressionAllowCall);
            }
            classBody = new List<Node>() { parseClassBody() };
            strict = previousStrict;

            return classNode.finishClassDeclaration(id, superClass, classBody);
        }