packrat parser combinators in scala for dealing with Haskell-style layout in linear time for visibly pushdown languages
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


layout is a set of parser combinators for parsing Haskell-style layout in scala. It is based on the source of PackratParsers.scala from the 2.8.0 standard library by Martijn Odersky and Adriaan Moors.

layout is released under a BSD open source licence

The source code for layout is hosted on GitHub:

Snapshots and Releases published to the repository at

Build Instructions

The root directory of the project contains the SBT launcher, shell script, and Windows command script.

This is the directory structure of the build.

|- project +
|          |-build +
|          |       |- layout.scala           Project Definition, containing module structure, compiler
|          |       |                         options, cross module dependencies, etc.
|          |       |-       Version of SBT, Scala, and layout
|          |                                 A different version of Scala is used to run SBT and compile
|          |                                 the Project Definition than is used to compile layout
|          |-target                          Compiled Project Definition
|          |
|          +-boot                            Versions of Scala Compiler and Library.
|-src   +
|       |-main +
|       |      |-scala            Source files
|       |
|       |-test +
|              |-scala            Test source files
|-lib_managed                     Managed Dependencies for this module, e.g. Scalacheck.
|-target +
         |- <scala version M>    All built artifacts (classes, jars, scaladoc) for module N
                                 built for version M of Scala.

1. ./sbt update (this step is required after a fresh checkout, after changing the version of
                 SBT, Scala, or other dependencies)
2. ./sbt [compile | package | test-compile | test | publish-local | publish]

For continuous compilation:

$ ./sbt
> ~ compile

For other options, read:

To create an external dependency on this in your sbt build.scala use:

  val comonadMaven = " Maven Repository" at ""
  val layout = "com.comonad" %% "layout" % "0.1"