ccmode: External Scope Symbols
10.2.6 External Scope Symbols
-----------------------------
External language definition blocks also have their own syntactic
symbols. In this example:
1: extern "C"
2: {
3: int thing_one( int );
4: int thing_two( double );
5: }
line 2 is given the ‘extern-lang-open’ syntax, while line 5 is given the
‘extern-lang-close’ syntax. The analysis for line 3 yields:
((inextern-lang) (topmost-intro 14))
where ‘inextern-lang’ is a modifier similar in purpose to ‘inclass’.
There are various other top level blocks like ‘extern’, and they are
all treated in the same way except that the symbols are named after the
keyword that introduces the block. E.g., C++ namespace blocks get the
three symbols ‘namespace-open’, ‘namespace-close’ and ‘innamespace’.
The currently recognized top level blocks are:
‘extern-lang-open’, ‘extern-lang-close’, ‘inextern-lang’
‘extern’ blocks in C and C++.(1)
‘namespace-open’, ‘namespace-close’, ‘innamespace’
‘namespace’ blocks in C++.
‘module-open’, ‘module-close’, ‘inmodule’
‘module’ blocks in CORBA IDL.
‘composition-open’, ‘composition-close’, ‘incomposition’
‘composition’ blocks in CORBA CIDL.
---------- Footnotes ----------
(1) These should logically be named ‘extern-open’, ‘extern-close’ and
‘inextern’, but that isn’t the case for historical reasons.