Поиск и исправление ошибок в SRL

Ошибки синтаксиса SRL отображаются тогда, когда PolyAnalyst не может определить синтаксис вашего запроса. В случае ошибки вы увидите всплывающее окно с указанием строки и колонки (номером символа от начала строки, включая пробелы), где была допущена ошибка.

Например:

Выражение 2 > 2 вернет "ложь".

Для примера покажем неправильное использование оператора:

Выражение 2 :> 2 вернет ошибку.

Данное выражение будет ошибочным, т.к. в SRL нет оператора :>. В таком случае вы увидите сообщение типа:

Данное выражение не является SRL- или PDL-выражением. Ошибки:

SRL: Строка 1 колонка 3: ошибка синтаксиса в ":>" пропущено { % "<end of expression>" operator "xor" "and" "or" "," ")" }

PDL: Строка 1 колонка 1: ошибка синтаксиса в "2" пропущено { "!" "false" "true" "yes" "mod" "no" string identifier number }

Обратите внимание, что PolyAnalyst отслеживает как SRL, так и PDL синтаксис. Подробнее об использовании PDL внутри SRL-выражений см. здесь.

Иногда PolyAnalyst видит ошибку синтаксиса не там, где она в действительности допущена. Например, если мы наберем название [Моя колонка], опустив при этом закрывающую квадратную скобку, PolyAnalyst выдаст сообщение о том, что ошибка допущена около открывающей скобки, поскольку закрывающая не будет найдена.

Эта ошибка может быть вызвана несколькими факторами. Вот некоторые из них:

  • неверное использование пробела (не забудьте отделить операторы от значений с помощью хотя бы одного пробела);

  • неверное использование квадратных скобок при указании колонки;

  • набор буквенного значения при неверном использовании кавычек;

  • отсутствие круглых скобок или лишние круглые скобки;

  • ошибка в названии функции;

  • использование лишней запятой или пропущенная запятая при указании аргументов функции;

  • неверное использование оператора (например 1 + или 1 + + 2).

PolyAnalyst периодически принимает неверный синтаксис SRL

В некоторых случаях PolyAnalyst допускает неполное соблюдение правил синтаксиса, однако подобные случаи ограничены. Нестрогая оценка синтаксиса иногда затрудняет поиск и исправление ошибки в выражении, которое не дает желаемое поведение. Ниже представлены примеры нестрогого синтаксиса:

  • 1,2 – запятая и число 2 пропускаются, возвращаемое значение 1 (только если 2 – последняя часть выражения);

  • (1 + 2)) – лишняя закрывающая скобка пропускается (только если это – последняя часть выражения);

  • "собака"" – лишние кавычки пропускаются (только если это – последняя часть выражения).

Поиск и исправление ошибок типа "колонка не найдена"

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

Имена колонок учитывают регистр внутри SRL-выражений, следовательно вы могли допустить ошибку в регистре. Если в имени колонки есть пробел, то нужно заключить название колонки в квадратные скобки, чтобы система понимала, что вы ссылаетесь на одну колонку, например [Моя колонка].

Поиск и исправление ошибок типа "неверное число аргументов"

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

Например, функция abs() принимает один аргумент числового типа. Если вы включаете в аргументы два числа, например abs(3, 4), то вы включаете неверное число аргументов, в результате чего система выдает ошибку.

Обратите внимание, что эта ошибка часто случается из-за того, что в выражении не хватает запятой (либо добавлена лишняя запятая), например, выражение abs(3,) вернет ошибку.

Поиск и исправление ошибок типа "несоответствие типов аргументов"

Эта ошибка отображается тогда, когда PolyAnalyst определяет несоответствие типов данных одного или нескольких аргументов в функции или операторе.

Например, функция abs() принимает число и возвращает абсолютное значение числа.

Если вместо числа вы включаете в выражение булево или строковое значение, то вы включаете несоответствующий тип данных в выражение и получаете сообщение об ошибке.