Pregunta

Estoy desarrollando un traductor simple de MATHML a látex, usando LEX y YACC. En mi archivo LEX que contiene las reglas Regex, tengo una definida para operadores aritméticos [-+*=/]. Quiero extender para que reconozca los tiempos más mineros (+-) e invisibles ('e invisibletimes'), pero no estoy familiarizado con Regex y necesito ayuda.

¿Fue útil?

Solución

Prueba esto:

([-+*=/]|\+-|&InvisibleTimes)

Tenga en cuenta que necesita escapar del + en +- Porque es un operador fuera de las clases de personajes. Puede hacer esto con barra inalcanzada (como he hecho aquí) o con citas dobles. (La sintaxis de doble cota es bastante inusual: la mayoría de las otras implementaciones de Regex solo usan barras invertidas para escapar, por lo que me inclinaría a usar barras trastas, ya que hace que el Regex sea más "convencional").

Otros consejos

Algo como esto funcionaría?

(?:[-+*=/]|\+-|&InvisibleTimes)

No estoy muy familiarizado con MathML, así que tengo el problema opuesto de ti. Como otros han dicho, puedes hacer todo esto en un solo Regex, como este:

[-+*=/]|\+-|&InvisibleTimes

Sin embargo, si desea tener diferentes acciones asociadas con cada uno de estos, debe hacerlo así:

[-+*=/]            {/* action 1 here */}
\+-                {/* action 2 here */}
&InvisibleTimes    {/* action 3 here */}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top