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

1. <object>

1.1. <options>

1.1.1. выражения связанные с объявлением объекта, аргументы функций, параметры наследования и т.п.

1.2. <code>

1.2.1. лексически расположенные объекты, вызовы

1.3. <type>

1.3.1. возможные дети

1.3.1.1. <object>

1.3.1.2. <reference>

1.3.1.3. <atom>

1.3.2. примечание

1.3.2.1. вся информация связанная с типом объекта

1.4. <meta>

1.5. атрибуты

1.5.1. @isExecutable

1.5.1.1. примеры: { , function

1.5.2. @isAbstract

1.5.2.1. примеры: namespace, class, template

2. <reference>

2.1. <meta>

2.2. <code>

2.2.1. @target_ID

3. <atom>

3.1. <meta>

3.2. примеры

3.2.1. "строка"

3.2.2. 124.56

3.2.3. встроенные в язык типы и значения (bool,void, NULL)

3.3. примечание

3.3.1. основное отличие atom, что в отличии от reference в этом месте кода УЖЕ доступно его полное определение, не требуется дальнейшее разрешение символа, не нужен lookup по коду при следующих проходах

4. <flow>

4.1. <options>

4.1.1. выражения связанные с условием

4.2. <code>

4.2.1. ветвь выполнения #1

4.2.2. ...

4.2.3. ветвь выполнения #N

4.3. <meta>

4.4. атрибуты

4.4.1. @isDirectTransfer

4.4.1.1. во многих языках есть операторы непосредственного перехода на заданные фрагменты программы типичные примеры: jnz, goto, func(); переход, isDirectTransfer - его признак, в случае его наличия все элементы <code>: атомы, референсы, объекты являются не инструкциями а информацией по цели перехода, названия функций, смещения и т.п.

5. <expression>

5.1. <options>

5.1.1. элементы, которые являются источниками модификации

5.2. <code>

5.2.1. элементы, которые являются приемниками модификации

5.3. <meta>

6. <macros>

6.1. <meta>

6.2. атрибуты

6.2.1. @isAnnotation

6.2.1.1. комментарй или нет

6.2.2. @isOption

6.2.2.1. признак того, что это опция обработки (pragma, warning, display)

6.2.3. @isSubmodule

6.2.3.1. признак того что является элементов определяющим модульность (uses, import, возможно даже include в случае отсутствия препроцессора)

6.2.4. @isGeneric

6.2.4.1. различные определения используемые в обобщенным программировании: define, typedef и т.п. могут быть обработаны и ранее, на этапе препроцессора

7. общее у всех элементов

7.1. неймспейсы

7.1.1. code_common: http://s3r.ru/ns/code_common

7.1.1.1. дефолтовый неймспейс для всего представления кода

7.1.2. code_specific http://s3r/ns/cpp,java,etc

7.1.2.1. неймспейсы связанные с содержимым <meta> у всех конкретных языков программирования, возможно имеет смысл делать для целых группы языков, например ns_ecma

7.1.3. code_analysis http://s3r.ru/ns/code_analysis

7.1.3.1. неймспейсы связанные с анализом кода, информация о том, что распарсено/нераспарсено, с семантикой элементов всё это тоже хранится в <meta>

7.2. атрибуты

7.2.1. id

7.2.1.1. идентификатор объекта, числовое значение, результат работы последующих проходов анализа, элемент необязательный, в 1-ом представлении может отсутствовать

7.2.2. name

7.2.2.1. имя, идентификатор объекта

7.2.3. position(x,y)

7.2.3.1. позиция элемента в коде

7.3. дочерние элементы

7.3.1. <options>

7.3.1.1. аргументы, параметры элемента

7.3.2. <code>

7.3.2.1. основное содержимое элемента

7.3.3. <meta>

7.3.3.1. метаданные элемента, как правило связанные с особенностью реализации в любых языках программирования

7.3.4. <source>

7.3.4.1. представление объекта в исходных текстах, является обязательным если не удалось распарсить этот элемент

8. <module>

8.1. <все виды элементов>

8.2. примеры

8.2.1. PASCAL: unit Unit1

8.2.2. C: _asm {