RIDL is a Ruby library implementing an Object Management Group (OMG) IDL parser/compiler frontend with support for pluggable (and stackable) backends created by Remedy IT.
RIDL provides a framework for implementing compiler/generators for OMG standard IDL definitions. The framework includes:
-
a RACC based parser supplemented with a custom scanner/tokenizer
-
a complete AST class hierarchy for representing parsed IDL specifications
-
a complete Type class hierarchy
-
IDL constants expression support
-
a builtin IDL preprocessor expression parser/evaluator
-
a flexible framework for pluggable (and stackable) backends
-
basic support for backend code re-generation
-
compliant with the OMG IDL 3.5 standard
-
support for OMG IDL 4.2 annotations
-
experimental support for IDL 4.2 map, int8/uint8, explicitly-named integer types, bitmask, bitset, empty struct, and struct inheritance
Remedy IT has developed multiple backends for RIDL. These include the following open source backends:
When you want to know more about how Remedy IT can assist you with developing your own backend for RIDL contact [email protected].
If you find a bug, please report it as RIDL issue.
This software is provided “as is” and without any express or implied warranties, including, without limitation, the implied warranties of merchantibility and fitness for a particular purpose.
RIDL is distributed as a Ruby Gem. You can download and install RIDL as a Ruby Gem from the common Rubygems.org repository by executing the following command:
$ gem install ridl
The RIDL Gem is a Ruby-only Gem without any dependencies.
A new RIDL ruby gem release can be made by incrementing the RIDL version in lib/ridl/version.rb and create a new release on github matching the new version (for example v2.7.0). The github Ruby Gem Release action will automatically create a new gem and push it to Rubygems.org.
The file ‘lib/ridl/parser.rb` can be regenerated using `racc -o parser.rb -F -E parser.ry`. The option `-E` embeds the racc parser within RIDL which is required for RIDL because jruby doesn’t contain ‘RACC` as cruby does.