Get Started. It's Free
or sign up with your email address
<module> by Mind Map: <module>

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 {