php - naur - diagrama sintactico bnf
¿Definiciones de gramática EBNF para PHP? (4)
Me pregunto si alguien ha compilado un EBNF para PHP en algún lugar. Encontré este sitio y este sitio . Sin embargo, ambos parecen estar incompletos. Esta pregunta es muy similar , pero tiene un año. Me gustaría saber si se ha realizado algún progreso.
El sitio del cual he tomado los siguientes enlaces está en italiano pero tenemos:
Es posible que desee echar un vistazo a la gramática yacc que PHP usa internamente . Lo sé, no es EBNF, pero quizás esté bien para tus necesidades.
Es posible que también desee ver la definición de re2c lexer .
La gramática PHP de ANTLR 4 también está disponible: https://github.com/antlr/grammars-v4/tree/master/php .
Caracteristicas
- Procesamiento de código heterogéneo ( islands ):
- HTML
- Guión
- CSS
- PHP
- Heredoc
- Sintaxis alternativa .
- Heredoc .
- Cadenas de interpolación (pero no totalmente cubiertas).
- asptags.
- Se mejoró el procesamiento de errores de Lexer con fragmentos de cadenas artificiales (por ejemplo, comillas dobles cerradas al final:
<div attr=''value'''' />
).
Pruebas
La gramática se ha probado (análisis sin errores) en los siguientes proyectos:
Además, este analizador se ha probado en una gran cantidad de archivos PHP de diferentes CMS (~ 70000 archivos).
Una gramática ANTLR3 está disponible para ella:
http://code.google.com/p/phpparser/
La gramática anterior no es compatible con ANTLR4 , la versión actual de ANTLR.