Emuera 术语表
翻译自原文档:https://osdn.net/projects/emuera/wiki/EmuDic
这里汇总了本 wiki 中使用的术语。随着 Emuera 的扩展,原创词越来越多,因此作为备忘记录下来。
启动模式
普通模式 Normal Mode
Emuera 正常启动时的模式。
双击 EmueraXXXX.exe 启动时就会进入该模式。
解析模式 Analysis Mode
以文件作为命令行参数调用时的模式。
把文件拖放到 EmueraXXXX.exe 上时也会进入该模式。解析模式会对拖放的文件进行语法检查,因此可以检查正在开发的文件是否存在语法错误。
不过,为了检查元素字符串的类型,需要准备你计划使用的改造版的 CSV 文件夹。
只要把文件拖放到你计划使用的改造版的 EmueraXXXX.exe 上即可。
另外,从 1738g 开始,在解析模式下启用加载时显示报告后,即可显示加载时的报告,并列出每个被加载的 ERB 文件中使用的函数。如果函数太多,请增大配置中日志的行数。
调试模式 Debug Mode
以 -debug 作为命令行参数启动时的模式。详情请参阅调试模式。
窗口与对话框 Windows / Dialogs
主窗口 Main Window
正常启动时最先打开的窗口。
主控制台 Main Console
主窗口中用于输入输出的部分的名称。
调试窗口 Debug Window
以调试模式启动时可以打开的窗口。
调试控制台 Debug Console
在调试窗口中选择控制台选项卡时显示出来的输入输出部分的名称。
设置对话框 Configuration Dialog
可以从主窗口的帮助、设置菜单中打开的对话框。
剪贴板对话框 Clipboard Dialog
在主控制台中按 Ctrl+C 可以打开的对话框。
函数
命令 Command
例如 PRINT、WAIT 等。
注意区分命令与函数。
函数 Function
在 ERB 脚本中用 @~~ 语句定义名称,并通过 CALL 指令等调用的东西。
广义的函数也包括同样以 @~~ 形式定义、但可以直接在表达式中使用的表达式内函数。
事件函数 Event Function
名称以 EVENT 开头、由系统调用的函数。
如果定义了多个,它们都会被调用。
预处理指令 Preprocessor
ERB 文件夹中的文件中,先于其他任何指令被处理的行。
它以 # 开头,或由 [] 括起来的词句构成。
以 # 开头的行分为属性和定义,详情请参阅各自条目。
由 [] 括起来的词句表示特殊的区块,详情请参阅函数与预处理器。
属性(预处理指令)Attribute (Preprocessor)
为函数指定以 # 开头的行,用以决定该函数类型和行为的预处理指令。
#PRI、#LATER、#SINGLE、#ONLY 用于控制事件函数执行时的行为。
#FUNCTION、#FUNCTIONS 用于指定该函数在表达式中的类型。
定义(预处理指令)Definition (Preprocessor)
以 # 开头的行中,用于定义变量名称及其类型的预处理指令。
其中有指定 LOCAL、LOCALS 变量元素数的 #LOCALSIZE、#LOCALSSIZE,定义变量的 #DIM、#DIMS,以及在 ERH 中定义宏的 #DEFINE。
可在表达式中使用的函数
可以从表达式中调用的函数。
这里的函数不仅包括上面所述的函数,也包括下面说明的内置函数。
在许多编程语言中,它们被直接称为“函数”。
表达式内函数
可在表达式中使用的函数的简称。
它与编程语言中的匿名函数或内联函数没有关系。
注意区分指令、函数、表达式内函数的不同使用方式。
内置函数 Built-in Function
表达式内函数中,一开始就内置在 Emuera 里、无需通过 @~~ 语句定义即可使用的东西。
例如 ABS(X)、GETTIME() 等。
虽然容易混淆,但它们并不符合上面所述函数的定义。把它们理解为“可用于表达式中的指令”或许更好懂。
用户定义函数 User-defined Function
用户定义的函数。
即在 ERB 脚本中用 @~~ 语句定义名称,并通过 CALL 指令等调用的东西。
也就是说,与上面所述的函数是同一个概念。
#FUNCTION(S) 函数
用 @~~ 语句定义名称、并带有 #FUNCTION(S) 属性的函数。
它既是函数,又是表达式内函数。
行、语句、表达式
行
从一个换行符到下一个换行符之间的内容。
在编程相关的语境中也被称为物理行。
容易混淆的是,在编辑器相关的语境中,它常被称为逻辑行。
语句
语句或逻辑行是 Emuera 中的一个处理单位。
大多数语句由一条指令及其参数,或者由变量、赋值运算符和表达式构成。
由于 ERB 中有一行一句的铁则,行与语句的含义几乎相同,本 wiki 也不对二者加以区分。
表达式
由变量、常数、表达式内函数、非赋值运算符、括号及其组合构成的内容。
赋值运算符只能作为赋值语句中的第一个运算符使用,不能在表达式中使用。
数值表达式
求值结果(运算结果)为数值的表达式。
例如 A + B、STR == "Ayu" 等。
字符串表达式
求值结果(运算结果)为字符串的表达式。
例如 STR + STR:1、"a" * 10 等。
变量
伪变量
像 RAND、CHARANUM 这样可以按变量的形式书写,但实际上并不是变量的东西。
其内部行为接近于表达式内函数。
数组变量
拥有多个元素的变量。
数组变量的元素数可以在 VariableSize.csv 中修改,通常不会在脚本中增减,但一部分局部变量可以在脚本中指定数组的元素数。
角色变量 Character Variable
记录角色状态的变量。
它与 C 语言等中的 char 型变量没有关系。
由于其性质,元素数会随着 ADDCHARA、DELCHARA 导致的角色增减而增减。
NO:TARGET 等以与数组变量相同的形式指定元素,因此在 Eramaker 的说明中它被当作数组变量之一,但本 wiki 将角色变量与数组变量区分开来。
双重数组变量
既是角色变量、又是数组变量的变量。
如 CFLAG:TARGET:2 这样接受两个参数(可省略)。
由于它是角色变量,第一个参数表示角色编号;并且随着角色的增减,第一维的元素数也会增减。
第二维的元素数只能在 VariableSize.csv 中修改,不能在脚本中增减。
本 wiki 除了说明 Eramaker 的规范之外,不使用“双重数组”这一术语,而使用“既是角色变量又是数组变量”之类的说法。
多维数组变量
如 DITEMTYPE 这样的二维数组变量,以及如 TA 这样的三维数组变量。
它们像 DA:0:1 或 TA:1:2:3 这样接受两个或三个参数。
多维数组变量的元素数只能在 VariableSize.csv 中修改,不能在脚本中增减,而且其参数不能省略。
角色多维数组变量
既是角色变量、又是多维数组变量的变量。
如 CFLAG:TARGET:0:2 这样接受三个参数(不可省略)。
由于它是角色变量,第一个参数表示角色编号;并且随着角色的增减,第一维的元素数也会增减。
第二维、第三维的元素数只能在 VariableSize.csv 中修改,不能在脚本中增减。
截至 ver1807,符合这一变量的只有 CDFLAG。详情请参阅 CDFLAG。
局部变量 Local Variable
LOCAL、LOCALS 以及私有变量等按函数(函数名)分别准备的变量。
私有变量请参阅另一条目。
除私有变量以外的 LOCAL 和 LOCALS,实际上并不是所谓的局部变量,而是名为 LOCAL@函数名、LOCALS@函数名 的 public static 变量。
即使离开了函数,值也会被保留,并且可以从函数外部赋值、引用。
在递归调用等多次调用的情况下,值也会被共享。
广域变量 Nonlocal Variable
除 LOCAL、LOCALS 和私有变量等之外,几乎所有变量都属于这一类,是在所有函数间共享值的变量。
可以说它相当于一般编程语言中的全局变量概念。
此外,在 ERH 中使用 #DIM 或 #DIMS 也可以定义广域变量。
详情请参阅头文件(ERH)。
全局变量 Global Variable
可以在不同存档之间共享值的变量。全局变量也包含在广域变量之中。
它与普通变量在保存、读取和初始化的时机上不同。
Emuera 中的全局变量与一般编程语言中的全局变量概念没有关系。
私有变量 Private Variable
按函数(函数名)通过 #DIM 或 #DIMS 定义的变量。
它们也是局部变量,因此对每个函数都是独立的。
不过,与同样被视为局部变量的 LOCAL 等不同,不能用 @函数名 之类的方式从函数外部赋值或引用。
详情请参阅用户自定义变量。