| Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ | |
| Новый синтаксис приведения (охраны) типа. Использовать "x(:T)" вместо  x(T) https://zx.oberon.org/forum/viewtopic.php?f=32&t=460 | Страница 1 из 4 | 
| Автор: | Saferoll [ 25 июн 2019, 22:31 ] | 
| Заголовок сообщения: | Новый синтаксис приведения (охраны) типа. Использовать "x(:T)" вместо x(T) | 
| В работе Patrik Reali "Критика языка Oberon" справедливо указан недостаток синтаксиса: терм x(T) может означать либо вызов процедуры x с параметром Т, либо приведение переменной х к типу Т. Только из синтаксиса это понять нельзя, требуется семантическая информация. Компилятор, конечно, такой информацией обладает и без проблем разбирается, какой из случаев имеет место. Но этот недостаток синтаксиса снижает наглядность и вызывает затруднения при разборе чужого кода, а также путаницу у начинающих (в одном из видеоуроков Ивана Денисова слушатель принял такое приведение типа за вызов функции). Более удачным был бы синтаксис "x(:T)". Двоеточие после открывающейся скобки не может встретиться в каком-то корректном оберон-выражении, поэтому конфликтов не должно возникать. Лучше бы, если это двоеточие было обязательно для приведения (охраны) типов. Но для совместимости с прочими версиями Оберона придется, видимо, сделать его необязательным, добавляемым только для наглядности. Для этого можно изменить процедуру selector в модуле OPP. Во фрагмент Код: "OBERON" 
 Код: "OBERON" 
 | |
| Автор: | vlad [ 26 июн 2019, 04:39 ] | 
| Заголовок сообщения: | Re: Новый синтаксис приведения (охраны) типа. Использовать "x(:T)" вместо x(T) | 
| Saferoll писал(а): Более удачным был бы синтаксис "x(:T)" Чего за криптота? "x AS T" всяк лучше... | |
| Автор: | Saferoll [ 26 июн 2019, 06:25 ] | 
| Заголовок сообщения: | Re: Новый синтаксис приведения (охраны) типа. Использовать "x(:T)" вместо x(T) | 
| 2Vlad. Может быть и лучше, но потребуется новое ключевое слово, а это меньшая совместимость, чем необязательное двоеточие. В то же время, обозначение "x(:T)" не такое уж и "крипто". Во многих естественных языках скобки используются для уточнения чего-то, в языках Паскаль, Модула, Оберон двоеточие используется для задания типа переменной, поэтому "x(:T)" достаточно наглядно и понятно - это "уточнение типа". Да и от стандартного обозначения не намного отличается. | |
| Автор: | Zorko [ 26 июн 2019, 06:53 ] | 
| Заголовок сообщения: | Re: Новый синтаксис приведения (охраны) типа. Использовать "x(:T)" вместо x(T) | 
| Олежек, поддерживаю. Однако тогда надо же для O3 выпилить старое поведение по приведению типа? Код: "OBERON" 
 | |
| Автор: | Saferoll [ 26 июн 2019, 15:47 ] | 
| Заголовок сообщения: | Re: Новый синтаксис приведения (охраны) типа. Использовать "x(:T)" вместо x(T) | 
| Zorko писал(а): Олежек, поддерживаю.Это вопрос. Если двоеточие необязательно, т.е. можно приводить тип и только скобками, как в других версиях, то получается большая совместимость с другими Оберонами, хотя бы в одну сторону. Однако тогда надо же для O3 выпилить старое поведение по приведению типа? Если двоеточие обязательно, то получается строго отличие в синтаксисе и несовместимость в обе стороны. Хотя и большая наглядность синтаксиса ценой большей обособленности от других версий. Пока у нас немного пользователей О3, а еще меньше количество из них использует приведение типов   Поэтому можно сделать обязательное двоеточие. Тогда - да, нужно добавить строку Код: "OBERON" 
 | |
| Автор: | trurl [ 28 июн 2019, 12:58 ] | 
| Заголовок сообщения: | Re: Новый синтаксис приведения (охраны) типа. Использовать "x(:T)" вместо x(T) | 
| А почему не просто x:T? | |
| Автор: | Zorko [ 28 июн 2019, 15:50 ] | 
| Заголовок сообщения: | Re: Новый синтаксис приведения (охраны) типа. Использовать "x(:T)" вместо x(T) | 
| В идеале было бы хорошо, но так будет сложнее парсить, да и учёт приоритета операций добавится. | |
| Автор: | Saferoll [ 28 июн 2019, 18:08 ] | 
| Заголовок сообщения: | Re: Новый синтаксис приведения (охраны) типа. Использовать "x(:T)" вместо x(T) | 
| trurl писал(а): А почему не просто x:T?Может быть путаница, например, в операторе CASE или WITH. А в скобках путаницы не будет - двоеточие после скобки ни в каком ином выражении стоять не может. Да и для человека нагляднее: скобки означают уточнение, а двоеточие - задание типа. | |
| Автор: | SovietPony [ 01 июл 2019, 12:49 ] | 
| Заголовок сообщения: | Re: Новый синтаксис приведения (охраны) типа. Использовать "x(:T)" вместо x(T) | 
| Раз тут пошло такое дело с допустимой поломкой совместимости... Я давно подумываю про явную маркировку использования var/out-параметров для наглядности. Код: "OBERON" 
 | |
| Автор: | Zorko [ 01 июл 2019, 14:17 ] | 
| Заголовок сообщения: | Re: Новый синтаксис приведения (охраны) типа. Использовать "x(:T)" вместо x(T) | 
| Да, это будет полезно. Сам о таком уточнении думал. А почему именно символ "@", а не, скажем, "$" или "&"? | |
| Страница 1 из 4 | Часовой пояс: UTC + 2 часа | 
| Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ | |