tiene son qué propiedades malo los limón limon cuáles curativas cura cruda contraindicaciones con comer cascara beneficios ayunas c parsing bison parser-generator lemon

c - son - ¿El poder del limón o no?



te de cascara de limon contraindicaciones (2)

Interesante encontrar! Realmente no lo he usado, por lo que el comentario se basa en leer la documentación.

El rediseño para que el análisis léxico se realice por separado del análisis de inmediato parece tener mérito. En particular, tiene el potencial de simplificar operaciones como el manejo de archivos de origen múltiples o anidados. El mecanismo yywrap() basado en Lex no es ideal. El hecho de que evite todas las variables globales y cuente con una cuidadosa asignación de memoria y control de desasignación debería contar a su favor (que permite que la elección del asignador y desasignador ayude también en gran medida, al menos en los entornos donde trabajo, donde la asignación de memoria siempre es un problema) .

Es una buena idea repensar cómo se organizan las reglas y cómo se identifican los terminales.

Con todo, parece un rediseño bien pensado de Bison.

Se encuentra en el dominio público según las páginas web a las que se hace referencia.

Para el analizador de gramática, solía "jugar" con Bison, que tiene sus pros / contras.

La semana pasada, noté en el sitio de SqLite que el motor está hecho con otro analizador de gramática: Lemon

Suena genial después de leer la fina documentación.
¿Tiene algún comentario sobre este analizador?

Realmente no puedo ver información pertinente en Google y Wikipedia (solo algunos ejemplos, mismos tutoriales) No parece ser muy popular. (no hay una etiqueta de lemon en Stack Overflow [ed: existe ahora: P])


Las razones por las que estamos usando Lemon en nuestro proyecto de firmware son:

  • Pequeño tamaño de código generado y huella de memoria. Produce el analizador más pequeño que encontré (comparé analizadores de complejidad similar generados por flex, bison, ANTLR y Lemon);
  • Excelente soporte de sistemas integrados: Lemon no depende de la biblioteca estándar, puede especificar funciones de administración de memoria externa, el registro de depuración es removible.
  • Licencia de dominio público. Hay una bifurcación separada de Lemon con licencia GPLv2 que no es adecuada para nuestras necesidades debido a la licencia viral. Así que obtenemos las últimas fuentes de sqlite y compilamos Lemon a partir de ellas (consta de solo dos archivos);
  • Pull-parsing. Hace que el código sea más fácil de entender y mantener que el código de análisis Flex / Bison. Seguridad del hilo como un bono adicional que admiro.
  • Integración sencilla con tokenizadores. Nuestra naturaleza de proyecto requiere tokenización de flujo binario con tamaño de tokens variable. Fue bastante fácil implementar el tokenizer e integrarlo con la API del analizador de solo 3 funciones y una variable de contexto de retroalimentación. Investigamos formas de integrar Lemon con re2c y Ragel y también nos parecieron bastante fáciles de implementar.
  • Sintaxis muy sencilla de aprender.
  • Lemon explícitamente separa el desarrollo de tokenizer y analizador léxico (analizador). Mi flujo de desarrollo comienza con el diseño de la gramática del analizador. Puedo verificar reglas complejas con una secuencia de tokens implícita por medio de varias llamadas de analizador (...) en esta primera etapa. Tokenizer se implementa después.

Seguramente el limón no es una bala de plata, tiene un área de aplicación limitada. Entre las desventajas:

  • Lemon requiere escribir más reglas en comparación con Bison debido a la sintaxis simplificada: sin repeticiones y opciones, una acción por regla, etc.
  • Conjunto completo de limitaciones del analizador LALR (1).
  • Sólo el lenguaje C.

Pese los pros y los contras antes de hacer su elección. He hecho el mío ;-)