He estado leyendo sobre cómo se analizan las expresiones regulares en JS en este enlace: https://262.ecma-international.org/13.0/#sec-regular-expressions , pero no entiendo muy bien qué son las anotaciones parametrizadas [N] y [Sep] .
Como en este ejemplo:
Si no me equivoco, creo que la anotación [UnicodeMode] se refiere al indicador Unicode de la expresión regular.
¿Puede alguien guiarme en lo que significa [N] y [Sep] ?
Para saber cómo funcionan las producciones de gramática parametrizadas en general, consulte Notación de gramática de JavaScript .
Si no me equivoco, creo que la anotación
[UnicodeMode]se refiere al indicador Unicode de la expresión regular.
Sí, de hecho, se usa en ParsePattern, que se llama tanto para los literales de expresiones regulares como desde el constructor RegExp , y el indicador de gramática UnicodeMode se establece cuando se proporciona el indicador de expresiones regulares /u .
¿Puede alguien guiarme en lo que significa
[N]?
Esta bandera se usa para cambiar el significado de las referencias inversas con nombre . Si la expresión regular contiene al menos un grupo con nombre (?<name>…) , entonces la notación \k<name> se referirá a dichos grupos (y debe existir un grupo con el nombre dado, de acuerdo con la semántica estática de errores tempranos). Pero si la expresión regular no usa (?<…>…) en ninguna parte, entonces \k simplemente se tratará como un IdentityEscape (es decir, coincidir con una k literal en el texto de entrada).
¿Qué pasa con
[Sep]?
Esa es solo una referencia a la producción de DecimalDigits de la gramática literal de números normal. Evita el uso de un NumericLiteralSeparator en el número, lo que esencialmente lo convierte en una producción que solo coincide con literales enteros.