(?!\x{2E2F})[\p{L}\p{Nl}\x{1885}-\x{1886}\x{2118}\x{212E}\x{309B}-\x{309C}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{00B7}\x{0387}\x{1369}-\x{1371}\x{19DA}$\x{200C}\x{200D}] \( \) \. \%{js:before-next-token} \%{js:meta-keyword} \%{js:import-keyword} \%{js:before-next-token} \. \%{js:before-next-token} \%{js:target-keyword} \%{js:before-next-token} \%{js:before-next-token} \%{js:new-keyword} \%{js:before-next-token} \( \) \%{js:before-next-token} \%{js:before-next-token} , \%{js:before-next-token} \%{js:before-next-token} \%{js:before-next-token} \%{js:identifier-container-start} \%{def:always-match} \%{js:before-next-token} \%{js:before-next-token} \( \) \%{js:before-next-token} \%{js:before-next-token} , \%{js:before-next-token} \%{js:identifier-container-start} \%{def:always-match} \.(?!\.) \%{js:before-next-token} \[ ] \?\.(?![0-9]) \%{js:before-next-token} \%{js:before-next-token} \%{js:before-next-token} \+\+|-- \%{js:async-keyword} # preceeds arrow function (?= \%{js:optional-whitespace-or-comments} (?: \%{js:identifier} \%{js:optional-whitespace-or-comments} => | \( # can this be better? ) ) # does not preceed "function" (leave to function expression) (?! \%{js:optional-whitespace-or-comments} \%{js:function-keyword} ) \%{js:await-keyword} | \%{js:delete-keyword} | \%{js:typeof-keyword} | \%{js:void-keyword} | \%{js:yield-keyword} \+ | # unary plus - | # unary negation ~ | # bitwise not ! # logical not \%{js:before-next-token} \%{js:before-next-token} (?= \%{js:not-whitespace} ) (?= [^:;\])}] ) (?! /[/*] ) \%{_expression-start} \%{js:before-next-token} (?=:) \%{def:always-match} : \%{js:before-next-token} \%{js:before-next-token} \%{js:before-next-token} \? \%{js:before-next-token} : \%{js:before-next-token} \%{js:before-next-token} \%{js:before-next-token} \? \%{js:before-next-token} \%{js:instanceof-keyword} | \%{js:in-keyword} \*\* =? | # exponentiation (assignment) (ES2016) [+/*%-] =? | # arithmetic (assignment) [!=]==? | # equality && | \|\| | # logical \?\? | # nullish coalescing (ES2020) [&|^] =? | # bitwise logical (assignment) (?: << | >>>? ) =? | # bitwise shift (assignment) [<>]=? | # relational = # assignment \%{_keyword-binary-operator} \%{js:before-next-token} \%{_binary-operator} \%{js:before-next-token} \%{_keyword-binary-operator} \%{js:before-next-token} \%{_binary-operator}|, \%{js:before-next-token} \%{js:before-next-token} \%{js:before-next-token} \%{js:before-next-token} \%{js:before-next-token} \%{_expression-start}(?!,) \%{js:before-next-token} \%{_expression-start}(?!,) \%{js:before-next-token} \%{_expression-start} \%{js:before-next-token} \%{_expression-start} \%{js:before-next-token}