First we consider a simple example:
module a { interface foo {};}
The scoped symbol of the module is:a. Thus, the home package of this symbol is:keyword and the name of the symbol is the stringA. The scoped symbol of the interface is the symbola:foo. Thus, the name of the symbol is the stringFOO, and the home package of the symbol is the package whose name is the stringA.
module a {
interface outer {
struct inner {
in long member;
};
};
}
Here the scoped symbol for the module is:a, the scoped symbol for the interface isa:outer, and the scoped symbol forstruct isa:outer/inner.
module a{
module b{
interface c{
struct d{
long foo;
};
};
};
}
The scoped symbol for thestruct isa/b:c/d. The scoped symbol for thestruct member isa/b:c/d/foo.