OberonCore
https://forum.oberoncore.ru/

Вопрос по EBNF
https://forum.oberoncore.ru/viewtopic.php?f=61&t=2601
Страница 1 из 1

Автор:  Alexey Veselovsky [ Вторник, 27 Апрель, 2010 01:23 ]
Заголовок сообщения:  Вопрос по EBNF

В EBNF описании синтаксиса оберона имеем следующее:
Код:
Module        = MODULE ident ";" [ImportList] DeclSeq [BEGIN StatementSeq] END ident ".".

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

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

Автор:  igor [ Вторник, 27 Апрель, 2010 05:42 ]
Заголовок сообщения:  Re: Вопрос по EBNF

Alexey Veselovsky писал(а):
Я правильно понимаю, что это описание синтаксиса не запрещает например такой исходник:
Да. Правильно.

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

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

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

Автор:  Trurl [ Вторник, 27 Апрель, 2010 08:15 ]
Заголовок сообщения:  Re: Вопрос по EBNF

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


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

Автор:  Alexey Veselovsky [ Вторник, 27 Апрель, 2010 08:17 ]
Заголовок сообщения:  Re: Вопрос по EBNF

Alexey Veselovsky писал(а):
Есть вроде как более мощные нотации которые позволяют описывать многое. Например грамматика ван Вейнгаардена.


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

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

Автор:  Rifat [ Вторник, 27 Апрель, 2010 08:27 ]
Заголовок сообщения:  Re: Вопрос по EBNF

Еще в Обероне можно писать так:
Код:
MODULE A
  CONST
  TYPE
  VAR
  PROCEDURE P;
  END P;
END A.

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

Автор:  igor [ Вторник, 27 Апрель, 2010 08:48 ]
Заголовок сообщения:  Re: Вопрос по EBNF

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


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

Автор:  Alexey Veselovsky [ Вторник, 27 Апрель, 2010 08:50 ]
Заголовок сообщения:  Re: Вопрос по EBNF

Rifat писал(а):
Еще в Обероне можно писать так:
Код:
MODULE A
  CONST
  TYPE
  VAR
  PROCEDURE P;
  END P;
END A.

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

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

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

Автор:  Александр Ильин [ Вторник, 27 Апрель, 2010 10:30 ]
Заголовок сообщения:  Re: Вопрос по EBNF

Alexey Veselovsky писал(а):
Кстати, это подозрительно напоминает Forward Declaration :-)
Процедура без тела иногда используется для объявления абстрактного метода.

Автор:  Сергей Губанов [ Вторник, 27 Апрель, 2010 22:52 ]
Заголовок сообщения:  Re: Вопрос по EBNF

igor писал(а):
Разве? Синтаксис не апеллирует к смыслу, по определению.
Совпадение имён проверяется парсером. Правила проверяемые парсером - синтаксические (в каком-то общем смысле).

Автор:  igor [ Среда, 28 Апрель, 2010 05:47 ]
Заголовок сообщения:  Re: Вопрос по EBNF

Парсер выполняет грамматический разбор. Грамматика включает в себя и синтаксис, и семантику.

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

Автор:  Info21 [ Среда, 28 Апрель, 2010 06:56 ]
Заголовок сообщения:  Re: Вопрос по EBNF

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

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/