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

本页主题: 写了个编译器,放出来,大家看看 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

蜀山狂斩



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

5come5帮你背单词 [ pursue /pə'sju:/ vt. 追赶,追求,继续,从事 ]


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

解压后,直接"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帮你背单词 [ bulb /bΛlb/ n. 球状物,球茎,灯泡 ]


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



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

5come5帮你背单词 [ allow /ə'lau/ vt. 允许,准许,承认,给予;vi. (for)考虑到,估及 ]


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

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



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

5come5帮你背单词 [ scout /skaut/ n. 侦察员,童子军;v. 侦察,搜索 ]


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

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

可以用while,if等语句.

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

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

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

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



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

5come5帮你背单词 [ sad /sæd/ 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 | [4 楼]
蜀山狂斩



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

5come5帮你背单词 [ transmit /trænz'mit/ vt. 传递,传送,播送,发射 ]


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

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

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



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

5come5帮你背单词 [ glorious /'glo:riəs/ a. 辉煌的,壮丽的,光荣的 ]


包里面有两个例子程序,这个语言的编程格式应该按照那两个例子的语法来写.
顶端 Posted: 2005-09-08 11:10 | [6 楼]
蜀山狂斩



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

5come5帮你背单词 [ trench /trent/ n. 沟,渠 ]


Quote:
下面是引用u0u0于2005-09-08 11:25发表的:
用简单的来树立信心是必要的^_^

最近被gtk弄得头大,连个fileselecter都搞不定,看了一些软件的源码,好像都是用glib实现的。
glib->gdk->gtk
3个都要看,崩溃求。


是啊,unix世界太大了,有的时候简直就崩溃,不知道西方那些人怎么弄出来的,估计是积累了N年的结果,我们太落后了啊,.

主要是你想弄中文,国际化本来就不是很简单哈.

另外glib于图形无关,它是一种对c的跨平台的封装,比如,本来int 在不同的机器上占用不同的长度,但是如果你用glib里的int那么全部都统一了.

glib还对堆栈,链表等直接实现,可以当模板用.

感觉用gtk就是,先看个大概点的书,然后自己想要实现什么功能,然后去查api,你可以看gtk自带的demo啊,里面很多基本的东西都实现了.

现在正在学用latex 生成文档,又是一个BT的东西
顶端 Posted: 2005-09-08 12:09 | [7 楼]
蜀山狂斩



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

5come5帮你背单词 [ marble /'ma:bl/ n. 大理石 ]


ln -s linexif.so.12 linexif.so.10

这个方法好,记住了,哈哈

latex是国际学术交流的指定投稿格式,是对tex的宏包装,tex太复杂了,只有程序员才能用,所以有了latex

另外tex是D.E.Knuth写的哈,大牛一个.
顶端 Posted: 2005-09-08 12:41 | [8 楼]
蜀山狂斩



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

5come5帮你背单词 [ fable /'feibl/ n. 寓言,童话 ]


google的野心不小啊,网罗一大批操作系统和编译器优化方面的牛人,sun,microsoft公司有几个大牛都跳过去了,好象还有图灵奖的得主.微软现在都有点怕怕了,原以为googld是安心的只做搜索...

可能大家觉得google这个公司很新兴,很有意思.用了gmail,gtalk,确实感觉google的技术创行力非常好.
顶端 Posted: 2005-09-08 13:01 | [9 楼]
我来我网·5come5 Forum » Linux专区

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