OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 12:32

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




Начать новую тему Ответить на тему  [ Сообщений: 330 ]  На страницу Пред.  1 ... 8, 9, 10, 11, 12, 13, 14 ... 17  След.
Автор Сообщение
СообщениеДобавлено: Воскресенье, 15 Август, 2021 19:23 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Ну я почему и спросил. Если ОП2 позволяет выпилить ";" без изменения другой семантики, ну что ж...
Другой вопрос, "философский", на сколько это надо?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Август, 2021 00:47 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Главное, чтобы не было грабель с каким-нибудь унарно-бинарным минусом, типа таких:

Код:
a := b();
-c();


убираем точку с запятой и брюки превращаются в
Код:
a := b() - c()



Возможно, что у Оберона синтаксис с запасом прочности, который не содержит этих грабель, но неплохо бы убедиться. Например, есть случаи, когда скобки можно ставить одни за другими, например, при охране типа.
В этом случае теоретически можно себе представить, что после удаления точки с запятой получится осмысленная, но уже другая программа.

В Го точка с запятой на самом деле обязательна, просто она в некоторых случаях подразумевается в конце строки, поэтому её можно не писать. Правило о том, когда она подразумевается - не совсем тривиальное. Насчёт JS не помню. В КуМире, кстати, тоже есть подобная заморочка с необязательной точкой с запятой, но кажется, что там концом команды является конец строки, а точка с запятой его может изображать.

Насчёт надо - ну если мы храним чистоту Оберона - то нет. Если хотим поспевать за прогрессом - то да. В большинстве современных и не очень языков точка с запятой не является обязательной, даже несмотря на возможные грабли (в JS ЕМНИП грабли всё же есть, но смотреть лень).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Август, 2021 07:12 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 519
Откуда: Украина, Днепропетровская обл.
Борис Рюмшин писал(а):
Другой вопрос, "философский", на сколько это надо?
Борис, а Вы задумайтесь лучше о том, почему Вы так сильно привыкли к ";" - настолько сильно, что уже усматриваете в их выпиливании что-то ненужное. Отчего так? Доверие к Вирту, который их не выпилил? Может просто никто ему такой идеи не подал? Но ведь и правда без них чище.

budden писал(а):
Главное, чтобы не было грабель с каким-нибудь унарно-бинарным минусом, типа таких:

Код:
a := b();
-c();
-c(); - такого вида кода в Обероне быть не может.

budden писал(а):
Насчёт надо - ну если мы храним чистоту Оберона - то нет.
А какому именно Оберону Вы предлагаете хранить чистоту? Оберон-07 итеративно путём последовательного уточнения развился до Оберона-07/16, а до этого были более ранние его версии, которые нами тоже воспринимались как окончательные. Нам сейчас считать их "грязными"? Если вдруг Вирт сделает в его новой версии даже сомнительные изменения, все их схавают и найдут как оправдать. Да-да, все, ну вот так работает авторитет.

Оберон-1 и Оберон-2 уже почти почили в бозе, их конечно менять никто не собирается. Но вот Активный Оберон вообще меняют нещадно и по живому - я бы убил за один только уродский SIGNED32.

Оберон-3, нравится вам как я его называю или нет, но тоже имеет право на итеративное развитие. И не надо называть выпил ";" модной фишечкой. В Фортране операторы можно было писать только один на строку. Примитивным интерпретаторам Бейсика было трудно без ":" между операторами правильно их парсить. А в Обероне это сделать можно. И легко. Ну а то, что Борису не нравится, вопрос вкуса. Всё меняется, Оберон-3 тоже будет меняться. Пусть КП остаётся застывшим.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Август, 2021 10:00 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
budden писал(а):
Если хотим поспевать за прогрессом - то да. В большинстве современных и не очень языков точка с запятой не является обязательной, даже несмотря на возможные грабли (в JS ЕМНИП грабли всё же есть, но смотреть лень).

Напомнило Лень — двигатель прогресса
Цитата:
Для трутней-программистов сделали так называемые ассемблеры, т.е. программы, которые переводили мнемонические обозначения в коды компьютера. И вы думаете, этим дело кончилось? Не надо себя обманывать! Появились языки программирования Фортран, Кобол, Лисп, Алгол, Бейсик, Си, Паскаль и тысячи других. И все они были предназначены для того, чтобы писать не «ADD A,B», а «A+B». Торг идет за пару лишних символов! Чтобы перевести программы с этих языков программирования в машинные коды, эти халтурщики смастерили всякие трансляторы, компиляторы, интерпретаторы.


