+ 'finally' => self::TYPE_DO,
+
+ // ECMAScript 5.1 § 13 Function Definition
+ 'function' => self::TYPE_FUNC,
+
+ // Can be one of:
+ // - DecimalLiteral (ECMAScript 5.1 § 7.8.3 Numeric Literals)
+ // - MemberExpression (ECMAScript 5.1 § 11.2 Left-Hand-Side Expressions)
+ '.' => self::TYPE_BIN_OP,
+
+ // Can be one of:
+ // - Block (ECMAScript 5.1 § 12.1 Block)
+ // - ObjectLiteral (ECMAScript 5.1 § 11.1 Primary Expressions)
+ '{' => self::TYPE_BRACE_OPEN,
+ '}' => self::TYPE_BRACE_CLOSE,
+
+ // Can be one of:
+ // - Parenthesised Identifier or Expression after a
+ // TYPE_IF or TYPE_FUNC keyword.
+ // - PrimaryExpression (ECMAScript 5.1 § 11.1 Primary Expressions)
+ // - CallExpression (ECMAScript 5.1 § 11.2 Left-Hand-Side Expressions)
+ '(' => self::TYPE_PAREN_OPEN,
+ ')' => self::TYPE_PAREN_CLOSE,
+
+ // Can be one of:
+ // - ArrayLiteral (ECMAScript 5.1 § 11.1 Primary Expressions)
+ '[' => self::TYPE_PAREN_OPEN,
+ ']' => self::TYPE_PAREN_CLOSE,
+
+ // Can be one of:
+ // - End of any statement
+ // - EmptyStatement (ECMAScript 5.1 § 12.3 Empty Statement)
+ ';' => self::TYPE_SEMICOLON,