[\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}] \%[ async \%] (?= # 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} \%[ function \%] ) \%[ new \%] (?! \%{js:new-target-object-keyword-suffix} ) \%{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:identifier-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:before-next-token} \[ ] \?\.(?![0-9]) \%{js:before-next-token} \%{js:before-next-token} \%{js:before-next-token} (\+\+|--) await delete typeof void yield ( \+ | # 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} (?: \%[ (?: instanceof | in ) \%] ) (?: \*\* =? | # 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}