По поводу точки с запятой. Рассуждения типа мне кажется, что точка с запятой в большинстве случаев не нужна, не очень хороши. Если бы, кто-то сказал, я провел доказательство, что для данной грамматики точка с запятой избыточна во всех случаях, то это можно было бы принять во внимание. А так могут вылезти какие-нибудь частные случаи, которые забыли учесть. Точка с запятой как минимум используется для синхронизации и восстановления после синтаксических ошибок.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Август, 2021 10:31 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Цитата:
По поводу точки с запятой. Рассуждения типа мне кажется, что точка с запятой в большинстве случаев не нужна, не очень хороши. Если бы, кто-то сказал, я провел доказательство, что для данной грамматики точка с запятой избыточна во всех случаях, то это можно было бы принять во внимание. А так могут вылезти какие-нибудь частные случаи, которые забыли учесть. Точка с запятой как минимум используется для синхронизации и восстановления после синтаксических ошибок.

Рифат, поклон тебе! Полностью согласен. И ты очень здорово напомнил про синтаксические ошибки. Если просто выкинуть точку с запятой, то некоторые ошибки перестают читаться как таковые. Я не могу привести пример для Оберона, но в языках, где допустимо написать "-b()" - таких ошибок можно много напридумывать.

Т.е. нужно не только доказательство того, что не возникают неоднозначности, но и рассмотрение расстояния между ближайшими правильными текстами в терминах ошибок набора, опечаток и т.п. Например, если текст остаётся правильным, но меняет смысл при случайном удалении границы между соседними строками в рамках традиционного форматирования, то это повод для опасений. Помнится, немало я мучался с программой Mathematica, где один раз случайно нажмёшь кнопочку, и потом она тебя засыпет простынёй ошибок, находящихся весьма далеко от причины. Кончилось тем, что я вообще переписал свою программу с Mathematica на лисп, несмотря на богатство возможностей математики, потому что не смог подружить Mathematica с большими программами. Хотя дело там было не только в синтаксисе, а больше дело было в ленивых вычислениях (как раз по твоей ссылке про них), из-за которых Математика ленилась рано сообщать мне о проблемах, и каждый раз поиск ошибки становился головоломкой. Но вот эта ситуация со случайным нажатием тоже сыграла свою роль. Исходя из этого, я косо смотрю на Питон - достаточно стереть один символ, и оператор выпадает из тела цикла и оказывается за его пределами. Т.е., даже если неоднозначности не возникают, то вполне может возникать ситуация, когда диагностика ошибок затрудняется. Например, мы повторяем в конце процедуры её имя - это вроде избыточность, но она помогает. В каком-нибудь Дельфи мне в своё время было тяжело искать ошибку "забыл закрыть один цикл", потому что она всплывает только в конце файла. В Обероне проблема сразу локализуется концом процедуры. Возможно, что и для точки с запятой что-то подобное имеет место. При том, я сам считаю, что точки с запятой нужно выкинуть, но нужно сделать это с умом. Т.е. если выкидывается точка с запятой, то однозначно конец строки должен начинать играть роль в синтаксисе. В Яре я вообще прибил гвоздями способ проставления отступов, и если его нарушить, то программа не компилируется, а среда сразу показывает это место красным. При том, что в принципе отступы в Яре не являются необходимыми так, как в Питоне - там каждая конструкция имеет закрывающее слово.

Цитата:
А какому именно Оберону Вы предлагаете хранить чистоту?

Олег, я сказал «если», а не «предлагаю». Если ты помнишь, я даже верность английскому языку не храню, а английский язык - это ведь вообще «наше всё» поверх Оберонов и всех других языков. Основы культуры.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Август, 2021 10:50 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Я, кстати, вспомнил: в Математике * между сомножителями можно опускать, при этом имена не нужно объявлять. Т.е. было у нас ДлинноеИмя * ДругоеДлинноеИмя, его записали как ДлинноеИмя ДругоеДлинноеИмя, стёр пробел (который знак умножения) между ними - и получилось ДлинноеИмяДругоеДлинноеИмя, которое не является ошибкой. А вёрстка в той версии была такова, что пробел между именами иногда был узким и малозаметным.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Август, 2021 16:22 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Думаю, что можно посмотреть в сторону необязательности - при проверке всех последствий.

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

В итоге тогда строгое, не "расхлябанное" решение - это конец строки надо делать эквивалентным ;
Тогда проблем/неоднозначностей нет, кроме потребности переносить на несколько строк. Т.е. придётся вводить \.
Учитывая, что большая часть программного кода всё-таки не переносится на другую строку, то это может быть оправданным.
Уменьшение визуально несодержательных элементов, думаю, дело полезное. Мы же ровно по той же причине в Оберон-стиле стараемся перед END ; не ставить - и она реально нам начинает резать глаз.
У меня после работы на языках без ; был подобный эффект от ; тоже.

Мне так видится.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Август, 2021 19:00 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Может и не усложнится, просто надо это проверить, а не надеться, что как-то рассосётся. Касаемо "\", то вот как сделали в Go: https://golang-blog.blogspot.com/2019/0 ... olons.html

Это правило требует длительного осмысливания, потом доосмысливания с учётом отличий Go от Оберона. Авторы го оберонщики в душе, но всё же их язык имеет более сложный синтаксис. Возможно, в Обероне можно упростить эти правила.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Август, 2021 19:21 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Предлагаю тогда упразднить "." в конце предложений В конце концов, у меня в голове огого какая нейронная сеть Искусственный интеллект отдыхает Естественный Вполне может осмыслить и разобраться, где предложение кончается, а другое начинается Тем более на это же и заглавные буквы намекают

