Version 1.6 of Aflex, the lexical analyzer, and version 1.4 of Ayacc, the Ada parser generator provide numerous improvements to customize the generated scanner and parser. The major change is the support to write a reentrant scanner and parser. Let's have a look at it.
Tag - generator
Reentrant scanner and parser with Aflex and Ayacc
By Stephane Carrez2023-05-14 19:02:00
Advanced Resource Embedder 1.2.0
By Stephane Carrez2022-01-23 09:04:00
A new version of the Advanced Resource Embedder is now available. The tool allows to embed files in binaries by producing C, Ada or Go source files that contain the file to embed.
Aflex 1.5 and Ayacc 1.3.0
By Stephane Carrez2021-12-19 13:03:00
Aflex is a lexical analyzer generating tool similar to the Unix tool lex (1). Ayacc is an Ada parser generator in the style of yacc (1). New releases are available for these two tools and they bring a number of small improvements to these tools written in Ada 83 in the 1990s by John Self, David Taback and Deepak Tolani at the University of California, Irvine.
Advanced Resource Embedder 1.1.0
By Stephane Carrez2021-07-04 16:52:00
Release 1.1.0 of the Advanced Resource Embedder is available with new formats to represent files in the generated Ada and C sources.
Advanced Resource Embedder for Ada, C and Go
By Stephane Carrez2021-06-11 12:43:00
Incorporating files in a binary program can sometimes be a challenge. The Advance Resource Embedder is a flexible tool that collects files such as documentation, images, scripts, configuration files and generates a source code that contains these files.
Generating a REST Ada client with OpenAPI and Swagger Codegen
By Stephane Carrez2017-10-08 18:32:00
The OpenAPI initiative aims at defining a standard for the specification of REST API. The OpenAPI Specification (OAS) defines a programming language-agnostic interface to describe a REST API. The Swagger Codegen generator supports more than 28 different languages (including Ada) and it is able to read an OpenAPI document and generate either the documentation or the client and server REST code for several target languages.
Dynamo 0.7.0 is available
By Stephane Carrez2014-05-12 19:28:07
Dynamo is a code generator used to generate Ada Web Application or database mappings.
- New project template to generate Gtk Ada application
- Register the new module in the application when they are added
- Update the current testsuite when new tests are added
- New stereotype for Ada bean generation
- Support for the creation of Debian packages
- New command
add-form
andadd-module-operation
You can download the new version at http://download.vacs.fr/dynamo/dynamo-0.7.0.tar.gz
Dynamo 0.6.0 is available
By Stephane Carrez2013-02-10 22:15:26
Dynamo is a tool to help developers write some types of Ada Applications which use the Ada Server Faces or Ada Database Objects frameworks. Dynamo provides several commands to perform one specific task in the development process: creation of an application, generation of database model, generation of Ada model, creation of database.
The new version of Dynamo provides:
- A new command
build-doc
to extract some documentation from the sources, - The generation of MySQL and SQLite schemas from UML models,
- The generation of Ada database mappings from UML models,
- The generation of Ada beans from the UML models,
- A new project template for command line tools using ADO,
- A new distribution command to merge the resource bundles.
The most important feature is probably the Ada code generation from a UML class diagram. With this, you can design the data model of an application using ArgoUML and generate the Ada model files that will be used to access the database easily through the Ada Database Objects library. The tool will also generate the SQL database schema so that everything is concistent from your UML model, to the Ada implementation and the database tables.
The short tutorial below indicates how to design a UML model with ArgoUML, generate the Ada model files, the SQL files and create the MySQL database.
The Dynamo tool is available at http://code.google.com/p/ada-gen.
To build Dynamo, you will need:
Dynamo 0.5.0 is available
By Stephane Carrez2012-05-20 20:40:05
Dynamo is a tool to help developers write an Ada Web Application using the Ada Server Faces and the Ada Database Objects frameworks. Dynamo provides several commands to perform one specific task in the development process: creation of an application, generation of database model, generation of Ada model, creation of database.
The new version of Dynamo provides:
- Support multi-line comments in XML mappings,
- Generate List_Bean types for the XML mapped queries,
- Add support for Ada enum generation,
- Add test template generation,
- Add AWA service template generation,
- Add support for blob model mapping,
- New command 'add-ajax-form', 'add-query', 'dist', 'create-plugin'
The Dynamo tool is available at http://code.google.com/p/ada-gen. To build Dynamo, you will need:
Ada perfect hash generation with gperfhash
By Stephane Carrez2012-01-17 21:53:00
A perfect hash function is a function that returns a distinct hash number for each keyword of a well defined set. gperf is famous and well known perfect hash generator used for C or C++ languages. Ada is not supported.
The gperfhash is a sample from the Ada Utility Library which generates an Ada package that implements such perfect hash operation. It is not as complete as gperf but allows to easily get a hash operation. The gperfhash tool uses the GNAT package GNAT.Perfect_Hash_Generators
.
Pre requisite
Since the gperfhash tool is provided by the Ada Util samples, you must build these samples with the following command:
$ gnatmake -Psamples
Define a keyword file
First, create a file which contains one keyword on each line. For example, let's write a keywords.txt
file which contains the following three keywords:
int
select
print
Generate the package
Run the gperfhash tool and give it the package name.
$ gperfhash -p Hashing keywords.txt
The package defines a Hash
and an Is_Keyword
function. The Hash function returns a hash number for each string passed as argument. The hash number will be different for each string that matches one of our keyword. You can give a string not in the keyword list, in that case the hash function will return a number that collides with a hash number of one or our keyword.
The Is_Keyword
function allows to check whether a string is a keyword of the list. This is very useful when you just want to know whether a string is a reserved keyword in some application.
The package specification is the following:
-- Generated by gperfhash
package Hashing is
function Hash (S : String) return Natural;
-- Returns true if the string <b>S</b> is a keyword.
function Is_Keyword (S : in String) return Boolean;
type Name_Access is access constant String;
type Keyword_Array is array (Natural range <>) of Name_Access;
Keywords : constant Keyword_Array;
private
...
end Hashing;
How to use the hash
Using the perfect hash generator is simple:
with Hashing;
if Hashing.Is_Keyword (S) then
-- 'S' is one of our keyword
else
-- No, it's not a keyword
end if;
Tags
- Facelet
- NetBSD
- framework
- Mysql
- generator
- files
- application
- gcc
- ReadyNAS
- Security
- binutils
- ELF
- JSF
- Java
- bacula
- Tutorial
- Apache
- COFF
- collaboration
- planning
- project
- upgrade
- AWA
- C
- EL
- J2EE
- UML
- php
- symfony
- Ethernet
- Ada
- FreeBSD
- Go
- KVM
- MDE
- Proxy
- STM32
- Servlet
- backup
- lvm
- multiprocessing
- web
- Bean
- Jenkins
- release
- OAuth
- ProjectBar
- REST
- Rewrite
- Sqlite
- Storage
- USB
- Ubuntu
- bison
- cache
- crash
- Linux
- firefox
- performance
- interview