编译器Y2.26最终版 08/5/10更新



掌叔
2008-06-16 16:05:39

摘自:iava.5d6d.com
作者:yan

软件名称: 编译器.lav(Y2.26正式版)
软件大小: 105KB
软件类型: 编程工具(LavaX1.0)
使用范围: Lava 6K及以上(如:TC1000(S),TC808,TC800,NC2600C,NC3000,NC2000A(C),PC2300,PC2000A(C),PC1300,NC1020(N),CC980,CC880,CC800等)
软件说明:
1.符合LeeSoft的规范
2.LavaX3.5IDE编译,通过Lava 6K认证,基本上所有的机子都可以运行
3.编译通过"勇者斗恶龙","RPG_engine","Reader2_29"等大型源代码(由于RPG_engine的宏太多了,展开了一些^_^)
4.自带丰富强大的链接库,通过链接库可以方便制作4灰度、通信等特色软件
5.集成代码编写环境,关键字自动匹配,开发软件更加方便
6.强大的优化系统,使软件更加精简
7.庞大的帮助系统和函数检索为编写软件提供方便
更新日志:
Y2.06:完善了编辑系统,增加函数检索功能
Y2.07:在编辑系统中加入中文输入功能,改善了帮助系统
Y2.08:修改了编译核心的bug,比较完善地支持引用(具体用法在345楼),在编辑系统中使用双向链表技术支持大文件编辑
Y2.10:启用资源目录,即编译器所需要的文件放在独立的文件夹/CplData里还有DllData文件夹改为LibData文件夹。y文件支持全局变量,但不完善,谨慎使用,完善了编辑系统,详情请参见程序里的帮助
Y2.11:修改链接系统的错误,支持宏管理系统的导入
Y2.12:完善了结构体,共用体,引用,可以支持复杂的数据结构,变量不一定在程序头部初始化
Y2.13:编辑器自动缩进,检索自动添加参数
Y2.14:在编辑系统中添加检索编辑功能,增加了#code,#loaddata,#start,#unstart,#skip编译命令,强化了编译系统
Y2.15:修改了编译系统的bug,增加了NC3000的4灰度链接库
Y2.16:修改了链接库系统,增加了NC2600,TC1000和TC808的4灰度链接库,在编辑系统中增加了部分全角符号输入
Y2.17:更正了链接库系统和拼音输入法的bug,增加了新型的4灰度链接库和其他库,集成了资源管理系统
Y2.18:修正了结构体,无法删除*.h的bug,增加了卸载功能,在几个系统增加了即时帮助
Y2.19:增加了#delete编译命令,把#start,#unstart改成了#begin,#end命令,#include自动检索时不换行
Y2.20:优化了预处理系统,增加了对预处理命令#if的支持,并且#if,#ifdef,#ifndef可以嵌套使用,修正了引用引起的未定义错误,所有临时文件都改为放在/CplData文件夹中,修改了拼音输入法,在编辑系统中增加了变量插入功能,在帮助中的索引里,按字母键可以跳到以该字母开头的函数
Y2.21:修改符号输入的bug,美化了程序字体,修正了文件关闭的错误,应该不会出现僵尸文件了,软件支持了多级目录了,修正了演示程序无法编译的bug,更新了gameghost的malloc的库文件。
Y2.22:修改了goto的bug,增加了优化系统和批处理系统。
Y2.23:修改了优化系统的算法和几处bug,增加编译命令#secret(详见'帮助'→'语法'→'命令'),调整了编辑系统。
Y2.24:在编辑系统中增加了时间显示,在设置中增加了几条设置,包含命令支持路径,修正了sizeof的bug(具体参见'帮助'→'语法'→'语句'),添加了对函数指针的支持(参见:/LibData/fptr.y),增加了#attr编译命令。注意:由于修改了链接库系统,所以以前制作的y库不能在使用了,请重新编译!
Y2.25:编译系统增加支持不定参数的函数,增加抽象库。
Y2.26:修正编辑系统检索的bug,修正TC800版本界面和输入的bug。
//====================================================================
复杂数据结构举例:
#include
#include
struct student
{
char name[20];
int score;
struct student &next;
};
void main()
{
int i, n;
struct student& p,q, head = 0;

SetScreen(0);
scanf("Input member:", "%2d", &n);
for (i = 0; i < n; i++)
{
&p = malloc(sizeof(struct student));
if (!(&p))
{
printf("内存分配失败!
");
getchar();
return;
}
scanf("name:", "%20s", p.name);
scanf("score:", "%2d", &p.score);
if (!(&head))
{
&head = &p;
}
else//这里&p,&head都看成引用本身(本质是指针)
{
&q.next = &p;
}
&q = &p;
&p.next = NULL;
}
&p = &head;
while (&p != NULL)
{
printf("name:%s score:%d
", p.name, p.score);
getchar();
&q = &p;
&p = p.next;
free(&q);//释放空间
}
}
遇到bug时,要说明是哪种机型,bug描述要详细点,不然会让我摸不着头脑。
在制作4灰度软件时,注意在源程序的结束处加SetGraphMode(1);切换到黑白模式,否则系统无法正常显示。
目前的4灰度库不支持printf,putchar,Circle,Ellipse函数。printf可以用TextOut函数代替。

问题1:对于无法找到程序目录或编译生成的lav文件不在虚拟机目录里,解决的方法是删除除了虚拟机目录以外的程序目录,虚拟机目录有/LAVA,/LAVA2,/GVmaker三种,如果你的虚拟机目录是/GVmaker,那么请删除/LAVA和/LAVA2,以此类推。再次进入程序,程序会自动存储该目录了。