diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 75 |
1 files changed, 75 insertions, 0 deletions
@@ -0,0 +1,75 @@ + libIDL README + ~~~~~~~~~~~~~ + +Introduction +~~~~~~~~~~~~ + +libIDL is a library licensed under the GNU LGPL for creating trees of +CORBA Interface Definition Language (IDL) files, which is a +specification for defining portable interfaces. libIDL was initially +written for ORBit (the ORB from the GNOME project, and the primary +means of libIDL distribution). However, the functionality was +designed to be as reusable and portable as possible. + +It is written in C, and the aim is to retain the ability to compile it +on a system with a standard C compiler. Preprocessed parser files are +included so you are not forced to rebuild the parser, however an +effort is made to keep the parser and lexer compatible with standard +Unix yacc. Currently, flex is required to generate the lexical +scanner. + +With libIDL, you can parse an IDL file which will be automatically run +through the C preprocessor (on systems with one available), and have +detailed error and warning messages displayed. On a compilation +without errors, the tree is returned to the custom application. +libIDL performs compilation phases from lexical analysis to nearly +full semantic analysis with some optimizations, and will attempt to +generate meaningful errors and warnings for invalid or deprecated IDL. + +libIDL exports functionality used to generate detailed conforming +error and warning messages in gcc-like format, and also comes with a +default backend to generate IDL into a file or string (useful for +customized messages or comments in the output). The IDL backend is +complete enough that most generated IDL can be reparsed by libIDL +without errors. libIDL returns separate syntax and namespace trees, +and includes functionality to hide syntactical information from the +primary tree, while keeping it accessible through the namespace for +type information and name lookup. + +Optional extensions to standard IDL can be enabled using parse flags. +These include node properties, embedded code fragments, and XPIDL. +Nodes can also have declarations tags which assign particular +attributions to certain IDL constructs to further facilitate custom +applications. + +If you are upgrading to a new version, please see the NEWS file for +any changes which may affect code. + + +Emacs Syntax Highlighting for IDL Code +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you are using Emacs 20.x and do not have decent syntax highlighting +in your IDL mode, you can use the following Emacs lisp to add +IDL-specific highlighting using font-lock mode: + +(font-lock-add-keywords + 'idl-mode + `(("^#[ ]*error[ ]+\\(.+\\)" 1 'font-lock-warning-face prepend) + ("^#[ ]*\\(include\\)[ ]+\\(<[^>\"\n]*>?\\)" 2 'font-lock-string-face) + ("^#[ ]*define[ ]+\\(\\sw+\\)(" 1 'font-lock-function-name-face) + ("^#[ ]*\\(elif\\|if\\)\\>" + ("\\<\\(defined\\)\\>[ ]*(?\\(\\sw+\\)?" nil nil + (1 'font-lock-reference-face) + (2 'font-lock-variable-name-face nil t))) + ("\\(__declspec\\)[ ]*(\\([^)]+\\))" + (1 'font-lock-reference-face) + (2 'font-lock-variable-name-face)) + ("^#[ ]*\\(\\sw+\\)\\>[ ]*\\(\\sw+\\)?" + (1 'font-lock-reference-face) + (2 'font-lock-variable-name-face nil t)) + ("\\<\\(raises\\)\\>" 1 'font-lock-keyword-face) + ("[ ]*\\([A-Za-z][A-Za-z0-9_]*\\)[ ]*(" 1 'font-lock-function-name-face) + ("\\<\\(any\\|boolean\\|char\\|const\\|double\\|enum\\|fixed\\|float\\|interface\\|long\\|module\\|native\\|octet\\|Object\\|sequence\\|short\\|string\\|struct\\|unsigned\\|union\\|void\\|wchar\\|wstring\\)\\>" 1 'font-lock-type-face) + ("\\<\\(attribute\\|case\\|context\\|default\\|exception\\|FALSE\\|in\\|inout\\|oneway\\|out\\|readonly\\|switch\\|TRUE\\|typedef\\)\\>" 1 'font-lock-keyword-face)) 'set) +(add-hook 'idl-mode-hook '(lambda () (font-lock-mode 1))) |