2010-09-15 17 views

Respuesta

6

que utilizan LIME Parser generator for PHP hace un par de años, y ya era maduro y estable.

El generador del analizador está escrito en PHP, lo que realmente no importa en ningún sentido técnico, ya que solo requerimos que el analizador generado esté en PHP, pero me gusta este detalle, no obstante. Me hace sentir menos disculparon por la escritura de software en PHP ;-)

EDIT:

debería añadir:

  1. donde escribí "usado" sería más exacto decir que yo "jugado con". Aún no he escrito ningún código de producción con lima. Pero no veo ninguna razón para no hacerlo.

  2. El "ejemplo de calculadora" que se proporciona con cal utiliza un método tokenize() que está muy lejos de ser un sustituto real de la potencia de lex. Pero si necesita un tokenizador real, debería ser posible usar lex en el "front-end" para alimentar los tokens a lime en el "back-end".

0

He transportado Jison, una copia de Bison en javascript, a php. Los resultados son un analizador asesino, capaz de manejar lexing/parsing muy simple y muy complejo. Ahora es parte de Jison, pero hay algunas actualizaciones en mi fork - https://github.com/robertleeplummerjr/jison. Los archivos están aquí - https://github.com/robertleeplummerjr/jison/tree/master/ports/php

Consulte el archivo léame en esa página, usted crea un analizador de javascript y php al mismo tiempo que son capaces de hacer lo mismo o cosas diferentes. ¡GUAY!

-5

Te aconsejo que escribas tu propio analizador, ya que es bastante fácil hoy.

La manera más fácil de hacerlo sería, en mi opinión, crear una clase para cada tipo de sintaxis posible (expresión, prueba, bucle, etc.).

Luego, en cada clase, código los métodos siguientes:

  • Un método para determinar de una cadena si la cadena es del tipo dado (a+b es de 'expresión' tipo, if(b) no es)
  • un método para "ejecutar" este tipo (a+b volverá a->run() + b->run(), y a->run() devolverá un valor)
Cuestiones relacionadas