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: Синтаксис КП |
Обнаружил все три возможных варианта:
|
Автор: | 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/ |