1. <flow>
1.1. <options>
1.1.1. выражения связанные с условием
1.2. <code>
1.2.1. ветвь выполнения #1
1.2.2. ...
1.2.3. ветвь выполнения #N
1.3. <meta>
1.4. атрибуты
1.4.1. @isDirectTransfer
1.4.1.1. во многих языках есть операторы непосредственного перехода на заданные фрагменты программы типичные примеры: jnz, goto, func(); переход, isDirectTransfer - его признак, в случае его наличия все элементы <code>: атомы, референсы, объекты являются не инструкциями а информацией по цели перехода, названия функций, смещения и т.п.
2. <expression>
2.1. <options>
2.1.1. элементы, которые являются источниками модификации
2.2. <code>
2.2.1. элементы, которые являются приемниками модификации
2.3. <meta>
3. <macros>
3.1. <meta>
3.2. атрибуты
3.2.1. @isAnnotation
3.2.1.1. комментарй или нет
3.2.2. @isOption
3.2.2.1. признак того, что это опция обработки (pragma, warning, display)
3.2.3. @isSubmodule
3.2.3.1. признак того что является элементов определяющим модульность (uses, import, возможно даже include в случае отсутствия препроцессора)
3.2.4. @isGeneric
3.2.4.1. различные определения используемые в обобщенным программировании: define, typedef и т.п. могут быть обработаны и ранее, на этапе препроцессора
4. общее у всех элементов
4.1. неймспейсы
4.1.1. code_common: http://s3r.ru/ns/code_common
4.1.1.1. дефолтовый неймспейс для всего представления кода
4.1.2. code_specific http://s3r/ns/cpp,java,etc
4.1.2.1. неймспейсы связанные с содержимым <meta> у всех конкретных языков программирования, возможно имеет смысл делать для целых группы языков, например ns_ecma
4.1.3. code_analysis http://s3r.ru/ns/code_analysis
4.1.3.1. неймспейсы связанные с анализом кода, информация о том, что распарсено/нераспарсено, с семантикой элементов всё это тоже хранится в <meta>
4.2. атрибуты
4.2.1. id
4.2.1.1. идентификатор объекта, числовое значение, результат работы последующих проходов анализа, элемент необязательный, в 1-ом представлении может отсутствовать
4.2.2. name
4.2.2.1. имя, идентификатор объекта
4.2.3. position(x,y)
4.2.3.1. позиция элемента в коде
4.3. дочерние элементы
4.3.1. <options>
4.3.1.1. аргументы, параметры элемента
4.3.2. <code>
4.3.2.1. основное содержимое элемента
4.3.3. <meta>
4.3.3.1. метаданные элемента, как правило связанные с особенностью реализации в любых языках программирования
4.3.4. <source>
4.3.4.1. представление объекта в исходных текстах, является обязательным если не удалось распарсить этот элемент
5. <object>
5.1. <options>
5.1.1. выражения связанные с объявлением объекта, аргументы функций, параметры наследования и т.п.
5.2. <code>
5.2.1. лексически расположенные объекты, вызовы
5.3. <type>
5.3.1. возможные дети
5.3.1.1. <object>
5.3.1.2. <reference>
5.3.1.3. <atom>
5.3.2. примечание
5.3.2.1. вся информация связанная с типом объекта
5.4. <meta>
5.5. атрибуты
5.5.1. @isExecutable
5.5.1.1. примеры: { , function
5.5.2. @isAbstract
5.5.2.1. примеры: namespace, class, template
6. <reference>
6.1. <meta>
6.2. <code>
6.2.1. @target_ID
7. <atom>
7.1. <meta>
7.2. примеры
7.2.1. "строка"
7.2.2. 124.56
7.2.3. встроенные в язык типы и значения (bool,void, NULL)
7.3. примечание
7.3.1. основное отличие atom, что в отличии от reference в этом месте кода УЖЕ доступно его полное определение, не требуется дальнейшее разрешение символа, не нужен lookup по коду при следующих проходах
8. <module>
8.1. <все виды элементов>
8.2. примеры
8.2.1. PASCAL: unit Unit1
8.2.2. C: _asm {