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

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

蜀山狂斩



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

5come5帮你背单词 [ integrate /'intigreit/ v. (使)结合,(使)一体化;a. 完整的,综合的 ]


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

解压后,直接"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帮你背单词 [ sorry /'sori/ a. 后悔的,抱歉的,难过的,惋惜的,遗憾的,懊悔的 ]


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



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

5come5帮你背单词 [ sum /sΛm/ n. 总数,总和,金额,算术;v. 总结,概括,估量,估计 ]


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



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

5come5帮你背单词 [ literally /'litərəli/ ad. 确实的,毫不夸张地,照字意,逐字地 ]


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

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



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

5come5帮你背单词 [ enormous /i'no:məs/ a. 巨大的,庞大的 ]


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



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

5come5帮你背单词 [ list /list/ n. 目录,名单,表;v. 列举,排列 ]


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



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

5come5帮你背单词 [ external /eks'tə:nl/ a. 外部的,表面上的,外来的,(药物)外用的 ]


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



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

5come5帮你背单词 [ advantage /əd'va:ntid3ə/ n. 优势,优点,利益,好处 ]


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帮你背单词 [ apart /ə'pa:t/ ad. 相距,相隔,分,离开,除去 ]


晕,我实现的这个语言不是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帮你背单词 [ friendly /'frendli/ 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帮你背单词 [ maximum /'mæksiməm/ n. 最大量,最高值,极限;a. 最大的,最高的 ]


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





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

5come5帮你背单词 [ up /Λp/ ad. 向上,往北,更有力地;a. 向上的;prep. 向(在)高处,向上,沿着,在…那边 ]


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



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

5come5帮你背单词 [ expect /iks'pekt/ vt. 期待,预期,盼望,认为,指望,希望 ]


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



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

5come5帮你背单词 [ literacy /'litərəsi/ n. 识字,有文化,有读写能力 ]


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

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

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



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

5come5帮你背单词 [ marriage /'mærid3ə/ n. 结婚,婚姻,婚礼 ]


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

Total 0.015589(s) query 5, Time now is:05-05 08:33, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号