易码技术论坛

 找回密码
 加入易码
搜索
楼主: yan

[原创](文曲星端 lav版)LAVAX1.0编译器-横空出世

[复制链接]
发表于 2005-9-10 21:30:00 | 显示全部楼层
很好,只是好像还有点问题,请看

void main()<BR>{int m,n;<BR>for(m=0,n=10;m<n;m+=3,n--);<BR>printf("m=%d,n=%d",m,n);<BR>getchar();<BR>}

像这样一个C程序竟然不能通过,请楼主注意一下!

作为星星的主人再次为有这样的软件而感到自豪!谢谢楼主!加油!!

13608_35641_5605.rar

238 KB, 下载次数: 25

发表于 2005-9-10 23:21:00 | 显示全部楼层
for(m=0,n=10;m<n;m+=3,n--);<BR>这个??
 楼主| 发表于 2005-9-11 12:01:00 | 显示全部楼层
编译器不支持像-=,+=,*=,/=,%=等类似的c语句和逗号语句。
 楼主| 发表于 2005-9-11 12:11:00 | 显示全部楼层
LAVAX1.0修改版发布了。[已在顶楼更新]

只是在LAVAX1.0正式版上加了几个函数而已。其余不变。主要是方便那些在tc800上开发软件的用户。
发表于 2005-9-11 20:52:00 | 显示全部楼层
什么时候能把索引加进去,最好能在加入编写程序的功能,也就是黄金版什么时候能出来呢?
 楼主| 发表于 2005-9-12 15:47:00 | 显示全部楼层
以下是引用sxdxyj在2005-9-11 20:52:00的发言:[BR]什么时候能把索引加进去,最好能在加入编写程序的功能,也就是黄金版什么时候能出来呢?


索引暂缺是为高级版本预留的升级空间,至于“编写程序的功能”这个功能需要另外开发软件才行。
发表于 2005-9-12 17:22:00 | 显示全部楼层
非常感谢,我终于能学lava了。
发表于 2005-9-12 18:49:00 | 显示全部楼层
问题一:星星里的*.h库函数怎么调用呀?

用#include <*.h>然后编译时就会说重复定义main()函数,这个的具体用法能说一下吗?谢谢!!

问题二:还有在编译器里自已添加上的宏定义不能调用,必须写在程序中才行。

最后预祝开发组能够尽快推出高级版本!期待!
 楼主| 发表于 2005-9-13 10:47:00 | 显示全部楼层
一个程序里只能含有一个main函数。比如*.h文件里含有main函数,那么主程序里就不能有main函数。

使用#include命令的流程是这样的:

1.用记事本写好头文件程序和主程序(如果“/函数库”里有你想要得头文件就不用再写头文件了)。如:

头文件:scanf.txt:

void scanf(long str,long addrs)

{......}

主程序:a.txt:

#include"scanf.h"

......

void main()

{......}

......

2.在设置里的编译选项里“编译为.h文件”调为‘是’。然后编译scanf.txt。这时会在“/函数库”里生成一个scanf.h文件,这是我们想要的头文件。

3.再将设置里的编译选项里“编译为.h文件”调为‘否’。然后编译a.txt。软件编译的时候会把scanf.h文件包含进去,并且完成编译过程。其实在预处理系统运行时,只是简单的将scanf.h复制到主程序而已。你用pacmgr软件看a.h可以看到:void scanf(long str,long addrs){......}......void main(){......}......

这样作的好处就是不用在主程序里加上scanf这个函数,如果“/函数库”里有很多模块化的函数,那么以后写程序的时候就可以用#include命令调用即可。省得一些时间,还可以使你的程序清晰,一目了然。要发布程序的代码时,可以修改一下a.h文件(加入空格,换行等)即可发布了。

“编译器里自已添加上的宏定义不能调用,必须写在程序中才行。”可以在编译器里添加的,按‘F1’即可添加文件夹或宏。只要宏名不超过18字节且不能带有参数即可。

