А что это вообще такое?

       

Определение пользовательского класса и операторов



Файл в таком формате определяет пользовательский класс:

@CLASS
имя_класса

#необязательно
@USE
файл_с_родительским классом  

# необязательно
@BASE
имя_родительского_класса   


# так рекомендуется называть метод-конструктор класса
@create[параметры]



# далее следуют определения методов класса
@method1[параметры]


Модуль можно подключить (см. «Подключение модулей») к произвольному файлу - там появится возможность использования определенного здесь класса.

Если не указать @CLASS, файл определит ряд дополнительных операторов.

Если определен метод…
@auto[]


…он будет выполнен автоматически при загрузке класса как статический метод (так называемый статический конструктор). Используется для инициализации статических полей (переменных) класса.
Примечание: результат работы метода игнорируется - никуда не попадает.

У метода auto может быть объявлен параметр:
@auto[filespec]

В этом параметре Parser передаст полное имя файла, содержащего метод.

В Parser создаваемые классы наследуют методы классов, от которых были унаследованы. Унаследованные методы можно переопределить.

В том случае, когда в качестве родительского класса выступает другой пользовательский класс, необходимо подключить модуль, в котором он находится, а также объявить класс базовым (@BASE).

Для того, чтобы пользоваться методами и полями родительских классов, необходимо использовать следующие конструкции:

^класс:метод[параметры] - вызов метода родительского класса (примечание: хотя такой синтаксис вызова метода и похож на синтаксис вызова статического метода, фактически, в случае динамического метода, происходит динамический вызов метода родительского класса), для обращения к своему ближайшему родительскому классу (базовому классу) можно использовать конструкции ^BASE::конструктор[параметры] и ^BASE:метод[параметры].









Содержание раздела