Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/remedyit/ridl
- Owner: RemedyIT
- License: mit
- Created: 2019-09-17T07:50:14.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-11-25T12:12:49.000Z (2 months ago)
- Last Synced: 2024-11-25T13:22:42.550Z (2 months ago)
- Topics: compiler, frontend, idl, pluggable, ruby
- Language: Ruby
- Homepage: https://www.remedy.nl/opensource/ridl.html
- Size: 780 KB
- Stars: 6
- Watchers: 4
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.rdoc
- Funding: .github/FUNDING.yml
- License: LICENSE
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 inheritanceRemedy 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 codeWhen 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.