Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/remedyit/ridl

RIDL, the flexible Ruby IDL compiler
https://github.com/remedyit/ridl

compiler frontend idl pluggable ruby

Last synced: about 1 month ago
JSON representation

RIDL, the flexible Ruby IDL compiler

Awesome Lists containing this project

README

        

{rdoc-image:https://badge.fury.io/rb/ridl.svg}[https://badge.fury.io/rb/ridl]
{rdoc-image:https://github.com/RemedyIT/ridl/actions/workflows/r2corba.yml/badge.svg}[https://github.com/RemedyIT/ridl/actions?query=workflow%3Ar2corba]
{rdoc-image:https://github.com/RemedyIT/ridl/actions/workflows/taox11.yml/badge.svg}[https://github.com/RemedyIT/ridl/actions?query=workflow%3Ataox11]
{rdoc-image:https://github.com/RemedyIT/ridl/actions/workflows/ciaox11.yml/badge.svg}[https://github.com/RemedyIT/ridl/actions?query=workflow%3Aciaox11]
{rdoc-image:https://www.codefactor.io/repository/github/remedyit/ridl/badge}[https://www.codefactor.io/repository/github/remedyit/ridl]

= RIDL Compiler

== Description

{RIDL}[https://www.remedy.nl/opensource/ridl.html] is a Ruby library implementing an Object Management Group (OMG) {IDL}[https://www.omg.org/spec/IDL] parser/compiler frontend with support for pluggable (and stackable) backends created by {Remedy IT}[https://www.remedy.nl].

== Synopsis

RIDL provides a framework for implementing compiler/generators for OMG standard IDL definitions. The framework includes:
* a {RACC}[https://github.com/ruby/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}[https://www.omg.org/spec/IDL/3.5] standard
* support for {OMG IDL 4.2}[https://www.omg.org/spec/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:
* {R2CORBA}[https://www.remedy.nl/opensource/r2corba.html] generating Ruby code
* {TAOX11}[https://www.taox11.org] generating C++11 code
* {AXCIOMA}[https://www.axcioma.org] generating C++11 code

When you want to know more about how Remedy IT can assist you with developing your own backend for RIDL contact {[email protected]}[mailto:[email protected]].

== Bugs

If you find a bug, please report it as {RIDL issue}[https://github.com/RemedyIT/ridl/issues].

== Warranty

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.

== Installing RIDL

RIDL is distributed as a Ruby Gem. You can download and install RIDL as a Ruby Gem from the common {Rubygems.org}[https://www.rubygems.org/gems/ridl] repository by executing the following command:

$ gem install ridl

The RIDL Gem is a Ruby-only Gem without any dependencies.

== Releasing new RIDL Ruby Gem

A new RIDL ruby gem release can be made by incrementing the RIDL version in link:lib/ridl/version.rb and create a new release on {github}[https://github.com/RemedyIT/ridl/releases] matching the new version (for example v2.7.0). The github {Ruby Gem Release}[https://github.com/RemedyIT/ridl/actions?query=workflow%3A%22Ruby+Gem+Release%22] action will automatically create a new gem and push it to {Rubygems.org}[https://www.rubygems.org/gems/ridl].

== Regenerating `lib/ridl/parser.rb`

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.