Ayacc is an Ada parser generator in the style of yacc(1).
The first implementation was written by David Taback and Deepak Tolani at the University of California, Irvine. The last version that was released appeared to be the Ayacc 1.1 released in 1994.
Ayacc was used and improved by P2Ada, the Pascal to Ada translator. This version of Ayacc is derived from the P2Ada ayacc implementation released in August 2010.
This version brings a number of improvements:
- Ayacc now uses more standard options to configure the code generation
- The parser was improved to configure the parser stack size and support Ada child packages.
- The grammar supports the
%unit
directive to control the Ada child packages - It is possible to customize the
YYParse
procedure and pass some context arguments that are available to the grammar rules. - The call to
YYLex
can be customized with the%lex
directive allowing to give some context arguments when calling the lexer. - Ayacc can now generate reentrant parsers.
- Fix #7: Update ayacc.gpr: create missing dirs
- Fix #8: Update clean target in calc example and rename example package
- Support the Bison
%define variable value
option to configure the parser generator - Support the Bison
%code name { ... }
directive to insert code verbatim into the output parser - Recognize some Bison variables
api.pure
,api.private
,parse.error
,parse.stacksize
,parse.name
,parse.params
,parse.yyclearin
,parse.yyerrok
,parse.error
- New option
-S skeleton
to allow using an external skeleton file for the parser generator - Ayacc templates provide more control for tuning the code generation and they are embedded with Advanced Resource Embedder
- New option
-P
to generate a private Ada package for the tokens package - Improvement to allow passing parameters to
YYParse
for the grammar rules - New
%lex
directive to control the call ofYYLex
function - Fix #6: ayacc gets stuck creating an infinitely large file after encountering a comment in an action
- Reformat code using gnatpp
- New option
-C
to disable the generation ofyyclearin
procedure, - New option
-E
to disable the generation ofyyerrok
procedure, - New option
-D
to write the generated files to the directory specified, - New option
-k
to keep the case of grammar symbols, - Fixed various compilation warnings,
- Generate constants for shift reduce and goto arrays,
- Better strong typing in the generated state tables,
- Reduced number of style compilation warnings in generated code
make
make install prefix=/usr
-
Man page: ayacc (1)
-
Aflex 1.5 and Ayacc 1.3.0 explains how to use Aflex and Ayacc together, Aflex 1.5 et Ayacc 1.3.0 is the French translation.
- Pascal to Ada translator
- GWindows: GUI framework for MS Windows
- Ada parser for CSS files with CSS Object Model API
- Memory Analysis Tool
- Porion Build Manager
- Add your own Ayacc project here and submit a pull request...