А как пообвыкнем - можно и "," упразднить вовсе Как при этом упростится предмет русского языка в школе А чо вон у меня знакомые есть дислексики так им беднягам вообще одно мучение с этими знаками препинания дай бог со слогами и буквами разобраться и при этом ничо разбираются и понимают что имеется ввиду написанное и то что они пишут читатели не дислексики тоже вполне могут разобрать если захотят

Разделитель между операторами, возможно, избыточен; даже если нынешний синтаксис КП не позволяет полностью от нее отказаться, вероятно, возможно сделать такой синтаксис (грамматику), что разделитель точно будет не нужен.
Однако, как и прочие избыточности, избыточный разделитель дает возможность писать более надежные тексты и формализовать проверки, увеличивать формально выявимые ошибки. Объявление типов переменных тоже избыточно: типы переменных формально выводимы, непротиворечивость использования значений переменных доказуема. Однако объявление типов переменных делает текст программы более устойчивым и формально верифицируемым при рефакторинге.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Август, 2021 19:33 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Oleg N. Cher писал(а):
Борис Рюмшин писал(а):
Другой вопрос, "философский", на сколько это надо?
Борис, а Вы задумайтесь лучше о том, почему Вы так сильно привыкли к ";" - настолько сильно, что уже усматриваете в их выпиливании что-то ненужное. Отчего так? Доверие к Вирту, который их не выпилил? Может просто никто ему такой идеи не подал? Но ведь и правда без них чище.

Oleg N. Cher писал(а):
Ну а то, что Борису не нравится, вопрос вкуса.

По-моему, я выше нигде не сказал, что мне это нравится или не нравится. И кавычки там не просто так стоят.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Август, 2021 21:21 

Зарегистрирован: Суббота, 04 Май, 2019 10:21
Сообщения: 29
"automatic semicolon insertion in golang"
their discussion: https://groups.google.com/g/golang-nuts/c/XuMrWI0Q8uk

the rule:https://medium.com/golangspec/automatic-semicolon-insertion-in-go-1990338f2649

