7

Se me ha aconsejado utilizar un generador de analizadores para crear un analizador para el idioma específico de mi dominio.Parser Generator para Objective C?

Idealmente me gustaría que muestre un analizador Object-C y tome la entrada BNF para describir el idioma.

Parece que hay muy pocas opciones ... ¿es posible utilizar uno de los generadores de analizadores más populares con el objetivo C?

Gracias!

Respuesta

8

La generación de código no es la "verdadera manera" en lenguajes dinámicos como Objective-C. Todo lo que se puede lograr con un generador de analizador se puede lograr en tiempo de ejecución. Por lo tanto, le sugiero que pruebe algo como ParseKit, que tendrá una gramática similar a BNF y le dará varios ganchos de delegado que puede implementar para construir su analizador.

Consulte this tutorial para obtener más información.

+0

Se ve muy bien! ¿Sabes si la gramática tipo BNF para ParseKit ayuda a la recursión? es solo que no lo mencioné .. – FBryant87

+0

Estoy bastante seguro de que sí, pero si estás codificando gramáticas recursivas a la izquierda de esa manera, terminarás en un ciclo infinito a menos que seas muy cuidadoso. Por lo tanto, sugiero que intentes factorizar tu recursividad en la repetición, lo que probablemente te sirva mejor. –

4

Sin duda podría utilizar cualquiera de los generadores de analizadores basados ​​en C si está familiarizado con ellos. Otro analizador de tiempo de ejecución de Objective-C es Hammer por el irreprimible Rob Rix.

7

Hay (por supuesto) las respuestas esperadas de cosas como Bison o YACC o lo que sea, pero si quieres una solución nativa de Objective-C, hay una pareja que ya se ha mencionado. (Hammer y ParseKit) Otro que conozco es "CoreParse": https://github.com/beelsebob/CoreParse