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++.40
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.
These should logically be
named extern-open
, extern-close
and inextern
, but
that isn’t the case for historical reasons.