Revision history for CORBA-IDLtree
2.00 2018/01/05
* Fixed parsing of parameterless annotation with empty
@$argref in sub parse_annotation_app.
* Changed version numbering to conform to CPAN format.
* Based distro on skeleton generated by module-starter.
* Started converting inline documentation to POD format.
1.6 2018/01/01
* Fixed parsing of inheritance from an absolute qualified
superclass such as e.g.
valuetype vt : ::absolute::qualified::superclass {...};
* Added variable $global_idlfile, a copy of the file name
passed into the most recent call to Parse_File.
* Simplified the REMARK node as follows:
- Its SUBORDINATES contains the starting line number
of the comment lines;
- its NAME points to a simple array of lines. I.e. the
file name and line number elements are no longer part
of the lines array.
* The COMMENT element now points to a tuple of (starting)
line number and reference to simple array of lines.
I.e. the file name and line number elements are no
longer part of the lines array.
* Added support for IDL4 standard annotations and user
defined @annotation. See below for documentation on
the new node element ANNOTATIONS.
IDL4 annotations are currently supported in the
following locations:
- Type declarations
- Member declarations of structured types
- Enum literal value declarations
Modified the node structure of these constructs
accordingly.
* New sub enum_literals returns the net literals of an
ENUM. It is intended to shield against the node
structure change at enum literals. Direct usages of
enum SUBORDINATES should be replaced by calls to this
sub when possible.
* Removed support for non standard enum value repre-
sentation as in: enum MyEnum { zero=0, one=1 };
This is superseded by the @value annotation.
1.5 2017/07/23
The SCOPEREF of a MODULE now points to the previous
opening of the module.
Changed the COMMENT node element and the NAME element of
the REMARK node as follows: Each element in the comment
array is a ref to an array that contains the name of the
file, the line number, and the comment text in that order.
1.4 2003/07/25
Implemented #elif in the emulated preprocessor and fixed
the handling of preprocessor conditions.
Changed the COMMENT element of the node structure to only
contain the post-comment. Turned the former pre-comment
into an independent node, REMARK. See documentation below.
Added global switch $cache_trees. It buys speed when
submitting related IDL files to consecutive Parse_File
calls by saving and reusing the trees built for #included
files. CAVEAT: The redefinition of #defined symbols
is flagged as an error when using this switch.
1.3 2002/12/01
#include statements that appear at places other than
the global scope are no longer made into INCFILE nodes;
instead, the included file is parsed inline.
The SCOPEREF of declarations immediately inside an INCFILE
now point to the INCFILE. This change makes possible the
reopening of modules.
Support self-referential valuetype definition, i.e.
state members that are of the type currently being defined.
1.2 2002/07/08
Added a further element to the node structure: COMMENT
(see below for details.)
Added user-level utilities is_a and root_type.
Added PRAGMA for the general case of (unknown) pragmas.
Relieved the constraint on the required perl version;
perl versions after 5.002 should be fine.
Privatized @predef_types. Apps should only use sub typeof.
1.1a 2002/06/27
Added sub is_valid_identifier. Added a test directory.
1.1 2002/06/24
Removed non-standard extensions.
In the interest of IDL conformance, changed the scope
separator used internally to "::". (This separator
may appear at union CASE designators and in CONST
and array dimension expressions.)
Removed the LANG constants, and removed support for
languages other than IDL in sub typeof.
Corrected parsing of valuetype boxes.
Repaired `const string' and implemented simple `const'
used as a bounded-string bound expression.
Added detection of unclosed comment at end of file.
Added NATIVE.
1.0 2002/02/04
Turned all variables used as constants into subroutines.
Attention, unfortunately this impacts all applications;
e.g. the former $CORBA::IDLtree::BOOLEAN is now written
&CORBA::IDLtree::BOOLEAN .
Added "abstract" and OBV related keywords.
Improved usage of gcc as a C preprocessor.
However, there still are problems with using system
preprocessors, due to variations in their options and
behavior. The default is now to use preprocessor
emulation. Removed sub emulate_cpp and added sub
use_system_preprocessor to attempt usage of the system
preprocessor.
The builtin preprocessor now does simple substitutions
(however, macro functions are still unimplemented.)
0.7b 1999/11/16
Added pragma ID.
0.7a 1999/11/16
Added sub emulate_cpp to force C preprocessor emulation.
0.7 1999/09/15
Added wchar and wstring to the elementary types.
The SUBORDINATES of an INTERFACE node were erroneously
a tuple (ancestor ref plus ref to array of contained nodes)
The ref-to-contained-nodes was one level of indirection
too many. Corrected that to be a flat array; element 0 is
the ancestor ref, following elements are the contained
nodes.
Dump_Symbols now generates exact IDL syntax.
0.6b 1999/08/03
Improved C preprocessor emulation by Jacques Tremblay
(jackt@gel.ulaval.ca)
0.6 1999/07/17
Use C preprocessor; added optional argument $cpp_args
at Parse_File
0.5b 1999/05/17
Support IDL type "TypeCode"
0.5 1999/05/09
Support IDL type "fixed" and the extra long types
0.4a 1999/04/29
Added a node for interface forward declarations.
First rough hack at the missing preprocessor directives
#ifdef, #ifndef, #else, #endif, #define, #undef
(no nested #ifdefs yet.) Perhaps this stuff shouldn't be
done here at all and we should use the C preprocessor
instead. Discussion welcome.
0.4 1999/04/20
Design change: added a back pointer to the enclosing
scope to each node. The basic node now contains four
elements: ($TYPE, $NAME, $SUBORDINATES, $SCOPE)
Removed the %Prefixes hash that is thus obsolete.
Replaced sub check_scope by sub curr_scope.
0.3 1999/04/11
Added a node for pragma prefix
0.2 1999/04/06
Minor cosmetic changes; tested subs traverse_tree
and traverse (for usage example, see idl2ada.pl)
Preprocessor directives other than #include were
actually mistreated (fixed so they are just ignored.)
0.1 1998/07/06
Corrected the first parameter to the check_scope call
in process_members.
The two elements of @tuple in 'const' processing were
the wrong way round, corrected that.
Overhauled the explanation of the Symbol Tree which was
buggy in itself.
0.0 1998/06/29
First public release, alpha stage
Things known to need thought: forward declarations,
generation of Typecode information. The symbol trees
generated are pretty much nude'n'crude -- what you see in
IDL is what you get in ST. What kind of decorative info do
we need? Any ideas/discussion, please email to addr. above
-.- Mar 1998
Start of development
The first version of this worked as a simple one-pass
text filter until I attempted implementing interface
references. In order to generate a "Ref" for those (in
Ada), it is necessary to distinguish them from other
types (the Ada type name is different from the IDL type
name.) This single requirement led to the abandonment
of the direct text-to-text transformation approach.
Instead, IDL source text is first translated into a
target language independent intermediate representation
(the symbol tree), and the target language text is
then generated from that intermediate representation.