Estoy tratando de escribir un motor de expresiones regulares. Me gustaría escribir un analizador de descenso recursivo a mano. ¿Qué aspecto tendría una gramática sin contexto sin recurrencia para el lenguaje de expresiones regulares (no los lenguajes que pueden describirse mediante expresiones regulares)? ¿Sería más fácil volver a factorizar el azúcar sintáctico, es decir, cambiar a+
a aa*
? ¡Gracias por adelantado!Gramática sin contexto que describe expresiones regulares?
Respuesta
recursividad Izquierda:
Expression = Expression '|' Sequence
| Sequence
;
Sequence = Sequence Repetition
| <empty>
;
recursividad Derecha:
Expression = Sequence '|' Expression
| Sequence
;
Sequence = Repetition Sequence
| <empty>
;
ambiguo formulario:
Expression = Expression '|' Expression
| Sequence
;
Sequence = Sequence Sequence
| Repetition
| <empty>
;
El artículo de la wikipedia en Left Recursion da bastante buena información sobre cómo llevarlo a cabo.
No es que necesite volver a factorizar una gramática con recursividad a la izquierda, sino que estoy tratando de tener una idea de cómo debería ser la gramática en general. Aunque he leído mucho sobre ellos, nunca he usado una gramática "libre de contexto", por así decirlo. – wkf
Se podría buscar en el source code for Plan 9 grep. El archivo grep.y tiene una gramática yacc (LALR (1) si recuerdo correctamente) para expresiones regulares. Es posible que pueda comenzar desde la gramática de yacc y volver a escribirla para el análisis de descenso recursivo.
- 1. ¿Las expresiones regulares de Ruby 1.9 son igualmente potentes para una gramática libre de contexto?
- 2. Analizando una gramática sin contexto en Python
- 3. ¿Es posible tener expresiones regulares que coincidan con todas las expresiones regulares válidas?
- 4. ¿Qué es una gramática gratuita de contexto?
- 5. Cómo analizar una cadena sin expresiones regulares
- 6. expresiones regulares: Buscar cadena sin subcadena
- 7. Python expresiones regulares que no trabaja
- 8. Javascript expresiones regulares que no trabaja
- 9. expresiones regulares (expresiones regulares), reemplace la segunda aparición en javascript
- 10. expresiones regulares vs mientras que los bucles
- 11. expresiones regulares para que coincida con EOF
- 12. Java expresiones regulares simple que no trabaja
- 13. expresiones regulares incrustada {{juego
- 14. vim reemplazar expresiones regulares
- 15. Expresiones regulares generativas
- 16. Analizador de expresiones regulares ligero
- 17. Usando Parsec para analizar expresiones regulares
- 18. Expresiones regulares en findstr
- 19. Expresiones regulares en OCaml
- 20. Partido hasta x expresiones regulares o y expresiones regulares
- 21. expresiones regulares en Javascript con jQuery Contiene expresiones regulares extensión
- 22. nulabilidad (Las expresiones regulares)
- 23. ¿Por qué las expresiones regulares se llaman expresiones "regulares"?
- 24. Validar expresiones matemáticas usando expresiones regulares?
- 25. Compilador de expresiones regulares
- 26. Expresiones regulares mutuamente excluyentes
- 27. Notepad ++ expresiones regulares reemplazar
- 28. Expresiones regulares en J2ME
- 29. Expresiones regulares en Puntuación
- 30. fusionar dos expresiones regulares
Derecho en el hombre; usted ha respondido todas mis preguntas esta tarde. ¡Gracias! – wkf