模拟精灵的语言包在模拟精灵运行目录的"Fairy_Ape\Language"目录下
不同的语言包的语言代码由三个英文字母组成.
如简体中文为CHS,那么简体中文的语法配置文件为 Fairy_Ape\Language\CHSsyntax.txt
简体中文的界面语言包为:Fairy_Ape\Language\CHS.xml
CHS.xml中的ApeMLTable节点是ApeML使用的语法关键字,最好不要随意更改这个节点。
您也可以添加自已的语言包,只要把语言包放到"Fairy_Ape\Language"目录下即可
模拟精灵会自动添加到语言包列表.语言包命令规则为:
修改以前请详细阅读下面的配置规则说明
关键字中的"."圆点表示名称空间层次(语法中的名称空间,类名,对象名)
关键字前面的^表示这是一个系统参数变量,不可修改。
含有等号的行是一个键值对,等号前面是关键字,等号后面是提示或模板
示例:
提示前面第一个字符如果是"@"符号表示注释是一个自动完成模板
示例:
没有等号的行都被认为是注释,语法引擎忽略注释行
如果有多个等号时,优先识别前后有空格的等号
例如 this 与 m变量 都是模块对象,他们的成员函数列表是一样的,这时,我们不需要为他们分别指定语法配置列表。
可以使用名称空间转向将m变量的成员函数列表附加给this对象。
首先指定m变量函数列表,如:
然后为this对象指定转向,如下:
this: = >m:
>符号指示语法编辑器查询引擎记录一个转向操作,当我们输入this:以后,会自动显示m:的成员函数列表。
语法配置文件在升级时会被覆盖更新。
为了避免自已添加的语法被覆盖,可以新建一个自定义的语法配置文件 "Fairy_Ape\\我的自动完成.txt"
然后将下面的脚本存为LAS文件,需要更新的时候双击运行即可。
--载入自已的自动完成
str2 = assert(string.load(win.getExeDir().."\\Fairy_Ape\\我的自动完成.txt"),select(2,win.lastError()))
head = string.left(str2 ,10)
--载入语言包
str = string.load(win.getExeDir().."\\Fairy_Ape\\Language\\CHSsyntax.txt");
if(str)then
if(string.find( str,head )then
win.messageBox("您已经添加了这个自动完成配置,不需要重复添加")
return false;
end;
--合并语言包
str = str..str2;
--更新语言包
string.save(str ,win.getExeDir().."\\Fairy_Ape\\Language\\CHSsyntax.txt")
--重启模拟精灵
win.exec(win.getExeFile()," /restart=10")
end
把下面的文件存为 “自动导入库成员到自动完成列表.LAS” 双击运行
function tosyn(ns,objname)
import(ns)
if(not _G[ns])then
return;
end;
local str = string.load(win.getExeDir().."\\Fairy_Ape\\Language\\CHSsyntax.txt");
if(string.find(str ,ns ))then
win.messageBox("自动完成库配置可能已导入了"..ns.."库,不需要重复添加")
return;--返回,不执行后面的代码了
end;
local syn ="\r\n"
for k,v in pairs(_G[ns])do
syn = syn..ns.."."..k.." = ".." \r\n"
end;
if(not objname)then
string.save(str..syn ,win.getExeDir().."\\Fairy_Ape\\Language\\CHSsyntax.txt");
return syn ;
end;
if(objname=="")then
string.save(str..syn ,win.getExeDir().."\\Fairy_Ape\\Language\\CHSsyntax.txt");
return syn ;
end;
if(_G[ns].new ~= nil)then
local obj = _G[ns].new();
if(obj)then
local meta = getmetatable(obj);
if(meta)then
for k,v in pairs(meta) do
syn = syn..objname..":"..k.." = ".." \r\n"
end;
end;
end;
end;
if( _G[ns].open ~= nil)then
local obj = _G[ns].open();
if(obj)then
local meta = getmetatable(obj);
if(meta)then
for k,v in pairs(meta) do
syn = syn..objname..":"..k.." = ".." \r\n"
end;
end;
end;
end;
string.save(str..syn ,win.getExeDir().."\\Fairy_Ape\\Language\\CHSsyntax.txt");
return syn;
end;
ok = tosyn(win.inputBox("请输入库名称","更新自动完成列表"),win.inputBox("请输入创建对象默认变量名字(不创建对象的库请不要填写)","更新自动完成列表"));
if(ok)then
--重启动
win.messagePrint("@6秒后重启模拟精灵,按".._STOPHKEY.."取消!")
delay(2000);
win.messagePrint("@4秒后重启模拟精灵,按".._STOPHKEY.."取消!")
delay(2000);
win.messagePrint("@2秒后重启模拟精灵,按".._STOPHKEY.."取消!")
delay(2000);
if(nStop())then
win.exec(win.getExeFile()," /restart=100")
end;
end;