- Регистрация
- 24 Мар 2006
- Сообщения
- 9.860
- Благодарности
- 6.740
- Баллы
- 1.625
Руководство по ошибкам и способам их устранения для программы Gothic Sourcer версий 3.1х (модостроение для Готики).
Типы ошибок, обрабатываемых компилятором, и способы их устранения.
Преобразование скриптов в *.dat файл состоит из двух процессов: компиляции и линковки.
Критические ошибки вызывают останов процесса компиляции, без их устранения дальнейшая компиляция невозможна.
1. Found no matching File: – отсутствует компилируемый файл (группа файлов), указанный(ая) в файле *.src.
2. Syntax error: - указанное выражение не соответствует требуемому синтаксису скриптов.
3. Unexpected End of File. – неожиданный конец файла (обрабатываемое выражение синтаксически не завершено).
4. Expected - внутри выражения в соответствии с правилами синтаксиса отсутствует указанное подвыражение.
5. Assignment: Left operand is not a lvalue – возникает при попытке присвоить значение величине, которой оно не может быть присвоено (например: 500 = ххх).
6. Unknown identifier: - неизвестное имя переменной. Возникает когда переменная используется в выражении до ее объявления. Примечание: ошибка довольно сложна для локализации, существует несколько правил деклараций переменных: декларация функции или VAR переменной должна предшествовать первому вызову функции или VAR переменной; класс должен быть декларирован до его использования в любом виде; lvalue в выражениях присвоения должно быть декларировано до присвоения – эти виды ошибок обрабатываются компилятором на стадии компиляции. Имя инстанции (INSTANCE) или константы (CONST) можно использовать в выражениях до их деклараций, но в скриптах эти имена должны быть обязательно декларированы, иначе возникнет ошибка этого типа на стадии линковки.
7. Expected an Integer-Value: - возникает при нахождении внутри целочисленного значения недопустимого символа (например: 256х)
8. Redefined identifier: - повторная декларация переменной (данное имя задекларировано в скриптах более одного раза).
9. Syntax Error. First letter is a digit in prototype (instance) name. - имя класса, прототипа или инстанции не может начинаться с цифры.
10. Not a valid class or prototype name: - возникает при декларации прототипа или инстанции, когда базовый класс или прототип не декларирован.
11. Undefined function: - встретился вызов функция с именем name раньше её декларации.
12. Func does not return a - выполнен вызов функции в выражении присвоения, но функция имеет тип void или тип, возвращаемый функцией, не соответствует типу lvalue.
13. Unexpected 'return' – выражение return встретилось не в функции.
14. Wrong type: - выдается только линковщиком при несоответствии присваиваемых или сравниваемых типов. Примечание: В версии компилятора 2.0 эта ошибка выявляется уже на стадии компиляции и более подробно будет рассмотрена ниже.
Обычные ошибки не приводят к останову процесса компиляции. Введены начиная с версии 2.0.
1. 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 in 'if' expression should return type INT – функция внутри if выражения может иметь возвращаемый тип только INT.
6. Unexpected return – неожиданный return. Особенностью скриптов является то, что любое выражение внутри функции, если оно записано одиноко (не в операциях сравнения или присваивания) заносится в стек и может быть возвращено при выходке их функции (для этого необязательно указывать слово return), но это является потенциально скрытой ошибкой, подлежащей устранению.
7. Index = out of bounds array . – индекс массива с именем name выходит за объявленную границу.
8. Function : Argument : » Cannot convert from type to - значение переменной типа type1, используемое в качестве аргумента number функции с именем name типа нельзя преобразовать к типу аргумента type2. Необходимо использовать одинаковые типы.
9. Cannot convert from type to - значение переменной типа type1 нельзя преобразовать к типу переменной type2. Необходимо использовать одинаковые типы. Примечание: Есть исключение из правила, оно относится к переопределенным типам. Для понимания этих типов необходимо написать отдельную статью. Это же относится и к сообщению с ошибкой №8 (см. выше).
10. Possible error, function should return value – функция объявлена с возвращаемым типом, но при выходе из неё ничего не возвращается. Фактические ошибки.
Внимания не влияют на процесс компиляции и линковки. Введены начиная с версии 2.0.
1. Possible error, function should return value – функция объявлена с возвращаемым типом, но при выходе из неё ничего не возвращается. Возвращаемые функцией значения скрыты (неявны), возможна в дальнейшем потенциальная ошибка.
2. Argument should be uppercase! – строковый аргумент функции должен содержать только заглавные буквы.
Автор статьи: Vam.
Типы ошибок, обрабатываемых компилятором, и способы их устранения.
Преобразование скриптов в *.dat файл состоит из двух процессов: компиляции и линковки.
Критические ошибки вызывают останов процесса компиляции, без их устранения дальнейшая компиляция невозможна.
1. Found no matching File: – отсутствует компилируемый файл (группа файлов), указанный(ая) в файле *.src.
2. Syntax error: - указанное выражение не соответствует требуемому синтаксису скриптов.
3. Unexpected End of File. – неожиданный конец файла (обрабатываемое выражение синтаксически не завершено).
4. Expected - внутри выражения в соответствии с правилами синтаксиса отсутствует указанное подвыражение.
5. Assignment: Left operand is not a lvalue – возникает при попытке присвоить значение величине, которой оно не может быть присвоено (например: 500 = ххх).
6. Unknown identifier: - неизвестное имя переменной. Возникает когда переменная используется в выражении до ее объявления. Примечание: ошибка довольно сложна для локализации, существует несколько правил деклараций переменных: декларация функции или VAR переменной должна предшествовать первому вызову функции или VAR переменной; класс должен быть декларирован до его использования в любом виде; lvalue в выражениях присвоения должно быть декларировано до присвоения – эти виды ошибок обрабатываются компилятором на стадии компиляции. Имя инстанции (INSTANCE) или константы (CONST) можно использовать в выражениях до их деклараций, но в скриптах эти имена должны быть обязательно декларированы, иначе возникнет ошибка этого типа на стадии линковки.
7. Expected an Integer-Value: - возникает при нахождении внутри целочисленного значения недопустимого символа (например: 256х)
8. Redefined identifier: - повторная декларация переменной (данное имя задекларировано в скриптах более одного раза).
9. Syntax Error. First letter is a digit in prototype (instance) name. - имя класса, прототипа или инстанции не может начинаться с цифры.
10. Not a valid class or prototype name: - возникает при декларации прототипа или инстанции, когда базовый класс или прототип не декларирован.
11. Undefined function: - встретился вызов функция с именем name раньше её декларации.
12. Func does not return a - выполнен вызов функции в выражении присвоения, но функция имеет тип void или тип, возвращаемый функцией, не соответствует типу lvalue.
13. Unexpected 'return' – выражение return встретилось не в функции.
14. Wrong type: - выдается только линковщиком при несоответствии присваиваемых или сравниваемых типов. Примечание: В версии компилятора 2.0 эта ошибка выявляется уже на стадии компиляции и более подробно будет рассмотрена ниже.
Обычные ошибки не приводят к останову процесса компиляции. Введены начиная с версии 2.0.
1. 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 in 'if' expression should return type INT – функция внутри if выражения может иметь возвращаемый тип только INT.
6. Unexpected return – неожиданный return. Особенностью скриптов является то, что любое выражение внутри функции, если оно записано одиноко (не в операциях сравнения или присваивания) заносится в стек и может быть возвращено при выходке их функции (для этого необязательно указывать слово return), но это является потенциально скрытой ошибкой, подлежащей устранению.
7. Index = out of bounds array . – индекс массива с именем name выходит за объявленную границу.
8. Function : Argument : » Cannot convert from type to - значение переменной типа type1, используемое в качестве аргумента number функции с именем name типа нельзя преобразовать к типу аргумента type2. Необходимо использовать одинаковые типы.
9. Cannot convert from type to - значение переменной типа type1 нельзя преобразовать к типу переменной type2. Необходимо использовать одинаковые типы. Примечание: Есть исключение из правила, оно относится к переопределенным типам. Для понимания этих типов необходимо написать отдельную статью. Это же относится и к сообщению с ошибкой №8 (см. выше).
10. Possible error, function should return value – функция объявлена с возвращаемым типом, но при выходе из неё ничего не возвращается. Фактические ошибки.
Внимания не влияют на процесс компиляции и линковки. Введены начиная с версии 2.0.
1. Possible error, function should return value – функция объявлена с возвращаемым типом, но при выходе из неё ничего не возвращается. Возвращаемые функцией значения скрыты (неявны), возможна в дальнейшем потенциальная ошибка.
2. Argument should be uppercase! – строковый аргумент функции должен содержать только заглавные буквы.
Автор статьи: Vam.