Tengo una gramática ANTLR de JavaScript (tomada de Internet), que parece ser compatible con todo excepto con los literales de expresiones regulares.Análisis de JavaScript de expresiones regulares con ANTLR
El problema con una expresión regular literal es que tiene dos reglas, esencialmente:.
multiplicativeExpression
: unaryExpression (LT!* ('*' | '/' | '%')^ LT!* unaryExpression)*
y
regexLiteral
: '/' RegexLiteralChar* '/'
donde el RegexLiteralChar regla utiliza diferentes reglas analizadoras que una expresión normal (por ejemplo, una la comilla doble no la termina).
Esto significa que necesito, de alguna manera, cambiar algún tipo de estado lexer de mi analizador. ¿Cómo puedo hacer esto? ¿Es posible?
La comunicación entre analizador y las reglas lexer no son posibles. Tal vez eche un vistazo a esta gramática, que parece manejar literal-regex: http://research.xebic.com/es3/ (verifique el archivo ZIP). –