在编译任何非 Core 方言时,编译器和运行时会有以下 "特殊 "行为:
•允许在 NEXT、ENDDO 等关键字后使用 "垃圾"。
•不允许使用 DOT('.') 操作符调用实例方法。
•需要引用 XSharp.Core 和 XSharp.RT 动态链接库。
•字符串比较映射到 XSharp 运行时中的函数。
•根据编译器选项 -vo2 的不同,NULL_STRING 会被编译为 "" 或 NULL。
•支持字面量符号(#SomeName)。
•字符串"="操作符被映射为 XSharp 运行时中的函数。
•不支持特定的 X# 类型,如 DATE、ARRAY、SYMBOL、FLOAT 和 USUAL,但需要运行时的引用。
•添加了对动态内存变量和未声明变量的支持。
•字符串字面量使用单引号(Vulcan 除外)。字符文字必须以 c 为前缀,如:cChar := c'A'
•允许使用 ASend() 为 X# 数组中的每个元素调用方法。
•"=" 操作符可用于赋值,但使用时会产生警告。
•增加对 BEGIN SEQUENCE ... END SEQUENCE 的支持。
•增加了对 ALIAS (->) 操作符的支持。
•增加了对 FIELD 语句的支持。
•支持宏编译器和 &(变量) 语法。
•增加了对 ARRAY OF <type> 语法的支持。
•编译器的生成函数类名为
<AssemblyName>.Functions (DLLs) 用于函数和全局
<AssemblyName>.Exe.Functions (EXEs) 用于函数和全局
<AssemblyName>.Exe.$<ModuleName>$.Functions 用于静态函数和全局
•编译器会添加几个特性(attribute)(在 XSharp.Core 中定义),用于描述默认命名空间和编译器版本。
•编译器为 EXE 文件生成代码,在 Runtimestate 中设置多个属性,以匹配编译器选项和主程序的方言。
•过程不能具有返回值。
•增加了对非类型化变量和返回值的支持。
•支持非类型化函数和方法参数(所谓的 Clipper 调用约定)。
•增加了对后期绑定代码的支持(需要 -lb 编译器选项)。
•增加了对 INIT 和 EXIT 过程的支持。
•添加了对 Codeblocks 的支持(带有 USUAL 参数数组和 USUAL 返回值的非类型 Lambda 表达式)。
•允许在方法调用中跳过参数。跳过的参数被假定为 NIL。
•默认 RDD 除 FoxPro 方言外均为 DBFNTX