module Antelope::Ace
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.