File: README

package info (click to toggle)
orbit 0.3.0-2
  • links: PTS
  • area: main
  • in suites: slink
  • size: 5,628 kB
  • ctags: 7,089
  • sloc: ansic: 89,906; sh: 5,226; yacc: 1,292; makefile: 381; lex: 223
file content (53 lines) | stat: -rw-r--r-- 2,646 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Introduction
~~~~~~~~~~~~

libIDL is a small library for creating parse trees of CORBA v2.2
compliant Interface Definition Language (IDL) files, which is a
specification for defining interfaces which can be used between
different CORBA implementations.  Although the primary use of libIDL
will be for a tool such as an IDL compiler, future uses may include
use in an interface repository or interface browsing tool.  Since
libIDL uses the Unix yacc and lex tools, the resulting library is not
reentrant and is not thread-safe.  However, the yacc and lex functions
are hidden so that it does not conflict with other yacc parsers or lex
scanners.


What it Does
~~~~~~~~~~~~~

By calling IDL_parse_filename, libIDL performs compilation phases from
lexical analysis to nearly full semantic analysis and some
optimization, and will attempt to generate meaningful errors and
warnings for invalid or deprecated features, which can be redirected
using callbacks.  libIDL supports some extensions to standard IDL,
including declarations spec tags which can assign attributions to
certain IDL constructs.


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)))