Ao analisar o Javascript, o que determina o significado de uma barra?

JavaScript tem uma gramática complicada para analisar. Barras de avanço podem significar várias coisas diferentes: operador de divisão, literal de expressão regular, introdutor de comentários ou introdutor de comentários de linha. Os dois últimos são fáceis de distinguir: se a barra é seguida por uma estrela, ele inicia um comentário com várias linhas. Se a barra for seguida por outra barra, será um comentário de linha.

Mas as regras para desambiguar divisão e regex literal estão me escapando. Não consigo encontrá-lo noECMAScript standard. Lá, a gramática lexical é explicitamente dividida em duas partes, InputElementDiv e InputElementRegExp, dependendo do significado de uma barra. Mas não há nada explicando quando usar quais.

E, é claro, as temidas regras de inserção de ponto e vírgula complicam tud

Alguém tem um exemplo de código claro para lexing Javascript que tem a respost

questionAnswers(5)

yourAnswerToTheQuestion