ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Что такое "грамматика"

Сообщений 1 страница 2 из 2

1

как описать структуру на Кумире

Код:
исп грамматика
   таб<терминальный_символ> терминальные_символы
   таб<имя_правила> правила_грамматики
   таб<правило_грамматики> формулы_комбинирования
   таб<& имя_правила> стартовые_правила
кон_исп

исп терминальный_символ : часть_грамматики
   цел номер_символа_по_стандарту_Юникод
кон_исп

исп правило_грамматики
   таб<& часть_грамматики> компоненты_правила
   таб<операция_грамматики> операции_над_компонентами
   & имя_правила имя
кон_исп

исп имя_правила : часть_грамматики
   лит имя
кон_исп

договор часть_грамматики
кон_договор

исп операция_грамматики
   лит символьное_представление_операции
   таб<& правило> операнды
кон_исп

: это наследование интерфейса
<> это шаблоны (template), параметризация типа
& это иммутабельная borrow-ссылка (ссылка-заём)
_ это пробел, склеивающий слова идентификатора между собой
"договор" это замена ключевому слову "interface"

Отредактировано Лис (2017-04-15 12:07:47)

0

2

Лис написал(а):

часть_грамматики

Наверное это был неудачный выбор имени. Правила тоже являются частью грамматики. И стартовый символ - тоже часть грамматики. Но почему-то наследование прописано только для терминальных символов и для нетерминальных символов. Правильнее было бы назвать эту сущность "символ_грамматики".

Кроме того, терминальные символы могут быть не только символами Unicode, они ещё могут быть собраны из регулярных выражений. То есть надо преобразовать "исп" в "договор" и добавить несколько исполнителей:
- для пустого символа
- для конца файла (?)
- для начала файла (???)
- для регулярного выражения (например как "число")
- для строки (цепочки символов)

строки можно хранить вместе, если они все одинаковые (например для ключевых слов).

Отредактировано Лис (2017-07-30 07:31:48)

0