Оберон-клуб «ВЄДА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/ |