Технические характеристики
Согласно ISO / IEC 25436: 2006 (E) и недавно добавленным языковым конструкциям:
Термины на основе синтаксиса
Локальная переменная может быть любой из следующих:
- идентификатор, объявленный в части Local_declarations (тела функции, включая встроенные агенты)
- предопределенная сущность
Result
Формальный аргумент:
- идентификатор для представления информации, передаваемой вызывающими абонентами
Фактический аргумент:
- выражение в конкретном вызове процедуры
Атрибут переменной - это объявление функции, удовлетворяющее всем следующим требованиям:
- нет никаких формальных аргументов
- есть метка запроса (т.е. имеет тип)
- нет явного значения (т.е. это не константа)
- если есть тело, оно имеет вид атрибута
Постоянный атрибут - это объявление функции, удовлетворяющее всем следующим требованиям:
- нет никаких формальных аргументов
- есть метка запроса (т.е. имеет тип)
- есть явное значение
Коллективные условия
Переменная может быть любой из следующих:
- окончательное имя атрибута переменной
- локальная переменная (включая
Result
)
Сущность, доступная только для чтения, может быть любой из следующих:
- формальный аргумент
- локальный объект тестирования
- локальный курсор (в части итерации цикла)
- отдельный локальный (в отдельной_инструкции)
- постоянный атрибут
Current
Сущность может быть любой из следующих:
- переменная
- объект только для чтения
Запрос может быть любым из следующего:
Т.е. запрос - это функция, которая имеет тип и может использоваться для получения значения во время выполнения.
Семантические термины
Поле:
- значение в прямом экземпляре неосновного типа, соответствующее атрибуту
Пример
class C feature
pi: REAL_32 = 3.14
double (x: LIST [INTEGER]): LIST [INTEGER]
local
r: ARRAYED_LIST [INTEGER]
do
create r.make (x.count)
across x as c loop
r.extend (c.item * 2)
end
Result := r
end
average_age: NATURAL
count: NATURAL
print_list (x: LIST [PERSON])
do
average_age := 0
count := 0
x.do_all (agent (p: PERSON)
do
if attached p.name as n then
io.put_string (n + ": " + p.age.out + "%N")
average_age := average_age + p.age
count := count + 1
end
end)
if count > 0 then
average_age := average_age // count
end
end
end
Термины на основе синтаксиса
Локальная переменная: r
, Result
.
Местный объект тестирования: n
.
Курсор локальный: c
.
Формальный аргумент: x
, p
.
Фактический аргумент: x.count
, 2
(это аргумент для умножения), c.item * 2
, ": "
(в конкатенации строк), p.age.out
, "%N"
, n + ": " + p.age.out + "%N"
, p.age
, 1
, 0
, count
(в делении).
Атрибут переменной: average_age
, count
.
Постоянный атрибут: pi
.
Коллективные условия
Переменная: r
, Result
, average_age
, count
.
Сущность только для чтения: pi
, n
, c
, x
, p
.
Сущность: pi
, r
, Result
, average_age
, count
, n
, c
, x
, p
.
Запрос: pi
, double
, average_age
, count
.
person
Alexander Kogtenkov
schedule
09.06.2017