OberonCore
https://forum.oberoncore.ru/

Синтаксис КП
https://forum.oberoncore.ru/viewtopic.php?f=29&t=5257
Страница 2 из 3

Автор:  id_ler [ Среда, 26 Ноябрь, 2014 13:59 ]
Заголовок сообщения:  Re: Синтаксис КП

snuk писал(а):
Приветствую ваше сообщество. Начал разбираться с КП и ББ, вроде бы и суть понятна и теория, и читая Вирта так же понимаю о чем речь, но я никак не могу найти внятный синтаксис к языку, по этой причине не понимаю как вообще начать писать что либо на нем. Нигде не могу найти даже описания что значит ":=". И уж тем более нигде нету ничего о MOD.

Запускаете BlackBox, жмете клавишу F1, в строке поиска вводите := или MOD, в открывшемся списке находите Docu/CP-Lang.odc или Docu/CP-New.odc, прочитываете абзацы, нажимая F3.

Когда ищете MOD, то набирайте с пробелом, чтобы не искать MODULE.

Автор:  Trurl [ Вторник, 15 Январь, 2019 09:08 ]
Заголовок сообщения:  Re: Синтаксис КП

А почему n := 10MOD 3 нормально, а n := 10DIV 3 -ошибка?

Автор:  Rifat [ Вторник, 15 Январь, 2019 09:35 ]
Заголовок сообщения:  Re: Синтаксис КП

Trurl писал(а):
А почему n := 10MOD 3 нормально, а n := 10DIV 3 -ошибка?

Формат вещественных чисел может выражать экспоненту через E или через D, то есть 10D парсится как вещественное число, а затем идет неожиданная буква I вместо +, - или числа.

Автор:  Artyemov [ Вторник, 15 Январь, 2019 17:40 ]
Заголовок сообщения:  Re: Синтаксис КП

Строго бы и 10MOD должно быть ошибкой: не число(содержит не цифры, не E) и не идентификатор (начинается не с буквы).

Автор:  Trurl [ Вторник, 15 Январь, 2019 20:41 ]
Заголовок сообщения:  Re: Синтаксис КП

Rifat писал(а):
Формат вещественных чисел может выражать экспоненту через E или через D

Нет, вещественне дожны быть с точкой. Здесь шестнадцатеричные. Но вопрос надо было сформулировать по-дугому, не "почему", а "зачем".
Для единообразия надо в̶ы̶к̶р̶а̶с̶и̶т̶ь̶ либо сделать ошибочным 10MOD (10IN, 1TO и т.п), либо делать откат в 10DIV (10BY, 1END... ).
Я бы согласился с Artyemov, а то получаем такие забавные штуки:
Код:
FOR i:=0TO 10HBY 1 DO s[i]:=5XEND;

Автор:  Oleg N. Cher [ Вторник, 15 Январь, 2019 22:04 ]
Заголовок сообщения:  Re: Синтаксис КП

Trurl писал(а):
Я бы согласился с Artyemov
Коллеги, присоединяюсь. А то получается "назад к Фортрану".

Автор:  Trurl [ Среда, 16 Январь, 2019 15:15 ]
Заголовок сообщения:  Re: Синтаксис КП

Обнаружил все три возможных варианта:
  • догматический: Oxford Oberon принимает 1DIV и т.п.;
  • ревизионистский: XDS отвергает все в духе ISO Modula-2;
  • диалектический: большинство компиляторов следуют традициям ETH
.

Автор:  Info21 [ Среда, 16 Январь, 2019 15:39 ]
Заголовок сообщения:  Re: Синтаксис КП

Artyemov писал(а):
Строго бы и 10MOD должно быть ошибкой
Строгость -- мать надёжности.

Автор:  Trurl [ Среда, 16 Январь, 2019 20:15 ]
Заголовок сообщения:  Re: Синтаксис КП

