gretmn102 / Qsp.FSharp

QSP ecosystem written in F# environment. Contains: language core (AST, parser, printer), language server (LSP) and CLI utility for manipulating language sources.
2 stars 1 forks source link

Не распознается оператор IIF #22

Open sal0mander opened 3 years ago

sal0mander commented 3 years ago

Описание тернарного оператора есть здесь: http://wiki.qsp.su/help:conditional

gretmn102 commented 3 years ago

@sal0mander О, привет, не ожидал, что сюда вообще хоть кто-то напишет. Собственно, что именно не распознается? Снимок Всё вроде бы нормально. Проверял на версии 0.0.6

sal0mander commented 3 years ago

@gretmn102 перепроверил. Согласен, в случае слитного написания всё ок. В случае использования пробела выдает ошибку распознавания. Пробел движок qsp воспринимает нормально. image image image

gretmn102 commented 3 years ago

@sal0mander Да, я тогда думал, что можно синтаксически отделить функцию от процедуры вроде такой: GS 'иди туда, не знаю куда', 'возьми то, не знаю что', т.е. когда ставим пробел — то всё, это однозначно процедура, и никакими силами не переубедишь парсер в обратном. Только потом дошло, что QSP определяет по имени, с чем имеет дело, что довольно странно и не очевидно, как по мне. Переделать можно, но это тяжело, да и пока не вижу смысла над этим заморачиваться.

Ах да, у нас лютая путаница в терминах, потому и сливаются функции, операторы, процедуры воедино. Смотри, немного занудства: оператор — это скорее +, -, * и т.п., у которого есть особенная inline-запись в духе arg1 + arg2. Это — бинарный оператор, но в языках программирования есть тернарные операторы, как например в C-подобных языках связка ? и :, т.е. condition ? thenExpr : elseExpr, или как в Python:

x, y = 5, 6
print("x" if x > y else "y")

Да, в Python тернарные операторы выглядят очень странно, ну да ладно. Так вот, когда ты сказал про тернарный оператор, я уж было подумал, что Byte завез что-то такое, потому я и напрягся.

Перенес вопрос на серверную часть, потому что это — клиент для VS Code, и теоретически сервер можно соединить с любым редактором, который поддерживает LSP. Просто VS Code первым под руку попался, на нём, наверное, всё и остановится, хе-хе.