my implementation(some years ago) in DevCPS.Get
Код:
StdCoder.Decode ..,, ..ZD0...3QwdONl9RhOO9vRbf9b8R7fJHPNGomCrlAyIhgs,CbKBhZ
 xi2,CoruKu4qouqm8rtuGfa4.hOO9vRb1Y66wb8RTfQ9vQRtIdvPZHWKqtCa.E.U5UmR22U.Qk
 lbeZ3DPuP7PNNvQRtId9NPuP7X2hgnRAXDJ.QCPuP7PNG2sET1.PuP.MHT9N9nt.G2sIdvPZnt
 gcghghZcZRC8T0E.kV40T.rN62.,.5D0cU.ktAcoZimBhWhiohgnZcZRC.,.D,,6.I16.M.EJY
 jyC.6.VQ.k3k.8Mtf.2.S00E.c4E.m80.e0.,6j3.C.8E,9T3U.EKE.EBU.U,2.I3.0ES,1.y0
 CE,9T3U.kHE.0.p.0.x10EJ.6.V2Q0YU0Ky8.,Uv2.0E.c4E.m80.e0.,6YUVU1Q.M16,D.K,K
 E,9T3U.EPU.EBU.6U,W.EJ.2U.2GkFUIU0Y.2UdU4IkmL,6.260.I16.,A.,I.0.J,E.0E6,56
 .c2c.E.O,Ok,UPU5IkmL,2U.E74.2.p.0UZhN6.J,U.2GkFE.U4.,M1c.E.SE.c.E.G08.2U9U
 5Q2,E.q..,65c,UB.E.SE.c.E.i0.,cBs.J.7s06.36.QU0U3Q1QUcW2Y,2UJU1I.67s.N.Dc1
 s.Z,Dc6,U123o.k2E1.t..l,7.Ck0k1m.Gk2UwV6IkmL,2U...p.0UZ,,6.J,U.YLE10.Ds160
 B.40240E0e.I12UEU4Q.s2s,N.,s.,U3g168c.JE.wU9U4.DMC60D.8L.M,T.K0O.s.M,Z.Ds6
 6.t09c16.p.B.g1QU0.k,i00k,0.5M0c,UWU.gU..6.5,560c,UW.9.U.Q2QU6U4.i00k0.kC.
 E5E0a.0E20.Ds.6,k1G10ECE,C.0EE6.D6,6.,,B.I2o.kEE1.,V.QU6U4.5M76.9.B.0kE..Q
 U6U4.5M76.9.B.0kC.kQ.kC.E10.5M16.D6.wUoU.Y1I.6.z.DM,E5E1G.0E10.5616.1.7.0E
 2k1C.G.wUoU.Y1I.6.,V.wU2U.A2oU1.36.o.EB.kC.kRE1U.g2.g1.25o.kDk,q00k0E1U.g1
 .g4.Q1oU5U.A1s.EDU5.d.5M66.X.B6,6.n.C.o1c,6.,,Bs,kE.E8k1e0Y,oU1.x.B6,6.x.K
 E.6.p.C.o1M,kDE1O.0EEE1S.0kEE1O.Q1oU1U..BM,6.j.C.0EDE1G.0ED.6.x.U.o1606.v.
 Bs.kBE1O.0EAE1C.0EDE1K.0kDE1W.0kCE1C.0kBE1K.0k9U1U.o16,6.x.U.o1M,EBU1.x.i.
 g2oU7U.o1s..606.3,U.I2.0kCE1C.o1c,6.,,B6,6.x.Bc,6.r.Bs.6.E1S.0kAU1.r.BM,6.
 j.C.0EDE1S.A2oU4U.Q1oU1U.I.o..........................E8E1.1,....I2.o2.I2.
 IAM.6.v.zT0VeITuE98FfeI986DONdf8,78hOEZ86bPSPfC,dEn8J9O8rN1HM0hOEZ86eHE8og
 sC,tPN9Np76HeHdOFDOFZuCPM0H.SrlWKR0mVWoU8pRq.kqKLqGromoouqmmGE8qkCqpCLq4qt
 WKR8obyIaKoUuoRqk2gV7AVEJeD,sETPPPPNR9RFdJ10NPORPNpdETuHkIin2WGJ0GmyKEuqrG
 LE8rm4Km0mkOKuKKt0mmuKm0mrOKEOqomqm0GJam4ak28oWSoYuIEqk2ak2GomOrV0paumXKKu
 mIISrlWqIin4aU7YdDxdEhV7k2m2U7sJFOGNOF,tR59O,ND,d6Fd6,7FT86PM0Hk26F..A3k2M
 GB86jvM00eGF0GeWoWuIECorq4MPNPOAZUgV7A,HU3ZdHBd43Yr,v76V7Fl86d8G9WhZBIbxYe
 Ghe3RbBA,a.9eH7O1HM0aU3lRqk2aU7MG.00.GomOrV..HFEKIgaIe0mWuIWi1A,H022GomO5g
 cjZiUYe6V33f7,.HkY.g5.MP.U3pd2R5M0G2kX.AZBAV7AV7g6.HMGUU663N8376d8G6F..AZv
 ..k2a266Y6U3,km8LtWmOamR0mW.g,g6.59O,dCv76b8GTeId88jvMaWBkW665uPP1in4aUBM0
 V0.NOORPN5uPPPP68HtCH68wZj2YUIZdg,aEfkvcC.cE.cI98I9OEd867ONh1S2Ud66feHdOGN
 86FtR5HE6A7mIyIdWmvCKoUMBZvg,akYO2.7GE.70.Ud669eH7uCkl..UBkWEaaKr.sCM1aEc.
 EVmqrCqpCorqqqEIO3q4IbUIcDxdA,0m2WGJ0We2YUIZj2YUI3M0h0VvMF99,tR59Op,.30.P9
 PHfPgb4BcARe3RbBA,H6F..A3,N1HUG,gV7A,H6Q59O,dCwiXtC,NGB86jXU6A78K,,gBUI,,N
 F.aEW..M8.feHdOG6Q59O,ND,t7Jt7Hd7FtR5HEkLSmI0mb8JIS56AlWBU7p6.DVUYe6h6G2..
 HFEK2UX3BsI.k4MFcENvPsPUvUBM0V0.bONPPO5vPNvPR98bPSP1n8JaGR0GVy2sCcEk4ak2ak
 V4odKIECrwqKEyIXqk2aUw3YdZgZphoZZUohphhWhgmZZUQioJidphbZZUIikBgmhgiZZUIiZZ
 ipJiiZZUIiWJiVRhg2YmJACqmmGEKKrGKK0GsmquCLNmGEqqouquCLNeHE8pWGpe8Jb0Ge8peK
 IEqk2MFNmW0GdKIeU4BcAR8r,HEbQbUgV7MF2YHhgh,QbUgVBgV7Ic3,Y6UZJim3ijRiUIbx2Y
 2hAklKLt0rrCbh2YlQbUghpZB.O2663PM51kSOoUUBkf.FtMF96tND,d6,d6H76TeI,7859OqX
 kAck2fd2YDJ8.D7LD76H7FT86Fd8HvNRvPZPN,tMTfPdfQT9P,tMFPMZPM59R9fQbf8HN1Hk2a
 IXQgcV2,g66GsQnXugbUggjpgv2YGhcIVBAV7AV3Z7HWX,D,d8GM1AV7A78qkC4EE.b1cPf9PN
 vC,7F9fRkX6859OHtC,dI900mWuIWg,ak28qkCqp.e1deIfmRQgc3YuEN0HgiHEq.K2.vFMG2d
 0q.akY...5Xu.66,76,,.68JNNbvM19Q996NPORPNJN8PM0AV3,Cpmq4EIkI0GeWoW.s7rt7r7
 6,78JNMf9RT96bPNPPOUeAZBA,akWMF,7F91.M1M09eHiHE.N0...uYBkWsCPU2,QioBgmZikx
 hn3YuEW.C4kKk4aU1lWQgctHB86,76FFECKoobUIYUIYUIZdg,mbmIaMZZUIar2fu2YHZim3Zn
 BZBAV7EFCGFeHECLEenSohZBiv2Y2hAkX..4GFeHEC5sPdvC,7F..iXU230mEmGE0mEqHE0GJa
 0akYOYXlSIYxIYUY86FO5.Un3YuUZ769eH7O1HEyc73dC,N1Hk2CLEenSAgiZgv2Y2,.k4M0H0
 UaIYUY8...9eH0GEW0Bd7,d8H,tXwJYu2YBUn,3PMZvC,7F91.k4kY.6T376d8G...,,whmRb3
 pd2,mLy0GJa0EI8GR0GWK4.UB..I3.5068PPRN1M8r76P.HMGghp,66B76bON.W0.g,A,bfCvt
 Q9PPH1QbBU7gcAVBA,aUjZhY3Yug570MNUv2Y5hgo3ZnBZv2Y2,.2YukrmKmiHEq.akWu2P.m2
 CLEe1N9Q1fQ9n4ak2cHq.tXdIYu22Et0rkkR0GW.S2C4P.IZWIbUQC6RHnmCrR0GWK4..kJ8GR
 006QNPRi1..i1A7C4s8376d8GsQ,,ENiHEG2..,NF.YZWIbUQCsMTPPPPMr7670.k4.Pd6p76U
 hBhilR00..rN1..Pd6,7J..Iav..UUgcCl2UiIYu2Y2,.sC..uGF0GeU2,.EEC5gikZij3Y3Zd
 Hh6UkhgmBhjZgUgcC,s93dC,7F..g,.UjIYUY86HHfPC2K4aWUg,ak2a2b0UcUd.g,A,b1.Q5M
 098HM1M0y4EW.K4sCUn,..,,T1,,akWuYvg,6Ha251SGJ2YI37IcgxB.MP.A3U7A7q4.,,.23.
 M1M0C5.sCk2K290A,T16F..r,...00y400AV3p7q.Y7QCsQNPMbnRqk2Eb.tXkIYioZWAbWIbU
 odphhWlR0mt00uquq4qk2aEycC3dC,,kXkl.akYsMEFq1U2,.EEC5IgZRgjhhZRiUgcA,klYhj
 769eHEysC3dC,tQktKqq.iHEG2.UB.mHFeX2,.sCP......22EqKqs0mWmod.sQb969eHk4A,g
 bWIbUQCMNX9Pr7670.UB.B0.,,..U3VUUxgbUIZd.obWIbU..UB......00sN9PQ,NF.Eu8LEK
 IbUwlU8GR0mYGqmuadpgdhgm3ZnBZvMGBGr4qqKKEqHE8mU8Jd4og8GEG3QCMMZfQ1PS,NFR0E
 V8GR0mY..gV7.u4U0hc5B7376d0.3nnaKrqk2AV3Z7HWi,SGV8pW4oZSGEG3cCvdMZPN1vOPM0
 ..22aJF0Ge.,,ar4ak2aUCN1U1JYu2Y7,.U7MGB0.5OEbOF376d0.5PMbPNPM0HkWm2.UDpdHZ
 eW2YI,.TfPb9RPM0a...mobCpW8GE..NvPbPNPM0..UD7JHeHfOF376d0.yaoBhihiZhV7A,u2
 YDGIFeHEa2..MG.EWyIF00.YgjhV7A,98H..aIf8GEG3.AhqhV7A,u2U3JYu22..U7,.9eH7e6
 ,7J.MNR9NPM0HM098H..modKIF00.6PbPNPM0...aYW2YI,.AhahV7.66.6KH8J376.UsBhohV
 7UC,tX4JYu22..00.cFTeI376d0.BvPZ969eH.aIFeHE..M1MG.kYOIF00.AhahV7kWm2.UCJY
 U..uq4a...sI376d0.Cr4ak2..UB3eDJeIJYUY8.MPVvPZ9RPM0HM0u2YDmIFeHE..66.UAxdD
 3eW2YI,Ugxhj3iUgcC,MH3dC,,.UBU7,.PuH7e6,,.qqrGq4aU7gcA,.UJZd3JYUYe6,.KLqKq
 4ak2cHEycH3dC,,.UU..uoYmIF00.ohdZhUgcC,sH3dC,,.UBU7,.TeI3,.whmhV7A,98H..OI
 F0Ge.UahV7A,..MJde6,,.giohV7M0u2YD0JFeHE...a2.2eGxd1,8GEGJY.6QZvP5PN7PRZPN
 PM0HkWm2.UDBdCZe3JeW2YI,.TPOR9R9fQPM0cH.8JFeHE...a2.Ie3RcDJe2JYU..ZPN5vPZ9
 NPM0akWm2..VOFIYU..2iZBgohV7...YeJFF0Ge..d1PM0HUC,tXIJYu22..U7,.d8G9eH376E
 E.d9O9fPPM0gcA,.sH376.UjhV7...aJcKIF00.MSVPNPM0cH.KJFeHE..66.UJpdIB7376.ku
 uKuaKq0mW.cJ3dC,,cN...OpU8JF00.oiVJiUgcC,sJ3dC,,.UBU7,.j8GH8H80.sRFPONPNP.
 98H..aIeWIF0Ge.UdZichV7AV7cHEysF3d9Rd6Fe6N763dG379,d6Le6N763NI379,d6be6N76
 WJFuGLIfWYZUMM3d9Rd6pf6N76yJFmGE2sWoZicp379,Fg9GLcx379,Fw9GLuWzLYu22..Pk2m
 5re6p76b1mKl8rkiqR0GW.R,k4.ve6p76b18Ll8bf,...xe6p76b144TvRr7670..EG8GRQC6N
 T9PNPMZvC,7F...iLFe1EqklQ570.kRq.P.gjWI5UmVX,..q.cT3dC.RvP6F...jdFleC,tQ,,
 f9QQbUY6..MFNmW0m4M0b96cPf9P..UvU3p7rN1QithhUUnhV7gcC76DONdvCPcUXDJ9X1xhiZ
 imFqKKtCLLCJuQcoJigZcZRiX3Ulb8..umVyKr.YcZRiX3.5011CLLUm,..Unp3.6F6.Zb.2U.
 UIU.U76.0E..k.8ssH38pumqm8rtumdcIf9PY62Ulb8.CLL8pumqmY62UmT.6.QJwU.kFF.0U1
 0.bf9bWHZitZhZZcZRC,Mw.ELMSN12Um5,,E..2,If.6.,6.IE.EL4Iu.6F6.G.0..670U.AU.
 U.UUQoOF.2Uwpr,6C5XsQA4.2.8Mtf.2..c4E.k.Ue6T6.2UEC.6...xI....
 --- end of encoding ---


