Difference between revisions of "Compiler error message"
From Dragon Age Toolset Wiki
m (Created) |
m (Added error) |
||
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | {{Infobox script}} | ||
+ | |||
When the compiler encounters a syntax error it aborts the process for that script and displays a '''compiler error message''' in the [[Log window panel|Log window]]. | When the compiler encounters a syntax error it aborts the process for that script and displays a '''compiler error message''' in the [[Log window panel|Log window]]. | ||
− | There are a couple of guidelines to remember when trying compiler error message | + | There are a couple of guidelines to remember when trying to understand compiler error message: |
− | * The compiler reports the error when it can no longer make sense of the script: this often occurs on the line ''after'' the line containing the error. | + | * The compiler reports the error when it can no longer make sense of the script: this often occurs on the line '''after'' the line containing the error. |
− | * | + | * If the script has one or more include files the error may have "'''while compiling <include>.nss'''" appended to it, however the error may be in the script being compiled rather than an include file. |
+ | == Errors == | ||
+ | The following is a list of compiler error messages that have been encountered and what caused them. It is important to be aware that the listed cause(s) may not be the ''only'' cause(s) for a particular error and therefore should be viewed as examples rather than definitions. | ||
{{TOC}} | {{TOC}} | ||
− | + | === <span id="A">A</span> === | |
+ | ;After compound statement at end | ||
+ | :The double quote before the file name is missing from an [[#include]] directive. | ||
+ | |||
=== <span id="B">B</span> === | === <span id="B">B</span> === | ||
− | ; Break outside of loop or case statement ( | + | ; Break outside of loop or case statement |
− | : | + | : [example]. |
+ | |||
+ | <!-- | ||
+ | === <span id="C">C</span> === --> | ||
+ | === <span id="D">D</span> === | ||
+ | ;Declaration does not match parameters | ||
+ | : The wrong type of argument used when calling a function, e.g. a [[string]] passed into a [[int]] argument. | ||
+ | |||
+ | ;Declaration does not match parameters (<function>) | ||
+ | : Too few or too many arguments used when calling a function. | ||
+ | |||
+ | ;Duplicate function implementation (<function>) | ||
+ | : Two functions with the same name exist. | ||
− | |||
− | |||
=== <span id="E">E</span> === | === <span id="E">E</span> === | ||
− | ; Equality test has invalid operands | + | ; Equality test has invalid operands |
− | : [ | + | : [example]. |
− | : The include file | + | |
+ | === <span id="F">F</span> === | ||
+ | ;Function definition missing parameter list | ||
+ | :The brackets were omitted when defining a function. | ||
+ | <!-- | ||
+ | === <span id="G">G</span> === --><!-- | ||
+ | === <span id="H">H</span> === --> | ||
+ | === <span id="I">I</span> === | ||
+ | ;Included file not found | ||
+ | # An include file does not exist or has not been saved. | ||
+ | # The wrong file name used or the ".nss" extension included in an [[#include]] directive. | ||
+ | : NOTE: include files cannot not be compiled directly (attempting to do so will generate a [[#S|Script must contain either a main or StartingConditional]] error). | ||
− | + | ;Invalid declaration type | |
− | + | :The brackets were omitted when declaring a function. | |
− | <!-- | + | <!-- |
− | + | === <span id="J">J</span> === --><!-- | |
− | + | === <span id="K">K</span> === --><!-- | |
− | <!-- === <span id="K">K</span> === --> | + | === <span id="L">L</span> === --><!-- |
− | <!-- === <span id="L">L</span> === --> | + | === <span id="K">K</span> === --><!-- |
− | <!-- === <span id="K">K</span> === --> | + | === <span id="K">K</span> === --> |
− | <!-- === <span id="K">K</span> === --> | + | |
=== <span id="M">M</span> === | === <span id="M">M</span> === | ||
− | ; Mismatched types | + | ; Mismatched types |
− | # | + | # A value or variable is assigned to a variable of a different type, e.g. a [[string]] value assigned to an [[int]] varaible. |
− | # A | + | # A function is assigned to a variable of a different type, e.g. a [[string] function to assigned to an [[int]] variable. |
− | : | + | # A function returns a different type from its declared return type. |
+ | # A [[void]] function is assigned to a variable. | ||
+ | |||
+ | ;Multiple case constant statements within switch | ||
+ | :Two or more <code>case</code> statements are using the same value. This could be due to the same symbolic constant or literal value being used multiple times, or a literal and a constant with the same value being used. | ||
=== <span id="N">N</span> === | === <span id="N">N</span> === | ||
− | ; No colon after case label : [ | + | ; No colon after case label |
+ | : [example]. | ||
; No left bracket on arg list | ; No left bracket on arg list | ||
− | + | # The brackets were omitted when calling a function (without arguments). | |
− | ; Not all control paths return a value | + | ; No semicolon after expression |
+ | # The statement terminator (;) is missing from the end of an expression. | ||
+ | # A keyword in an expression contains a typo. | ||
+ | |||
+ | ;No semicolon after structure | ||
+ | # The statement terminator (;) is missing from the end of a structure definition. | ||
+ | |||
+ | ; Not all control paths return a value | ||
# A function does not have a return statement. | # A function does not have a return statement. | ||
− | # | + | # A logic branch in a function does not have a return statement. |
# A function does not have an else or default case with a return function. | # A function does not have an else or default case with a return function. | ||
− | + | <!-- | |
− | + | === <span id="O">O</span> === --> | |
− | <!-- === <span id="O">O</span> === --> | + | |
=== <span id="P">P</span> === | === <span id="P">P</span> === | ||
; Parsing variable list | ; Parsing variable list | ||
− | + | # The statement terminator (;) is missing from the on previous line. | |
− | + | # A line contains a rogue double-quotes mark. | |
− | <!-- === <span id="Q">Q</span> === --> | + | <!-- |
− | <!-- === <span id="R">R</span> === --> | + | === <span id="Q">Q</span> === --><!-- |
− | + | === <span id="R">R</span> === --> | |
− | <!-- === <span id="T">T</span> === --> | + | === <span id="S">S</span> === |
+ | ;Script must contain either a main or StartingConditional | ||
+ | # Compiled an include file directly (instead of the script including it). | ||
+ | # Used the incorrect case i.e. Main instead of main. | ||
+ | <!-- | ||
+ | === <span id="T">T</span> === --> | ||
=== <span id="U">U</span> === | === <span id="U">U</span> === | ||
; Undefined identifier (<identifier>) | ; Undefined identifier (<identifier>) | ||
− | # A variable is being used before it is defined | + | # A variable is being used before it is defined. |
− | # A string is missing its opening double-quotes mark | + | # A string is missing its opening double-quotes mark. |
+ | |||
+ | ;Undefined structure | ||
+ | : A [[struct keyword|struct]] is being used before it is defined. | ||
+ | |||
+ | ;Unknown state in compiler | ||
+ | : Invalid syntax e.g. an extra comma in a list of arguments. | ||
; Unterminated string constant | ; Unterminated string constant | ||
− | # A string is missing its closing double-quotes mark | + | # A string is missing its closing double-quotes mark. |
− | # A line contains a | + | # A line contains a rogue double-quotes mark. |
=== <span id="V">V</span> === | === <span id="V">V</span> === | ||
− | ; Variable defined without type | + | ; Variable defined without type |
− | : [ | + | # A value is being assigned to a variable before it has been declared. |
− | + | # A variable is being assigned or passed into a function before it has been declared. | |
+ | |||
+ | ;Void expression where non void required | ||
+ | : Assigned a member of a [[vector]] which was itself a member of a [[struct keyword|struct]] to a variable. | ||
+ | <!-- | ||
+ | === <span id="W">W</span> === --><!-- | ||
+ | === <span id="X">X</span> === --><!-- | ||
+ | === <span id="Y">Y</span> === --><!-- | ||
+ | === <span id="Z">Z</span> === --> | ||
− | + | [[Category:Scripts]] | |
− | + | [[Category:Error messages]] | |
− | + | ||
− | + |
Latest revision as of 01:27, 27 April 2020
Scripting |
---|
|
When the compiler encounters a syntax error it aborts the process for that script and displays a compiler error message in the Log window.
There are a couple of guidelines to remember when trying to understand compiler error message:
- The compiler reports the error when it can no longer make sense of the script: this often occurs on the line 'after the line containing the error.
- If the script has one or more include files the error may have "while compiling <include>.nss" appended to it, however the error may be in the script being compiled rather than an include file.
Errors
The following is a list of compiler error messages that have been encountered and what caused them. It is important to be aware that the listed cause(s) may not be the only cause(s) for a particular error and therefore should be viewed as examples rather than definitions.
Contents |
---|
A
- After compound statement at end
- The double quote before the file name is missing from an #include directive.
B
- Break outside of loop or case statement
- [example].
D
- Declaration does not match parameters
- The wrong type of argument used when calling a function, e.g. a string passed into a int argument.
- Declaration does not match parameters (<function>)
- Too few or too many arguments used when calling a function.
- Duplicate function implementation (<function>)
- Two functions with the same name exist.
E
- Equality test has invalid operands
- [example].
F
- Function definition missing parameter list
- The brackets were omitted when defining a function.
I
- Included file not found
- An include file does not exist or has not been saved.
- The wrong file name used or the ".nss" extension included in an #include directive.
- NOTE: include files cannot not be compiled directly (attempting to do so will generate a Script must contain either a main or StartingConditional error).
- Invalid declaration type
- The brackets were omitted when declaring a function.
M
- Mismatched types
- A value or variable is assigned to a variable of a different type, e.g. a string value assigned to an int varaible.
- A function is assigned to a variable of a different type, e.g. a [[string] function to assigned to an int variable.
- A function returns a different type from its declared return type.
- A void function is assigned to a variable.
- Multiple case constant statements within switch
- Two or more
case
statements are using the same value. This could be due to the same symbolic constant or literal value being used multiple times, or a literal and a constant with the same value being used.
N
- No colon after case label
- [example].
- No left bracket on arg list
- The brackets were omitted when calling a function (without arguments).
- No semicolon after expression
- The statement terminator (;) is missing from the end of an expression.
- A keyword in an expression contains a typo.
- No semicolon after structure
- The statement terminator (;) is missing from the end of a structure definition.
- Not all control paths return a value
- A function does not have a return statement.
- A logic branch in a function does not have a return statement.
- A function does not have an else or default case with a return function.
P
- Parsing variable list
- The statement terminator (;) is missing from the on previous line.
- A line contains a rogue double-quotes mark.
S
- Script must contain either a main or StartingConditional
- Compiled an include file directly (instead of the script including it).
- Used the incorrect case i.e. Main instead of main.
U
- Undefined identifier (<identifier>)
- A variable is being used before it is defined.
- A string is missing its opening double-quotes mark.
- Undefined structure
- A struct is being used before it is defined.
- Unknown state in compiler
- Invalid syntax e.g. an extra comma in a list of arguments.
- Unterminated string constant
- A string is missing its closing double-quotes mark.
- A line contains a rogue double-quotes mark.
V
- Variable defined without type
- A value is being assigned to a variable before it has been declared.
- A variable is being assigned or passed into a function before it has been declared.