Javascript имеет сложную грамматику для разбора. Прямоугольные косые черты могут означать несколько разных вещей: оператор разделения, литерал регулярных выражений, средство представления комментариев или средство представления комментария строки. Последние два легко отличить: если за чертой следит звезда, начинается многострочный комментарий. Если за косой чертой следует другая косая черта, это комментарий строки.
Но правила для устранения неоднозначности деления и регулярного выражения ускользают от меня. Я не могу найти его в стандарте ECMAScript. Там лексическая грамматика явно делится на две части: InputElementDiv и InputElementRegExp, в зависимости от того, что будет означать слэш. Но там ничего не объясняет, когда использовать, который.
И, конечно, правила вставки с запятнанной точкой с запятой усложняют все.
Есть ли у кого-нибудь пример четкого кода для лексинга Javascript, который имеет ответ?