Module: Antelope::Ace

Defined in:
lib/antelope/ace.rb,
lib/antelope/ace/token.rb,
lib/antelope/ace/errors.rb,
lib/antelope/ace/grammar.rb,
lib/antelope/ace/scanner.rb,
lib/antelope/ace/compiler.rb,
lib/antelope/ace/precedence.rb,
lib/antelope/ace/production.rb,
lib/antelope/ace/token/error.rb,
lib/antelope/ace/scanner/first.rb,
lib/antelope/ace/scanner/third.rb,
lib/antelope/ace/token/epsilon.rb,
lib/antelope/ace/scanner/second.rb,
lib/antelope/ace/token/terminal.rb,
lib/antelope/ace/grammar/loading.rb,
lib/antelope/ace/grammar/terminals.rb,
lib/antelope/ace/token/nonterminal.rb,
lib/antelope/ace/grammar/generation.rb,
lib/antelope/ace/grammar/precedences.rb,
lib/antelope/ace/grammar/productions.rb

Overview

Defines the Ace file. The Ace file format works similarly to bison's y file format. The Ace file is seperated into three parts:

 <first>
 %%
 <second>
 %%
 <third>

All parts may be empty; thus, the minimal file that Ace will accept would be

%%
%%

The first part consists of directives and blocks; directives look something like "%" <directive>[ <argument>]*\n, with <directive> being any alphanumerical character, including underscores and dashes, and <argument> being any word character or a quote-delimited string. Blocks consist of "%{" <content> "\n" "\s"* "%}", with <content> being any characters. The content is copied directly into the body of the output.

The second part consists of rules. Rules look something like this:

<nonterminal>: (<nonterminal> | <terminal>)* ["{" <content> "}"] ["|" (<nonterminal> | <terminal>)* ["{" <content> "}"]]* [;]

Where <nonterminal> is any lowercase alphabetical cahracter, <terminal> is any uppercase alphabetical character, and <content> is code to be used in the output file upon matching the specific rule.

The third part consists of a body, which is copied directly into the output.

Defined Under Namespace

Classes: Compiler, Error, Grammar, IncompatibleVersionError, InvalidStateError, NoTypeError, Precedence, Production, Scanner, SyntaxError, Token, UndefinedTokenError