a simple test
Код:
StdCoder.Decode ..,, ..Bd....3QwdONl9RhOO9vRbf9b8R7fJHPNGomCrlAyIhgs,CbKBhZ
 xi2,CoruKu4qouqm8rtuGfa4.hOO9vRb1Y66wb8RTfQ9vQRtIdvPZHWKqtCa.E.U5UOD,6.5Qw
 dONlnayKmKKqCLLCJuGqayKm6F9vQ5nsH3.bnayKmKa2,Cor.kay4.qorGqmQCU2,CJuyKtQC9
 8P9PP7ONbXmb.2.Qp5k5kFT.,6.,.by.cU.ktAcoZimBhWhiohgnZcZRC.,.D,,6.I16.M.EJY
 jyC.6.VQ.E9l.8Mtf.0E.696.c4E.2k.F.c8.2UE0WU.6.n.3cUZj0E.696.c4E.m80.e0U.2U
 E08E.kIk,8Mtf.2.822.e,2.AU.E.e0.,6j3.O.2HIU1.d,,.eof5UM2y,cUXzId9NBuPN9Nbf
 9BuPN9N7ONbvMQ.6.Ik,E4kq4.2.k,9z0U..w,wd,.,.p18Mtf.2.S00E.c4E.k.Ue.2.,6YUo
 U,IEU...p.0U.460.J,U.2GE0E.u.4k2UwVzjV7AVGhcEhc,ZeBAV7gV7AVJpdIBdA3Ys3Yxgb
 U2avgV72Y7Ie3ZeJJeC3YBAV7Us3YugbUIa72ZeIZdgV7A,UU2YU2YUwZj2YchggZhjBVBAV7g
 ,aIX0Gw0mS0GN0GeWoWuo4ak2ak4AV3pd23YBAV7UL3d7Zd33Ys3Yw2Yn2Y2xdBAV7AV0Je3Bc
 9hV7AVU2YU2YU2jUIbxAamgV7A,5uHR8JHeHfOFPM0HM0HeF6D8HEG3UBM0K2kW.0.0EZ.cwL.
 0.H,N.X.,6.4E.E.1U..A1QU2U.ABYU0Ky8U.2..c4E.0c.8.,Ue.6.,6YU12.IU.k.a.g,YU1
 .d.7.Q,Y.6.d.7.I,Y.k52.7.0E66.7.I6.I.A.E3E0.d.7.I,.Y0Y.E3.k5E0U..7.0ENkzro
 bGoemoW0mb8KwGpmCLuin4qk2OpU8JEWLR0mYuIeKoXKId0m4ak4akVyYHZeUQgX3Yx2YlIav2
 YUgV7YeN3e3BVBAVG3Yx2Y33fIhcCRe7JcAhcUIe3RcDJe2hV7M1KIbQbBAVIB9qk28pmCKu0m
 S0GdK2UgZZUYig2YmZZUIgu2Y7p7.aEwmGEaLR0GVaJeKIEWGJCrt4qtemIqk2K2PM0PM1PM0P
 M0PEc8pbCoWGoe8pW0GWyKICKoeHECIY4IdmGECKo8HR0mVW2HdC,dETuHNOF1eH,N1HcE9uFH
 eHPM08ZI,deIfOFrN1HM0hOEU0B9in4aUBM0BuHZ88l96pFE0nR0Gw0GSAakQbU2jfQZdYcD3Y
 BAV7g,K2A,Ad4VxgbUAaUYe6h6M1akW.MGB0..AV3FEM0M1K2M1HM16I.Um2ZdgV7Ic3,o869,
 NOp76HeHUBAV7.59Op,QbUgV7U7IU0gV76HTuHVO1HM0HMGB00mM002Y33f7ZeU2jUUlIaU2jU
 I58Xs32A4KIbGIEM09Wvk2M0j02DcA,7FT86PUBkWM1UG7I.HsMF96pND0Hgqk2ake.FtMF96t
 7637A3N8,78J761vQ1vQJFE0Gi0m4aU7AVDJeU2ZWAbW2Yw2YX3hd2Ya2YcQc,3ecQAHFS0GF4
 IFaGEmp4ak2AVD783dK376t765OEV0aGEOGEQgc3YX22ze6H76B76ES6k3N8tO1HM0akbsMF96
 v763tp3N8,7Lk2y2.jj6H76TeI,78H96v76ZNBhN8rN1Hk2ak4M0HM1M0PUG,UX,.f0.tVkM8.
 .TeIPM0ak2WGFaHFkl66BV1,aWwkUkbg,AVccK3,50M8kl2YXkjEH.tV.HEy2M0FtMF96vVLXD
 ,aEI.SD66..q.P.K2,7FTfArN1PM1PMFR8FyIlW5oZ0CyIhACoruKu8rrmKqKKtCLLCJuQcoJi
 gZcZRC,Mwd0.UiQcjpho,YcZRiX3.5011.85...CLL.U2V.Iy2U.UIU.U76.2..AU0CyIhA8pu
 mqm8rtumdcIf9PY62Ulb8.CLL8pumqmY62UmT.6.Qp.k1kF1.,6.Css,ktumdsIdPSNPN7ONbv
 M,Mw.ELMSN12Um5,,E..2,I92U.E,5D.oZ,Zio,6F6.G.0..676.16.6.665hK2.,6TxR.Wnl6
 C5X,.,U0KSE..UO.,.1.e06.2UEC.6...gW0...
 --- end of encoding ---