Если под строгостью подразумевть точное следование грамматике из описания языка, то надо принимать 10DIV. Но не зря в модуле и в аде ввели обязательные разделители.

Кстати, в питоне и бейсике можно 1if, 2and, 3or, а вот 4else нельзя.

А в хаскеле тоже прикольно
Код:
f 1x=x
f 2x=x*x

Автор:  Info21 [ Четверг, 17 Январь, 2019 10:23 ]
Заголовок сообщения:  Re: Синтаксис КП

Под строгостью я понимаю строгость следования принципу DIVIDE ET IMPERA:

По умолчанию разделяем.
Если не разделяем, хотя это легко можно сделать, то надо доказывать, почему.

Автор:  Пётр Кушнир [ Четверг, 17 Январь, 2019 10:45 ]
Заголовок сообщения:  Re: Синтаксис КП

а в EBNF разделитель между литералом и оператором обязательный или опциональный? Наверное опциональный, иначе пришлось бы делать `1 + 1` вместо `1+1`.

Автор:  Владимир Ситников [ Четверг, 17 Январь, 2019 11:33 ]
Заголовок сообщения:  Re: Синтаксис КП

Пётр Кушнир писал(а):
а в EBNF разделитель между литералом и оператором обязательный или опциональный? Наверное опциональный, иначе пришлось бы делать `1 + 1` вместо `1+1`.

Info21 писал(а):
Строгость -- мать надёжности.


Поэтому никаких `1+1`. Только `1 + 1`, только хардкор.

Автор:  Trurl [ Четверг, 17 Январь, 2019 13:37 ]
Заголовок сообщения:  Re: Синтаксис КП

Не, хардкор - это когда "( ( 1 + x ) * 2 )".

Автор:  Trurl [ Четверг, 17 Январь, 2019 13:41 ]
Заголовок сообщения:  Re: Синтаксис КП

Пётр Кушнир писал(а):
а в EBNF разделитель между литералом и оператором обязательный или опциональный?

До пробелов EBNF не доходит.
Сообщение о языке писал(а):
Пробелы и концы строк не должны появляться внутри лексем (за исключением комментариев, а также пробелов в литерных цепочках). Они игнорируются, если они не нужны для разделения двух последовательных лексем.

Автор:  albobin [ Четверг, 17 Январь, 2019 14:31 ]
Заголовок сообщения:  Re: Синтаксис КП

Trurl писал(а):
Не, хардкор - это когда "( ( 1 + x ) * 2 )".

или скобки не там, или не "догоняю" :(

Автор:  Info21 [ Четверг, 17 Январь, 2019 15:04 ]
Заголовок сообщения:  Re: Синтаксис КП

Иногда хочетца выпить уже йаду.

Автор:  Trurl [ Четверг, 17 Январь, 2019 15:49 ]
Заголовок сообщения:  Re: Синтаксис КП

albobin писал(а):
или скобки не там, или не "догоняю" :(

чтобы все было разделено пробелами, как в форте.

Автор:  Artyemov [ Четверг, 17 Январь, 2019 17:23 ]
Заголовок сообщения:  Re: Синтаксис КП

Trurl писал(а):
Не, хардкор - это когда "( ( 1 + x ) * 2 )".

Не, ну тут по классике: бережёного бог бережёт, как сказала монашка, надевая презерватив на свечку.

Автор:  Сергей Оборотов [ Четверг, 17 Январь, 2019 22:31 ]
Заголовок сообщения:  Re: Синтаксис КП

Дисциплина ещё никому не помешала.

Автор:  albobin [ Пятница, 18 Январь, 2019 09:24 ]
Заголовок сообщения:  Re: Синтаксис КП

Artyemov писал(а):
Trurl писал(а):
Не, хардкор - это когда "( ( 1 + x ) * 2 )".

Не, ну тут по классике: бережёного бог бережёт, как сказала монашка, надевая презерватив на свечку.

Просто я видел истинный хардкор в "( 1 + ( x * 2 ) )"
:)

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