Руководство по ошибкам Компилятора V3.1

Типы ошибок, обрабатываемых компилятором, и способы их устранения.

Преобразование скриптов в *.dat файл состоит из двух процессов: компиляции и линковки.

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

1.  Found no matching File: <file_name> – отсутствует компилируемый файл (группа файлов), указанный(ая) в файле *.src.

2.  Syntax error: <expression> - указанное выражение не соответствует требуемому синтаксису скриптов.

3.  Unexpected End of File. – неожиданный конец файла (обрабатываемое выражение синтаксически не завершено).

4.  Expected <expression> - внутри выражения в соответствии с правилами синтаксиса отсутствует указанное подвыражение.

5.  Assignment: Left operand is not a lvalue – возникает при попытке присвоить значение величине, которой оно не может быть присвоено (например: 500 = ххх).

6.  Unknown identifier: <name> - неизвестное имя переменной. Возникает когда переменная используется в выражении до ее объявления. Примечание: ошибка довольно сложна для локализации, существует несколько правил деклараций переменных: декларация функции или VAR переменной должна предшествовать первому вызову функции или VAR переменной; класс должен быть декларирован до его использования в любом виде; lvalue в выражениях присвоения должно быть декларировано до присвоения – эти виды ошибок обрабатываются компилятором на стадии компиляции. Имя инстанции (INSTANCE) или константы (CONST) можно использовать в выражениях до их деклараций, но в скриптах эти имена должны быть обязательно декларированы, иначе возникнет ошибка этого типа на стадии линковки.

НЕ нашли? Не то? Что вы ищете?

7.  Expected an Integer-Value: <expression> - возникает при нахождении внутри целочисленного значения недопустимого символа (например: 256х)

8.  Redefined identifier: <name> - повторная декларация переменной (данное имя задекларировано в скриптах более одного раза).

9.  Syntax Error. First letter is a digit in prototype (instance) name. <name> - имя класса, прототипа или инстанции не может начинаться с цифры.

10.  Not a valid class or prototype name: <name> - возникает при декларации прототипа или инстанции, когда базовый класс или прототип не декларирован.

11.  Undefined function: <name> - встретился вызов функция с именем name раньше её декларации.

12.  Func does not return a <type_value> - выполнен вызов функции в выражении присвоения, но функция имеет тип void или тип, возвращаемый функцией, не соответствует типу lvalue.

13.  Unexpected 'return' – выражение return встретилось не в функции.

14.  Wrong type: <name> - выдается только линковщиком при несоответствии присваиваемых или сравниваемых типов. Примечание: В версии компилятора 2.0 эта ошибка выявляется уже на стадии компиляции и более подробно будет рассмотрена ниже.

Обычные ошибки не приводят к останову процесса компиляции. Введены начиная с версии 2.0.

1.  <name> undeclared name (function) – аналогично критическому сообщению №6, но возникает на стадии компиляции.

2.  Wrong type in '!' expression – неверный тип отрицаемого выражения (может быть только INT).

3.  Cannot assignment in 'if' expression – внутри if выражения встретилась операция присвоения (недопустимо).

4.  Comparison is possible only in 'if' expression – операция сравнения встречена не в if выражении (недопустимо).

5.  Function <name> in 'if' expression should return type INT – функция внутри if выражения может иметь возвращаемый тип только INT.

6.  Unexpected return – неожиданный return. Особенностью скриптов является то, что любое выражение внутри функции, если оно записано одиноко (не в операциях сравнения или присваивания) заносится в стек и может быть возвращено при выходке их функции (для этого необязательно указывать слово return), но это является потенциально скрытой ошибкой, подлежащей устранению.

7.  Index = <index> out of bounds array <name>. – индекс массива с именем name выходит за объявленную границу.

8.  Function <name>: Argument <number>: " Cannot convert from type <type1> to <type2> - значение переменной типа type1, используемое в качестве аргумента number функции с именем name типа нельзя преобразовать к типу аргумента type2. Необходимо использовать одинаковые типы.

9.  Cannot convert from type <type1> to <type2> - значение переменной типа type1 нельзя преобразовать к типу переменной type2. Необходимо использовать одинаковые типы. Примечание: Есть исключение из правила, оно относится к переопределенным типам. Для понимания этих типов необходимо написать отдельную статью. Это же относится и к сообщению с ошибкой №8 (см. выше).

10.  Possible error, function should return value – функция объявлена с возвращаемым типом, но при выходе из неё ничего не возвращается. Фактические ошибки.

Внимания не влияют на процесс компиляции и линковки. Введены начиная с версии 2.0.

1.  Possible error, function should return value – функция объявлена с возвращаемым типом, но при выходе из неё ничего не возвращается. Возвращаемые функцией значения скрыты (неявны), возможна в дальнейшем потенциальная ошибка.

2.  Argument <string> should be uppercase! – строковый аргумент функции должен содержать только заглавные буквы.