README

Path: ../trunk/README
Last Update: Mon Jun 11 00:11:15 -0400 2007

An introduction to Dhaka and annotated examples can be found at the project homepage dhaka.rubyforge.org. For more examples, please look at the tests included in the gem.

When developing lexer specifications and grammars, require ‘dhaka‘. When using compiled lexers and parsers, e.g. in a production situation, require ‘dhaka/runtime‘. This loads a stripped-down version of the gem that is the bare-minimum required to run compiled state-machines.

The following abstract base classes comprise the core of Dhaka:

Dhaka::Grammar

Encodes production rules and precedences. Used by Dhaka::Parser to generate a new parser.

Dhaka::Tokenizer

Provides a DSL for writing hand-coded tokenizers. Processes an input string and returns an Enumerable of tokens, meant for consumption by a Dhaka::Parser or a Dhaka::CompiledParser.

Dhaka::LexerSpecification

Use this to specify regular expression patterns and actions for the various types of tokens in the language. Used by Dhaka::Lexer to generate a lexer for a language.

Dhaka::Evaluator

Encodes evaluation rules for performing syntax-directed translation. Accepts a parse-tree generated by a Dhaka::Parser or Dhaka::CompiledParser and recursively evaluates it.

[Validate]