feature:
1, same as golang: auto insert semicolon in lexer
2, can break this rule by add backlash'\' at end of line
3,accept comments after backslash


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Август, 2021 09:37 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 519
Откуда: Украина, Днепропетровская обл.
Коллеги, а что вами понимается под "восстановлением после ошибки", которому так сильно помогает ";" и мешает её отсутствие? Я здесь вообще не вижу проблемы.

budden судорожно пытается найти случай, когда отсутствие ";" где-то повлияет на логику кода. И действительно. Кстати, я ведь пока ещё не решил в OP2 проблему отсутствия ";" в коде типа:
Код:
a := b b := a
По поводу стёба "давайте лучше уберём всё" от Dimetrius - не смешно. Точка в конце это как индейское "я сказал". Или Dixi. Это уж точно никак не мозолит глаза.

Вводить конец строки как неявный ";" - я лично против. А если тянущиеся за ним ещё и "\", то это вообще атас. Оберон поощряет чистый красивый стиль писать в одну строку один оператор. Легко читается, но для нескольких мелких операций без ветвлений хочется их сгруппировать. Для чего я и не выпиливаю из O3 разделитель окончательно, т.к. эту возможность считаю полезной.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Август, 2021 10:54 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Oleg N. Cher писал(а):
Коллеги, а что вами понимается под "восстановлением после ошибки", которому так сильно помогает ";" и мешает её отсутствие? Я здесь вообще не вижу проблемы.

