语法错误(语法检查信息)

GameMaker中编写游戏时,错误报告的第一级是在代码或 GML 可视化编辑器中,它是语法检查器。当你编写代码或者添加动作时,GameMaker 会检查它是否遵循语言的语法,并标记出它发现的任何问题,这样你就可以在运行游戏或者编译可执行文件之前解决这些问题。

根据您是否在语法检查设置中启用了语法检查 ,语法错误检查会发生不同的情况。

语法错误(语法检查禁用)

Syntax Errors Example

这些错误分为两大类:

当你写代码的时候,语法错误会更新(在输入代码和窗口中出现的错误之间会有一个短暂的停顿,以防止未完成代码的错误被报告) ,并且会遵循以下格式:

[object] - [event] - [Line Number] - [Position In Line]: [error string]

或者,如果错误出现在脚本中,那么它将是:

[script] - [Line Number] - [Position in line]: [error string]

双击Icon LMB输出控制台中显示的任何错误,都会将您带到具有错误的对象事件或脚本中的行,以便您可以编辑它。

应该注意的是,其中一些错误将显示在代码中的特定位置,但实际错误可能是由其他地方引起的,或者一个问题可能引发多个错误消息:

Multiple Syntax Errors在上面的图像中,所有三个错误Syntax Error Icon都是由一个错误引起的——在第220行中对函数variable_instance_exists()使用了分号“;”而不是逗号“,”。

语法错误列表

下表列出了不同的语法错误及其主要原因:

 

