powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Косвенность
8 сообщений из 8, страница 1 из 1
Косвенность
    #35255598
Фома
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фома
>s W="""Пример""_ins"

>s ins=" подстановки"

>w @W
Пример подстановки

>s r=@W
<SYNTAX>


Объясните, почему при выводе на экран все работает, а использование той же конструкции при присвоении вызывает ошибку (в Cache - <SYNTAX>, в MSM - <INDER>)?
...
Рейтинг: 0 / 0
Косвенность
    #35256609
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как мы знаем из документации,

Cache' recognizes five types of indirection:

*
Name indirection
*
Pattern indirection
*
Argument indirection
*
Subscript indirection
*
$TEXT argument indirection

Понятия типа "expression indirection" ни в Каше, ни в МСМ нет

>w @W

это Argument indirection

>s r=@W

Это могло бы быть name indirection, однако W не является именем переменной.
Из-за этого и происходит ошибка. Нужно писать либо

xecute "s r="_W

либо

set s="r="_W
set @s

Живучий вопрос, поднимается регулярно ;)

Любви
logist (Сергей Шутов)
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Косвенность
    #35257087
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно для понимания добавить:

>s W="""Пример""_ins,!,$zv"

>s ins=" подстановки"

>w @W


>s W="""Пример""_ins,a=$zv"

>s ins=" подстановки"

>s @("r="_w)
...
Рейтинг: 0 / 0
Косвенность
    #35263114
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел, где в принципе есть косвенность выражения - это косвенный аргумент quit.

Так что в принципе можно сделать рутинку с одной функцией
eval(expr) q @expr

К сожалению, в каше с этим глюк - допускается форма
quit @"1,2,3"
В этом случае возвращается 1 хотя должно кинуть ошибку синтаксиса.

Кстати, спасибо за интересную задачку ))
...
Рейтинг: 0 / 0
Косвенность
    #35264075
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему же, работает по стандарту
Код: plaintext
quit @"Arg1,Arg2,Arg3" => quit Arg1,Arg2,Arg3 <=> quit Arg1 quit Arg2 quit Arg3
...
Рейтинг: 0 / 0
Косвенность
    #35264431
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот и не по стандарту
http://71.174.62.16/Demo/AnnoStd?Frame=Main&Page=a108044
У команды quit нет перечисления аргументов через запятую и в отличие от остальных команд такая замена "несколько аргументов" на "несколько команд с одним аргументом" к команде quit неприменима.
Сравните с остальными командами. У остальных есть, даже у goto, хотя на первый взгляд кажется что это бессмысленно, но у аргументов goto могут быть собственные постусловия. А у quit нет постусловий на аргументы. Так что если каше это поддерживает то это бессмысленное нарушение синтаксиса.
...
Рейтинг: 0 / 0
Косвенность
    #35264688
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну яУ команды quit нет перечисления аргументов через запятую...По Стандарту нет, Вы правы. Действительно, в Cache реализовано (вполне бессмысленное) расширение Стандарта, а именно, допустима многоаргументная команда QUIT, у которой может выполняться только первый аргумент. Говоря языком Стандарта, QUIT в Cache определена так:
Код: plaintext
1.
2.
3.
4.
Q[UIT]:postcond | [ SP ]
                | SP L quitargument
quitargument ::= |  expr
                 │  expratom V L quitargument │
Забавно, что в Студии парсер ближе к Стандарту, "лишние" аргументы Quit подчеркиваются красным, но компиляция, естественно, проходит без ошибок.
...
Рейтинг: 0 / 0
Косвенность
    #35264704
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, исправляю опечатку (знак @ был пропущен).
Код: plaintext
1.
2.
3.
4.
5.
Q[UIT]:postcond | [ SP ]
                | SP L quitargument
quitargument ::= |  expr
                 │  @ expratom V L quitargument │

...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Косвенность
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]