Раз уж я первый заикнулся про восстановление после ошибок, то отвечу на этот вопрос. В книге Compiler Construction есть глава "Coping with syntactic errors", в ней слово semicolon встречается более 10 раз, одно это уже говорит о важности. В частности там говорится:
Цитата:
For instance, a missing punctuation symbol is a frequent mistake, not only in program texts, but an operator symbol is seldom omitted in an arithmetic expression. To a parser, however, both kinds of symbols are syntactic symbols without distinction, whereas to the programmer the semicolon appears as almost redundant, and a plus symbol as the essence of the expression. This kind of difference must be taken into account if errors are to be treated sensibly.

То есть, Вирт признает, что для программиста точка с запятой особой роли не играет и является по сути избыточной. Но, он говорит, что для парсера все знаки равнозначны. И это различие между значимостью для человека и для парсера служит основой простого поиска синтаксических ошибок.


Последний раз редактировалось Rifat Вторник, 17 Август, 2021 13:52, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Август, 2021 11:57 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Нет, я пытаюсь Вас убедить поискать их, потому что пока Ваши предложения неубедительны - не видно, чтобы была проведена достаточная работа по обоснованию предложения. Возможно, она проведена - но она не показана. Мне нужен результат этой работы, но я как раз хочу уклониться от неё и свалить на других. А потом (когда-нибудь) я уже буду сам разбираться в более сложном режиме LAX в A2, а Ваш результат будет для меня отправной точкой.

