我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

« 1 2» Pages: ( 1/2 total )
本页主题: 写了个编译器,放出来,大家看看 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

蜀山狂斩



性别: 保密 状态: 该用户目前不在线
等级: 希望之光
发贴: 1981
威望: 1
浮云: 1435
在线等级:
注册时间: 2004-02-27
最后登陆: 2011-11-23

5come5帮你背单词 [ paradox /'pærədoks/ n. 似非而是的论点 ]


写了个编译器,放出来,大家看看

解压后,直接"make all"就可以了

实现的语言是C-(不是C哈,文法和C相似而已),文法是kenneth c.louden给出的,实现的时候,改了一下,主要是数组做参数的时候要加方括号.

实现的时候我暂时把数组大小限定为10,每个程序允许最多20个函数,主要是我很多地方数组实现.

全局变量可以声明在所有的函数之外,也可以声明在main的里面.

程序的执行入口地址为main

salad把源文件编译为中间代码,就是tm虚拟机(由K.C.L实现,我只稍微改了一下)的汇编,我没有直接生成unix下的汇编,主要是考虑移植性,弄成java那种形式的样子,然后用虚拟机执行生成的以.tm结尾的文件,

包里面有两个例子程序.

写了10天,还是有点成就感,主要是调试了N久,汗一个,终于搞出来了.

注意,包的后缀要改为 .tar,gz 然后再解压


差点忘了,用tm执行.tm结尾的中间汇编文件的时候,会首先提示输入命令,输入g就可以了代表开始运行,比较古老哈

还有数组要声明在所有函数之外,必须为全局,同时,所有全局变量要先声明,再赋值.


[ 此贴被蜀山狂斩在2005-09-17 23:03重新编辑 ]
顶端 Posted: 2005-09-06 22:29 | [楼 主]
蜀山狂斩



性别: 保密 状态: 该用户目前不在线
等级: 希望之光
发贴: 1981
威望: 1
浮云: 1435
在线等级:
注册时间: 2004-02-27
最后登陆: 2011-11-23

5come5帮你背单词 [ sweet /swi:t/ a. 甜的,悦耳(目)的,可爱的,亲切的,舒服的;n. (pl.)糖果,甜食 ]


编译时,-S参数为源程序回显,-s参数为显示扫描过程,-p为显示语法分析结果,一个语法树,-t为显示符号表的情况.
顶端 Posted: 2005-09-06 22:30 | [1 楼]
weigun



性别: 帅哥 状态: 该用户目前不在线
头衔: 逍遥王(常驻5COME5理事)
等级: 荣誉会员
发贴: 6441
威望: 1
浮云: 831
在线等级:
注册时间: 2004-05-20
最后登陆: 2009-10-16

5come5帮你背单词 [ refund /ri:'fΛnd/ v. 归还,偿还;n. 归还(额),偿还(额) ]


技术人员...
国家得基层建设靠你们了...
顶端 Posted: 2005-09-06 22:35 | [2 楼]
蜀山狂斩



性别: 保密 状态: 该用户目前不在线
等级: 希望之光
发贴: 1981
威望: 1
浮云: 1435
在线等级:
注册时间: 2004-02-27
最后登陆: 2011-11-23

5come5帮你背单词 [ stream /stri:m/ n. 小河,溪流,流动之物,流物;vi. 流出,涌出 ]


支持递归和函数的功能,估计bug N多,目前只支持整型

没有类型检查,大家最好程序直接写正确,编译的检查功能很差,只能检查一下词法和语法上的基本错误.
顶端 Posted: 2005-09-06 22:46 | [3 楼]
nicky1452



性别: 保密 状态: 该用户目前不在线
等级: 希望之光
发贴: 1951
威望: 0
浮云: 1155
在线等级:
注册时间: 2003-07-03
最后登陆: 2006-11-01

5come5帮你背单词 [ comb /kəum/ vt. 梳,梳理;n. 梳子 ]


顶,牛人
顶端 Posted: 2005-09-06 22:49 | [4 楼]
u0u0



资源小王子奖
性别: 帅哥 状态: 该用户目前不在线
头衔: 韩剧主力(曾经),FreeBSD fans
等级: 荣誉会员
发贴: 4710
威望: 6
浮云: 578
在线等级:
注册时间: 2003-11-22
最后登陆: 2011-01-13

5come5帮你背单词 [ behind /bi'haind/ prep. 在…后面,迟于,落后于;ad. 在后,迟,慢 ]


我的编程技术。。。唉!!!
明天编译看看,有bug我提交上了。
顶端 Posted: 2005-09-06 22:57 | [5 楼]
chasedreamer



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
发贴: 2491
威望: 0
浮云: 1105
在线等级:
注册时间: 2004-08-24
最后登陆: 2009-05-12

5come5帮你背单词 [ chance /ta:ns/ n. 机会,运气,可能性,或然性 ]


我看了怎么没有看懂呢
顶端 Posted: 2005-09-06 22:58 | [6 楼]
u0u0



资源小王子奖
性别: 帅哥 状态: 该用户目前不在线
头衔: 韩剧主力(曾经),FreeBSD fans
等级: 荣誉会员
发贴: 4710
威望: 6
浮云: 578
在线等级:
注册时间: 2003-11-22
最后登陆: 2011-01-13

5come5帮你背单词 [ debate /di'beit/ n. & v. 辩论,讨论 ]


helloworld编译不过。

Quote:

#include<stdio.h>
int main()
{
     printf("%s\n","hello world");
     return 0;
}


#./salad hello.c

然后就是无限循环
>>> Syntax error at line 1: unexpected token -> ERROR: #
顶端 Posted: 2005-09-07 15:03 | [7 楼]
蜀山狂斩



性别: 保密 状态: 该用户目前不在线
等级: 希望之光
发贴: 1981
威望: 1
浮云: 1435
在线等级:
注册时间: 2004-02-27
最后登陆: 2011-11-23

5come5帮你背单词 [ acquaintance /ə'kweintəns/ n. 认识的人,熟人认识,了解 ]


晕,我实现的这个语言不是C,只是语法和C基本一样,是完全新的,所以根本没有库的概念,除非自己写程序,再包含进去.而且我还没有包含#include命令.

相当于是一个全新的语言,现在是一片空白,只能按相应的语法规则编程,其它什么都没有.

可以用while,if等语句.

不是C的编译器哈,是模仿C的语法的一gate新的语言,不过很瓜的那种

而且你用了printf,这是C的库函数,不能用,现在的IO只能用input和output来实现,只有这两条语句.

其实我写这个编译器主要实践编译原理中的一些概念,想实践一下,基本没有什么实际的作用.不过对编译器的基本理论基础比较熟了.

如果要使用,我觉得要用汇编写,还要自己写很多API,不是一个人能干的
顶端 Posted: 2005-09-07 22:38 | [8 楼]
蜀山狂斩



性别: 保密 状态: 该用户目前不在线
等级: 希望之光
发贴: 1981
威望: 1
浮云: 1435
在线等级:
注册时间: 2004-02-27
最后登陆: 2011-11-23

5come5帮你背单词 [ colonial /kə'ləuniəl/ a. 殖民地的 ]


如果要论实际作用,我只觉得它有一小部分fortran的作用...

对了,目前只有整型变量可以用,等考完研,再来弄其它的.

大体程序应该这样写

int...... 变量声明

void or int Function(args)
{                           .....函数部分,最多可以定义20个函数

...
...

}


void main(void)
{                           .....主函数部分

int ...
while...
if...


}



其实是我自己没有说清楚,我会写一个文档,详细阐述语法和实现方法


[ 此贴被蜀山狂斩在2005-09-07 22:59重新编辑 ]
顶端 Posted: 2005-09-07 22:44 | [9 楼]
rockins





性别: 保密 状态: 该用户目前不在线
等级: 论坛贵宾
发贴: 261
威望: 0
浮云: 544
在线等级:
注册时间: 2003-12-02
最后登陆: 2006-04-23

5come5帮你背单词 [ territory /'teritəri/ n. 领土,版图,领域,范围 ]


向楼主学习。。。
顶端 Posted: 2005-09-07 23:31 | [10 楼]
rockins





性别: 保密 状态: 该用户目前不在线
等级: 论坛贵宾
发贴: 261
威望: 0
浮云: 544
在线等级:
注册时间: 2003-12-02
最后登陆: 2006-04-23

5come5帮你背单词 [ father /'fa:ðə/ n. 父亲,创始人,发明者,神父,上帝 ]


敬个礼先。。。
顶端 Posted: 2005-09-07 23:31 | [11 楼]
u0u0



资源小王子奖
性别: 帅哥 状态: 该用户目前不在线
头衔: 韩剧主力(曾经),FreeBSD fans
等级: 荣誉会员
发贴: 4710
威望: 6
浮云: 578
在线等级:
注册时间: 2003-11-22
最后登陆: 2011-01-13

5come5帮你背单词 [ mixture /'mikstə/ n. 混合物,混合,混杂 ]


C-啊!
没听说过。
顶端 Posted: 2005-09-08 08:36 | [12 楼]
蜀山狂斩



性别: 保密 状态: 该用户目前不在线
等级: 希望之光
发贴: 1981
威望: 1
浮云: 1435
在线等级:
注册时间: 2004-02-27
最后登陆: 2011-11-23

5come5帮你背单词 [ immediate /i'mi:djət/ a. 立即的,即刻的,最接近的,紧靠着的 ]


C-就是为了便于学生学习实践,把C的文法简化了的新语言.也可以叫其它的,只是未了尊重C,毕竟是从它学的

你可以找到C的文法,自己改一下,你可以称为C--,或其它的想怎么就怎么.

设计文法的人一般都是语言大师,而实现文法的人就是编译器的作者.
顶端 Posted: 2005-09-08 11:05 | [13 楼]
蜀山狂斩



性别: 保密 状态: 该用户目前不在线
等级: 希望之光
发贴: 1981
威望: 1
浮云: 1435
在线等级:
注册时间: 2004-02-27
最后登陆: 2011-11-23

5come5帮你背单词 [ pat /pæt/ n. & v. 轻拍,轻打,抚摸 ]


包里面有两个例子程序,这个语言的编程格式应该按照那两个例子的语法来写.
顶端 Posted: 2005-09-08 11:10 | [14 楼]
« 1 2» Pages: ( 1/2 total )
我来我网·5come5 Forum » Linux专区

Total 0.009310(s) query 5, Time now is:12-23 10:47, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号