OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 14 Декабрь, 2019 22:42

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Вопрос по EBNF
СообщениеДобавлено: Вторник, 27 Апрель, 2010 01:23 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
В EBNF описании синтаксиса оберона имеем следующее:
Код:
Module        = MODULE ident ";" [ImportList] DeclSeq [BEGIN StatementSeq] END ident ".".

Я правильно понимаю, что это описание синтаксиса не запрещает например такой исходник:
Код:
MODULE A;
END B.

Т.е. о том что ident'ы должны быть одними и теми же мы просто описываем словами в спецификации языка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по EBNF
СообщениеДобавлено: Вторник, 27 Апрель, 2010 05:42 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Alexey Veselovsky писал(а):
Я правильно понимаю, что это описание синтаксиса не запрещает например такой исходник:
Да. Правильно.

То что ident'ы должны быть одинаковыми - это семантическое правило, а РБНФ описывает только синтаксис.

При разборе в текст обычно вставляются семантические процедуры, которые контролируют выполнение семантических правил.

Считается, что семантика, в отличие от синтаксиса, слабо формализуется. Поэтому аналогичных "семантических форм" не существует.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по EBNF
СообщениеДобавлено: Вторник, 27 Апрель, 2010 08:15 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1214
igor писал(а):
То что ident'ы должны быть одинаковыми - это семантическое правило, а РБНФ описывает только синтаксис.


Нет, это синтаксическое правило. Просто синтаксис оберона, да и большинства языков, не описать КС-грамматикой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по EBNF
СообщениеДобавлено: Вторник, 27 Апрель, 2010 08:17 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Alexey Veselovsky писал(а):
Есть вроде как более мощные нотации которые позволяют описывать многое. Например грамматика ван Вейнгаардена.


Конечно, есть - и каждый сам её может придумать :)
Нагрузите БНФ-правила дополнительными проверяющими функциями - и делов-то.
Как это делается в любом компиляторе компиляторов.

Илья Ермаков: по техническим причинам повреждено сообщение. Текст про проверяющие функции принадлежит мне, Алексей в этом сообщении сказал то, что стоит в цитате.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по EBNF
СообщениеДобавлено: Вторник, 27 Апрель, 2010 08:27 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 866
Откуда: Казань
Еще в Обероне можно писать так:
Код:
MODULE A
  CONST
  TYPE
  VAR
  PROCEDURE P;
  END P;
END A.

То есть можно еще писать процедуры без BEGIN, и секции CONST TYPE VAR без описаний переменных.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по EBNF
СообщениеДобавлено: Вторник, 27 Апрель, 2010 08:48 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Trurl писал(а):
igor писал(а):
То что ident'ы должны быть одинаковыми - это семантическое правило, а РБНФ описывает только синтаксис.


Нет, это синтаксическое правило. Просто синтаксис оберона, да и большинства языков, не описать КС-грамматикой.
Разве? Синтаксис не апеллирует к смыслу, по определению.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по EBNF
СообщениеДобавлено: Вторник, 27 Апрель, 2010 08:50 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Rifat писал(а):
Еще в Обероне можно писать так:
Код:
MODULE A
  CONST
  TYPE
  VAR
  PROCEDURE P;
  END P;
END A.

То есть можно еще писать процедуры без BEGIN, и секции CONST TYPE VAR без описаний переменных.

Только вместе с BEGIN'ом мы выплескиваем и всю пачку statement'ов что в процедуре содержится, зато локальных переменных можем понаписать, это да.

Кстати, это подозрительно напоминает Forward Declaration :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по EBNF
СообщениеДобавлено: Вторник, 27 Апрель, 2010 10:30 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2318
Откуда: Россия, Томск
Alexey Veselovsky писал(а):
Кстати, это подозрительно напоминает Forward Declaration :-)
Процедура без тела иногда используется для объявления абстрактного метода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по EBNF
СообщениеДобавлено: Вторник, 27 Апрель, 2010 22:52 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
igor писал(а):
Разве? Синтаксис не апеллирует к смыслу, по определению.
Совпадение имён проверяется парсером. Правила проверяемые парсером - синтаксические (в каком-то общем смысле).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по EBNF
СообщениеДобавлено: Среда, 28 Апрель, 2010 05:47 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Парсер выполняет грамматический разбор. Грамматика включает в себя и синтаксис, и семантику.

К счастью, синтаксис языков программирования - это вполне определённое понятие. Считаю, что обобщение этого термина в данном случае неуместно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по EBNF
СообщениеДобавлено: Среда, 28 Апрель, 2010 06:56 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8215
Откуда: Троицк, Москва
Вообще говоря, грамматика вещь больше синтаксическая, хотя жесткой границы нет и бывают разные исключения (отчего, конечно, диспуты).

Например, "взять шуруп", но "взять поциента".
Можно, конечно, мыслить себе список одушевленных существительных как существующий и фиксированный (как список ключевых слов), но тут зыбко.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB