2012-01-30 29 views
7

Quiere hacer un lenguaje específico de dominio (DSL) para la práctica, la primera idea es escribir intérprete o compilador de Brainfuck. primera idea fue anular funciones tales como se comportarán como comandos Brainfuck: ">", "<", "+", "-", ".", ",", "[", "]". Lamentablemente no se puede descartar la función como ".".compilador Brainfuck en scala

¿Hay alguna mejor solución para escribir en Scala?

Respuesta

6

Usted no dice esto específicamente en su pregunta, pero parece que cuando dice DSL, ¿quiere decir Internal DSL?

Las DSL internas son geniales, pero fundamentalmente siempre está limitado por la sintaxis del idioma que intenta utilizar. Scala es un lenguaje particularmente bueno para escribir una DSL interna, porque tiene una sintaxis simple y flexible. Pero no es infinitamente flexible.

Otras vías es posible que desee explorar podrían ser:

  1. Elija un símbolo diferente en lugar de "". Scala puede admitir identificadores Unicode, así que si te apetece ir por ese camino, ¿quizás podrías usar "∙"?
  2. ¿Crear un External DSL en su lugar?
5

Supongo que conoce esto example.

También esta example sugerida por Mikaël Mayer en los comentarios.

+0

¿Hay una manera más elegante? –

+0

No lo sé, solo recuerdo ese ejemplo particular del sitio oficial de Scala. – fiction

1

Escribí un intérprete de BrainFuck que hace uso de los combinadores de analizador Scala. el código fuente es here si puede ayudar.

Cuestiones relacionadas