错误(Error)类型(Type)描述
Malformed reference [val]Syntax Error Icon这意味着存在一个内部 AST 验证错误(您应该永远不会看到这个错误,但是如果您确实看到了,请考虑从帮助菜单中提交错误报告)
Malformed hexadecimal character escape sequence Syntax Error Icon如果在字符串中使用了转义字符的十六进制值,并且格式不正确,就会发生这种情况。
Unexpected node [val]Syntax Error Icon这意味着存在一个内部 AST 验证错误(您应该永远不会看到这个错误,但是如果您确实看到了,请考虑从帮助菜单中提交错误报告)
Exception while parsing [val]Syntax Error Icon这意味着存在一个内部 AST 验证错误(您应该永远不会看到这个错误,但是如果您确实看到了,请考虑从帮助菜单中提交错误报告)
Malformed id reference [val]Syntax Error Icon 
Unnecessary expression [val] used as a statementSyntax Error Icon当语法检查器检测到一个表达式(在[val]中显示)时,将发生此错误。例如,下面的代码将抛出错误,因为它期望的三元运算符?错误的遇到了32
temp_x = x < (room_width / 2)  32: room_width - 32;
Malformed array reference [val]Syntax Error Icon这意味着您试图以不正确的方式引用数组,[val]将显示引用。
Unexpected binary operator [val]Syntax Error Icon当您在不应该使用位操作符的位置使用位操作符时,会发生此错误,并且[val]显示位操作符的位置。
Unterminated string literalSyntax Error Icon当您使用@""编写字符串但在代码结束前未关闭该字符串时,将发生此错误。
Single quotes no longer allowed for stringSyntax Error Icon当您尝试使用以单引号包装的字符串(例如: 'Hello World'而不是双引号,例如: "Hello World")时,会发生此错误。
Unexpected syntax errorSyntax Error Icon此错误表示语法错误,解析器无法更具体地识别该错误。
Got "[val1]", expected "[val2]"Syntax Error Icon当语法检查器期望某个值或符号,但得到一个不同的值或符号时,就会发生这种情况,其中[val1]是当前符号或值,[val2]是期望的符号或值。例如:
Got "{", expected "("
Got "[val1]", expected "[val2]" or "[val3]"Syntax Error Icon如上所述,但当有多个可能的预期符号。
Expected expressionSyntax Error Icon当语法检查器期望一个表达式,但是没有给出该表达式时,就会发生此错误。
Empty [val] statementSyntax Error Icon当您终止一条语句并将其保留为空时,就会发生这种情况。例如,下面的代码将给出错误(注意终止分号) :
if(x<0);
Nested function calls are not allowedSyntax Error Icon当您试图在语句中嵌套函数调用时,例如:
ds_list_find_value(list, 0)).sprite_index
Number of arguments for function [val1] expected [val2] got val[3]Syntax Error Icon这个错误告诉您,您没有为[val1]所示的函数提供正确的参数数目,该函数期望得到[val2]中所示的参数数目,但是得到了[val3]中所示的参数数目。
Number of arguments for function [val1] expected [val2] - [val3] got [val4]Syntax Error Icon如上所述,只适用于一系列参数。
Duplicate enum entry foundSyntax Error Icon此错误告诉您已经复制了一个枚举变量条目名称
Duplicate enum foundSyntax Error Icon此错误告诉您已定义了两个或多个具有相同名称的枚举。
Missing variable name in globalvarSyntax Error Icon这说明您已经使用了globalvar声明,但是没有提供变量名。
Missing variable name in varSyntax Error Icon这说明您已经使用了var声明,但是忽略了提供变量名。
No matching #region found for #endregionSyntax Error Icon此错误意味着您在代码中声明了一个结束区域,而没有定义开始区域。
Unclosed #region found at end of scriptSyntax Error Icon这个错误意味着您已经在代码中的某个地方声明了一个区域,但是还没有为它在任何地方定义一个结束区域。
Unexpected terminal operator [val]Syntax Error Icon这意味着存在一个内部 AST 验证错误(您应该永远不会看到这个错误,但是如果您确实看到了,请考虑从帮助菜单中提交错误报告)
Unexpected unary operator [val]Syntax Error Icon当一元运算符(如 + 、-、 = 等)在您的代码中找到了一个不需要的位置,在那里[val]将向您显示操作符。
Unexpected ternary operator [val]Syntax Error Icon这个错误意味着您在代码的某个地方错误地使用了三元运算符的一个部分,其中[val]显示了出错的部分。
Try needs to have catch or finally clauseSyntax Error Icon此错误意味着您调用了try函数,但是忽略了包含catchfinally子句。
Macro [val] already existsSyntax Error Icon当您尝试定义与之前定义的宏同名的宏[val]时,可能会出现这个错误。
Malformed variable reference, got [val]Syntax Error Icon这意味着存在一个内部 AST 验证错误(您应该永远不会看到这个错误,但是如果您确实看到了,请考虑从帮助菜单中提交错误报告)
Assignment to multi-relational-equality expression - GML does not support multiple assignments in an expressionSyntax Error Icon此错误告诉您存在一个 GameMaker Language 不支持的多操作符赋值(也称为复合赋值)问题。这包括“ *= ”或“/= ”等等。.
Macro [val] is unusedSyntax Warning Icon当宏[val]在代码中的任何地方未使用时,就会发生这种情况。
Variable [val] only referenced onceSyntax Warning Icon这意味着给定的变量[val]在代码中只引用一次。
Unassigned variable [val] referencedSyntax Warning Icon这意味着变量[val]已经在您的代码中被引用,但是以前没有在任何地方被赋值。
Only functions that are declared as constructors can use inheritanceSyntax Error Icon这个错误告诉您,您已经尝试对未声明为构造函数的函数使用继承。
Unknown function attribute [val]Syntax Error Icon这个错误意味着您在声明 in-kine 函数时尝试使用无效或未标识的函数修饰符([val])(函数修饰符类似于受支持的构造函数关键字)。
Inherited argument \"[val]\" is not in function argumentsSyntax Error Icon当您尝试引用未在父函数定义中声明的继承函数中的参数时,会发生此错误。
[val] Creation CodeSyntax Error Icon当您在房间创建代码中的某个地方出现错误[val]时,就会发生这种情况。

语法检查信息(语法检查启用)

当“语法检查”被启用时,“语法错误”窗口将被“语法检查消息”窗口替换:

语法检查信息窗口列出语法检查在代码中遇到的错误和警告,以及在找到特定的代码模式时给出的建议。此处显示的错误类型取决于您在消息严重程度下的语法检查设置中定义的配置文件。

在这个窗口中,消息列表可以按照消息代码、消息文本(按字母顺序)或资源(按资源名称的字母顺序)进行升序或降序排序。也可以使用窗口右上角的搜索框进行搜索。

语法检查信息分为三类: