The Kiama project is developing a language processing library in the Scala programming language

( Typical application domains for Kiama are compilers and interpreters for programming languages, code refactoring in integrated development environments, static code analysis, program transformation and natural language processing.

Language processing applications have often been approached using using automatic generation tools. For example, lexing and parsing components are often generated from regular expressions or context-free grammars by tools such as Flex, YACC, Bison, ANTLR and JavaCC. Using generators means that a correct implementation can be obtained easily from a problem description that is relatively close to the problem itself. Unfortunately, generators imply a learning curve, don't solve the whole problem, and integrating them with the rest of the development process can be hard (e.g., for debugging). Therefore, many developers resort to a hand-coding approach and thereby give up the benefits that higher-level approaches and tools can give.

The Kiama approach to this situation is to embed language processing facilities in a high-level language library. By providing appropriate abstractions suitable for language processing, including grammars, rewriting rules and tree attribution, Kiama allows developers to concentrate on their problem, but still integrate easily with hand-written code. Scala is a powerful new language with a combination of object-oriented and functional features that are ideal for developing this kind of library.


Anthony Sloane (Macquarie)
Matt Roberts (Macquarie)
Dominic Verity (Macquarie)



The Kiama software is released under the open source LGPL license. More information including manuals and source downloads can be found at the Kiama Google Code Project site.

  • No labels