/lolcode-dsl

Activator template for Lolcode DSL. This activator aims to use Scala as a powerfull tool for embedding domain specific languages.

Primary LanguageScalaOtherNOASSERTION

Scala LolCode DSL

Build Status

LOLCODE is an esoteric programming language inspired by lolspeak, the language expressed in examples of the lolcat Internet meme.The language was created in 2007 by Adam Lindsay, researcher at the Computing Department of Lancaster University.

These short snippets show how Scala empowers you to create new embedded domain specific languages with its powerfull features.

This short DSL allows you to write lolcode with this appearence:

val myProgram =
	HAI (
		CAN HAS STDIO ?,
		PLZ OPEN FILE("LOLCATS.TXT") ?,
		AWSUM THX {
			VISIBLE FILE
		} O_NOES {
			INVISIBLE ("ERROR!")
		}
	) KTHXBYE

It's not exactly the same syntax, but it works for taking account of provided mechanisms to do so. If you want to run this code (yes,thanks!) you can use the reactive interpreter like this

val system = ActorSystem("MyActorSystem")

/** A dummy logger to print out all traces */
val logger = system.actorOf(Props(new Actor{
  def receive = {
    case msg => 
      println(msg)
  }
}))

/** Lolcode interpreter */
val interpreter = 
  system.actorOf(Props(new Interpreter(logger)))

interpreter ! myProgram

If you want to have a look you can clone this project with

git clone https://github.com/JSantosP/lolcode-dsl.git

If you want to see whether LolCode works reading a file (open your seat belt!) you can check it by executing

sbt run