I will give a simple example on how the idea of modules and submodules
might be developed, which illustrates the principle I saw of a sequence of
logical substructures with its own local rules for executing the code. I
have attached LaTeX2e code, which is "quickanddirty" in order to keep it
small.
So, I define a module "math" with a submodule "symbol". The module math
has commands phi and varphi which are named math/phi and math/varphi, and
the submodule symbol has the command phi which is named math/symbol/phi. I
then define an user command <...> for invoking those module and submodule
commands, that is, <math/phi>, <math/varphi>, and <math/symbol/phi>.
The command <...> does not merely execute what it encloses, but parses it
and passes it to the correct module, which then determines how to react to
it. So the module math has a command named \math/ which takes one argument
which determines how to react to the argument. So <math/phi>,
<math/varphi>, and <math/symbol/phi> will be parsed to \math/ taking the
argument {phi}, {varphi}, and {symbol/phi} respectively. (If what <...>
encloses does not contain a slash /, then in the version I wrote here, it
is merely executed as a command. So <phi> executes \phi.)
Then the command \math/ as it is defined here parses its argument too see
if it is a command or a submodule: If it is a command (no slash in it),
then it merely executes it. So \math/{phi} executes \math/phi, etc. But in
the submodule case (a slash in the name), \math/{symbol/phi} translates
into \math/symbol/{phi}; it is then up to the submodule command
\math/symbol/ to decide how to react.
I have then given two versions of \math/symbol/, one in which
\math/symbol/{#1} expands to \math/symbol/#1 and another where this expands
to \math/var#1. So in the first case, \math/symbol/{phi} becomes
\math/symbol/phi, and in the other case it becomes \math/varphi.
This then illustrates the principle that even though there is a generic
rule for what a module or submodule should execute, this can easily be
overridden by a local definition.
 Module Example 
\documentclass{minimal}
\catcode`\/=11
\def\newmodule#1{%
\expandafter\def\csname#1/\endcsname##1{\parseB{#1}##1>}}
% Define an example module "math" with submodule "symbol"
\newmodule{math} % Same as \def\math/#1{\parseB{math}#1>}
% Command #1 of submodule math/symbol executes \math/symbol/#1
\def\math/symbol/#1{\csname math/symbol/#1\endcsname}
% Command #1 of submodule math/symbol executes \math/var#1
%\def\math/symbol/#1{\csname math/var#1\endcsname}
\let\math/phi\phi % Command phi of module math
\let\math/varphi\varphi % Command varphi of module math
\let\math/symbol/phi\phi % Command phi of submodule math/symbol
\catcode`\/=12
\catcode`\<=\active
% User command for invoking module commands.
\def<#1>{\parseA#1>}
% Parse for slash in argument.
\def\parseA#1#2#3>{
\ifx#3\relax\relax%
\def\tempA{\csname#1#2\endcsname}% No /; command #1#2.
\else\ifx#2/%
\def\tempA{\csname#1/\endcsname{#3}}% /, command #3 in module #1/.
\else
\def\tempA{\parseA{#1#2}#3>}%
\fi\fi%
\tempA%
}
% Same as parseA, but within a module #1.
\def\parseB#1#2#3#4>{
\ifx#4\relax\relax%
\def\tempA{\csname#1/#2#3\endcsname}% No /; command #2#3 in module #1/.
\else\ifx#3/%
\def\tempA{\csname#1/#2/\endcsname{#4}}% A /, so submodule #1/#2 checks #4
\else
\def\tempA{\parseB{#1}{#2#3}#4>}%
\fi\fi%
\tempA%
}
\begin{document}
Command ``phi'': $<phi>$.
Command ``phi'' of module ``math'': $<math/phi>$.
Command ``phi'' of submodule ``symbol'' of module ``math'':
$<math/symbol/phi>$.
\end{document}
 End of Module Example 