哦!我知道了,可能你没有按‘s’保存宏,没有保存的宏只有在当前的运行的程序是有效的,退出程序在进入就无效了。(设置系统的选项设置也一样的)。
 楼主| 发表于 2005-9-13 10:53:00 | 显示全部楼层
我不怎么会介绍软件的使用方法,压缩包里的说明也是简陋的很。

如果不懂的使用的话,可以跟贴,我会回答并且记录在“使用方法”中的。
发表于 2005-9-13 12:23:00 | 显示全部楼层
目前编译器的可编译性有多高啊
 楼主| 发表于 2005-9-13 19:12:00 | 显示全部楼层
#include命令必须在声明完全局变量之后使用。

比如:char a;

int b;

#include "y.h"

long c;

void main()

{......}

或者

#include "y.h"

char a;

int b;

long c;

void main()

{......}

都是错的。

正确的写法是:

char a;

int b;

long c;

#include "y.h"

void main()

{.......}
发表于 2005-9-14 15:41:00 | 显示全部楼层
很好,总算会用<*.h>了。

不过好像还有点问题。我编了一个程序,在编译时总提示说大括号不匹配,左边多一个,可我检查了数十次,程序中大括号对着呀,并没多出来,望楼主能看一看。

坏了,现在没带那段源码,改日贴上来!
 楼主| 发表于 2005-9-15 12:11:00 | 显示全部楼层
LAVAX1.0精简版发布了。for lava 8k[文件在顶楼]

只是在LAVAX1.0正式版稍加修改而已。去了几张图片和帮助中的'索引'选项,最大宏个数调为50个,最大变量数调为50个,最大转移数调为200个。其余不变。仍然可以编译“珠宝奇侠”等。

该版本只在电脑端的虚拟机测试通过,还未在实机上测试,如有bug请回复。
发表于 2005-9-15 17:07:00 | 显示全部楼层
void floa(long *a,long *b)<br>
{<br>
int zs,i,zss,xs[6];<br>
zs=*a/*b;<br>
zss=zs;<br>
for (i=0;i<6;i++) <br>
{xs=(*a-zs*(*b))*10/*b;<br>
*a=(*a-*b*zs)*10;<br>
zs=*a/*b;}<br>
*a=zss;b=xs;}<br>
void main()<br>
{long a,b;a=5;b=3;<br>
floa(&a,&b);<br>
printf("%d.%d",a,b);<br>
getchar();<br>
}file:///c:/docume%7e1/user/locals%7e1/temp/moz-screenshot.jpg<br>
这段可能程序有不少错误。但在编译时提示说:<br>
大括号不匹配,<br>
在[缺省]<br>
左边大括号多1个。<br>
 楼主| 发表于 2005-9-15 19:12:00 | 显示全部楼层
你用GVmakerIDE或LAVAXIDE打开程序看看,

从zss=zs;开始都被注释了。因为前一句zs=*a/*b;中的/*是注释的前端,以后的内容都变成注释了。应该这样写:zs=*a/(*b);
 楼主| 发表于 2005-9-16 09:04:00 | 显示全部楼层
检查括号是否匹配是在预处理阶段,所以当然先检测到大括号不匹配了。

还有,LAVAX是无类型语言,没有指针类型,所以void floa(long *a,long *b)是错误的。
发表于 2005-9-16 11:50:00 | 显示全部楼层
编译器里自已添加上的宏定义不能调用??

那有什么用啊??

要写到 内置中??
发表于 2005-9-16 13:17:00 | 显示全部楼层
有谁能做个在文曲星运行的C++编译系统呢?
发表于 2005-9-16 14:35:00 | 显示全部楼层
以下是引用wind-wood在2005-9-16 13:17:00的发言:[BR]有谁能做个在文曲星运行的C++编译系统呢?



做梦啊你,还C++,有C的编译器都够呛!
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-29 03:45 , Processed in 0.012136 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表