Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
cg_posobie6_(Vlasenko).doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
550.4 Кб
Скачать

Синтаксис cgif

Далее в виде формул РБНФ описываются с соответствующими комментариями синтаксические категории CGIF.

1. Концептуальный граф («КГ»)

«КГ» ::= («Концепт» | «Отношение» | «Актор» |

«Специальный контекст» | «Комментарий»)*

2. Концепт («Концепт»)

«Концепт» ::= "[" «Тип»(1)? {«Кореферентные связи»?, «Референт»?} «Комментарий»? "]"

Примечание: Здесь и далее предложения вида «Категория»(Х), где Х задается либо идентификатором, либо числовой константой, будут указывать на параметризованные синтаксические категории. Во всех подобных случаях параметром считается валентность отношения (см. 1.1) или λ-выражения (см. 1.2), определяющего тип (т. е. размерность сигнатуры типа). Так, в приведенной выше формуле лексема «Тип»(1) обозначает определение типа с размерностью сигнатуры, равной единице.

3. Тип («Тип»)

«Тип»(N) ::= «Метка типа»(N) | «Выражение типа»(N)

«Метка типа»(N) ::= «Идентификатор»

«Выражение типа»(N) ::= «λ-выражение»(N) |

"(" «Дизъюнкция типов»(N) ")"

«Дизъюнкция типов»(N) ::= «Конъюнкция типов»(N)

( "|" «Конъюнкция типов»)*

«Конъюнкция типов»(N) ::= «Терм типа»(N) ("&"

«Терм типа»(N))*

«Терм типа»(N) ::= "~"? «Тип»(N)

«λ-выражение»(N) ::= "(" "lambda" «Сигнатура»(N) «КГ» ")"

«Сигнатура»(N) ::= "("Формальный параметр»

(","«Формальный параметр»)*)? ")"

«Формальный параметр» ::= «Тип»(1) («Определяющая метка»)?

«Определяющая метка» ::= "*"«Идентификатор»

4. Кореферентные связи («Кореферентные связи»)

«Кореферентная связь» ::= «Определяющая метка» |

«Связанная метка»*

«Связанная метка» :: = "?"«Идентификатор»

5. Референт («Референт»)

«Референт» ::= ":"Обозначение»?, «Дескриптор»?}

«Обозначение» ::= «Литерал» | «Локатор» | «Квантификатор»

«Литерал» ::= «Число» | «Текст»

«Локатор» ::= «Имя» | «Индивидуальный маркер» | «Индекс»

«Индивидуальный маркер» ::= "#" «Беззнаковое целое»

«Индекс» ::= "#" «Идентификатор»?

«Квантификатор» ::= "@" («Беззнаковое целое» |

«Идентификатор» ("{" «Дуга»* "}")?)

«Дуга» ::= «Концепт» | «Связанная метка»

Примечание: Как отмечалось в 1.3, в различных версиях допускаются некоторые отклонения от синтаксических формул, приведенных выше для категорий «Обозначение» и «Квантификатор».

«Дескриптор» ::= «Структура» | «КГ»

«Структура» ::= ("%"«Идентификатор»)? ( ( "{" «Дуга»* "}" ) |

( "<" «Дуга»* ">" ) )

6. Концептуальное отношение («Отношение»)

«Отношение» ::= "(" «Тип»(N) «Дуга»* «Комментарий»? ")"

7. Актор («Актор»)

«Актор» ::= "<" «Тип»(N) «Дуга»* "|" «Дуга»* «Комментарий»? ">"

Примечание: При описании акторов терминальный символ «|» является разделителем списков входных (слева от разделителя) и выходных (справа от разделителя) дуг. Следует отметить, что в новых редакциях CGIF в определениях акторов предполагается заменить треугольные скобки на обычные круглые (такие же, как и в обычных отношениях).

8. Специальный контекст («Специальный контекст»)

«Специальный контекст» ::= «Отрицание» |

"[" «Метка специального контекста» ":"? «КГ» "]"

«Отрицание» ::= "~[" «КГ» "]"

«Метка специального контекста» ::=

"if" | "then" | "either" | "or" | "sc"

Примечание: Приведенные в п. 8 формулы не описывают в явной форме ограничений на требуемый порядок вложения специальных контекстов. Допустимый порядок вложений для разрешенных пар контекстов {if, then} и {either, or} может быть задан следующими формулами:

«Контекст ЕСЛИ-ТО» ::= "[" "If" «КГ» "[" "Then" «КГ» "]" "]"

«Контекст ЛИБО-ЛИБО» ::= "[" "Either" «КГ»

("[" "Or" «КГ» "]")* "]"

9. Иерархия типов концептов («Иерархия типов концептов»)

«Иерархия типов концептов» :: = "[" "TypeHierarchy:"

Определение типа концептов» |

«Порядок типов концептов»)*"]"

«Определение типа концептов» ::= "(" "Def"

"[" "TypeLabel:" "\"" «Метка типа» "\"" "]"

"[" "LambdaExpression:" "\"" «λ-выражение» "\"" "]" ")"

Примечание: Категории «Метка типа» и «λ-выражение» были определены в п. 3 данного списка формул.

«Порядок типов концептов» ::= "(" ("EQ" | "GT" | "LT")

"[" "TypeLabel:" "\"" «Метка типа» "\"" "]"

"[" "TypeLabel:" "\"" «Метка типа» "\"" "]" ")"

10. Иерархия типов отношений («Иерархия типов отношений»)

«Иерархия типов отношений» ::= "[" "RelationHierarchy:"

Определение типа отношений» | «Описание валентности» |

«Порядок типов отношений»)* "]"

«Определение типа отношений» ::= "(" "Def"

"[" "RelationLabel:" "\"" «Метка типа» "\"" "]"

"[" "LambdaExpression:" "\"" «λ-выражение» "\"" "]" ")"

«Описание валентности» ::= "(" "Has"

"[" "RelationLabel:" "\"" «Метка типа» "\"" "]"

"[" "Valence:" «Беззнаковое целое» "]" ")"

«Порядок типов отношений» ::= "(" ("EQ" | "GT" | "LT")

"[" "RelationLabel:" "\"" «Метка типа» "\"" "]"

"[" "RelationLabel:" "\"" «Метка типа» "\"" "]" ")"

Примечание: При описании валентностей допускается использование базовых структур CGIF (см. 1.3). Например, строка:

(Has [RelationLabel @Col{"EQ", "GT", "LT", "Has"}] [Valence 2])

будет интерпретироваться следующим образом: «каждый из четырех перечисленных в коллекции типов отношений имеет валентность, равную двум».

В заключение следует отметить, что описанная в 1.6 синтаксическая модель CGIF в настоящий момент не имеет статуса стандарта ISO/IEC и находится в процессе доработки. Однако общая структура и базовые синтаксические категории CGIF будут сохранены и в последующих редакциях соответствующих нормативных документов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]