2010-03-13 23 views
22

He leído que los analizadores de analizadores Haskell (en Parsec) pueden analizar gramáticas sensibles al contexto. ¿Esto también es cierto para los combinadores de analizadores Scala? Si es así, ¿para qué sirve la función "into" (también conocido como ">>")?¿Cómo se comparan los analizadores del analizador Scala con el Parsec de Haskell?

¿Cuáles son algunas fortalezas/debilidades de la implementación de los combinadores de analizadores de Scala, frente a Haskell's? ¿Aceptan la misma clase de gramáticas? ¿Es más fácil generar mensajes de error o hacer otras cosas útiles con uno u otro?

¿Cómo encaja el análisis packrat (introducido en Scala 2.8) en esta imagen?

¿Hay alguna página web u otro recurso que muestre cómo los diferentes operadores/funciones/DSL-sugar de la implementación de un idioma se correlacionan con los del otro?

Respuesta

14

¡Tienes muchas preguntas!

Comparando parsec (que es sólo una de muchas bibliotecas analizador combinator Haskell) a la aplicación Scala de parsec

Nadie ha hecho comparaciones aquí, ya que el código Scala es bastante nuevo, pero comprobar el documentación:

Tenga en cuenta que Haskell tiene muchas otras bibliotecas de combinador de analizadores, si le interesa este enfoque, p.

¿Cuáles son algunas fortalezas/debilidades de implementación de combinadores analizador de Scala, contra Haskell?

El código de Haskell tiene más de una década de existencia, está bien entendido, y hay muchos ejemplos, mucha documentación y casos de usuarios. Las cosas de Scala son relativamente nuevas.

packrat análisis

packrat análisis es completamente diferente. El original packrat paper se desarrolló en Haskell, pero desde entonces se ha generalizado.

¿Hay alguna página web u otro recurso que muestre cómo los diferentes operadores/funciones/DSL-sugar de la implementación de un idioma se correlacionan con los del otro?

No, pero eso sería genial. Sin embargo, casi todas las bibliotecas del combinador de analizadores (?) Se basan en la implementación parsec pionera, por lo que comparten mucho con el parsec original.

7

También hay el siguiente informe técnico:

Parser combinators in Scala

combinadores Parser son bien conocidos en lenguajes de programación funcionales como Haskell. En este documento, describimos cómo se implementan como una biblioteca en Scala, un lenguaje funcional orientado a objetos. Gracias a la sintaxis flexible de Scala, podemos acercarnos bastante a la notación EBNF soportada por generadores de analizadores dedicados. Para los no iniciados, primero explicamos el concepto de los combinadores de analizadores mediante el desarrollo de una biblioteca mínima desde cero. Luego pasamos a una descripción detallada de la biblioteca Scala existente, incluido su soporte para denotar el enlace variable como parte de la sintaxis. Proporcionamos varios ejemplos realistas para ilustrar la utilidad de nuestra biblioteca.

report.pdf (324K)

+0

moros @Adriaan: ¿Existe una publicación que se ocupa de los Scala 2,8 combinator adiciones biblioteca analizador? –

+0

No lo creo, pero le preguntaré a Tiark: no he trabajado en los analizadores desde 2.7. –

Cuestiones relacionadas