И я говорю не просто про логику кода, а про расстояние до ошибки, т.е. сколько нужно совершить опечаток или ошибок, чтобы правильный код превратился в компилирующийся неправильный. Также в теме прозвучало, что нужно ещё учитывать, насколько ухудшится диагностика ошибок компилятором из-за снижения уровня дуболомности синтаксиса.

Т.е. задача заменить синтаксис довольно серьёзная, и она вот так "мне захотелось и я поменял" не решается.


Последний раз редактировалось budden Вторник, 17 Август, 2021 12:14, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Август, 2021 12:10 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Цитата:
Вводить конец строки как неявный ";" - я лично против.


Ну это уже серьёзный вызов сложившейся практике. Никто не осмелился. Баш, КуМир, Го, JavaScript - у всех точка с запятой взаимодействует с концом строк, и даже при этом проблемы остаются.

JS ни в коей мере не является примером для подражания в плане дизайна языков, но возможно, и оттуда можно извлечь какие-то уроки. Правила описаны тут, https://tc39.es/ecma262/ , открыть пункт 12.9 (прямая ссылка не работает почему-то). И там 4-5 страниц текста.

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

А вот обсуждения (одно из): https://news.ycombinator.com/item?id=1547647


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Август, 2021 12:13 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1557
Далее, мне всегда казалось, что самым сильным ресурсом по JS является javascript.ru, но даже там они не пишут чёткого правила, а дают ссылку на спецификацию:

https://learn.javascript.ru/structure#semicolon

Т.е. возникает ощущение, что средний разработчик JS не знает правил вставки точек с запятой.

Опять же, JS - не Оберон.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Август, 2021 14:47 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
budden писал(а):
Если хотим поспевать за прогрессом - то да.

Наверное, имелось в виду "поспевать за модой"? Но мода - барышня капризная.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Август, 2021 15:04 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Oleg N. Cher писал(а):
Оберон-3, нравится вам как я его называю или нет, но тоже имеет право на итеративное развитие.

Да, конечно. Любой может придумать язык, назвать его, как ему хочется, и развивать итеративно. С другой стороны, никто не обязян одобрять как язык, так и название. :D


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Август, 2021 16:31 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
adimetrius писал(а):
Предлагаю тогда упразднить "." в конце предложений



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

Учитывая, что в 99% случаев на практике оператор заканчивается на конце строки, то аналогия с предложениями неподходящая.
Тут, скорее, аналогия с упразднением еръ, как переставшего нести смысловую нагрузку.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Август, 2021 17:40 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 519
Откуда: Украина, Днепропетровская обл.
budden, у меня нет цели чего-то Вам доказывать. Для меня вообще загадочно то, чем Вы занимаетесь.

Пока что обоснования по поводу ухудшения диагностики ошибок из-за отсутствия ";" прозвучали, но они лично для меня неубедительны. Позиция ошибки, что ли, уплывает в отчёте? Нет, она не уплывает, остаётся такой же.

Меня смущает только a := b b := a, тут разделитель просится сам.

В решении с неявной ";" в конце строки удовлетворительно не решена проблема кода типа:
Код:
a := b
+ c
+ d
или:
Код:
a := b +
c +
d

Так что возьмите отправной точкой достижения с Go и работу, проделанную luowy. Но я сделал проще. И в описании языка всё остаётся тем же, только ";" будут заключены в необязательные скобки [;]

Наконец, отсылаю Вас к Oberon+, откуда взята эта идея. Кстати, интересно как там решается это самое a := b b := a

budden писал(а):
Т.е. задача заменить синтаксис довольно серьёзная, и она вот так "мне захотелось и я поменял" не решается.
Не совсем так. :-) Я увидел, мне захотелось посмотреть, можно ли сделать в OP2 так, как это сделано в Oberon+, заодно показать народу и обсудить.

Но всё же я склонен более серьёзно прислушаться к мнению людей, которые хотя бы планируют работать с Обероном-3. Иначе наше обсуждение получается малопродуктивным. А всё равно каждый пилит своё, согласитесь. Я не вижу ценности в Вашей деятельности, Вы в моей. Всё логично.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 330 ]  На страницу Пред.  1 ... 8, 9, 10, 11, 12, 13, 14 ... 17  След.

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


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

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


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

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