示例#1
0
        // ECMA-262 13.15 The try statement

        public Node parseCatchClause()
        {
            Node param;
            List<Node> @params = new List<Node>();
            //  paramMap = { },
            string key;
            int i;
            List<Node> body;
            Node node = new Node();

            expectKeyword("catch");

            expect("(");
            if (match(")"))
            {
                throwUnexpectedToken(lookahead);
            }

            param = null;// parsePattern(@params, "");
            for (i = 0; i < @params.Count; i++)
            {
                key = "$" + @params[i].value;
                //if (Object.prototype.hasOwnProperty.call(paramMap, key)) {
                //    tolerateError(Messages.DuplicateBinding, params[i].value);
                //}
                // paramMap[key] = true;
            }

            // ECMA-262 12.14.1
            if (strict && isRestrictedWord(param.name))
            {
                tolerateError(Messages.StrictCatchVariable);
            }

            expect(")");
            body = new List<Node>() { parseBlock() };
            return node.finishCatchClause(param, body);
        }