自己写的一个小小编译器,解析器(BrainFuck) C#制作
cs_net2013/07/09软件综合 IP:云南

attachment icon BrainFuck.rar 43.06KB RAR 66次下载
attachment icon BrainFuck.rar 43.06KB RAR 66次下载
attachment icon BrainFuck.rar 43.06KB RAR 66次下载
attachment icon BrainFuck.rar 43.06KB RAR 66次下载   
Brainfuck,是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。由于fuck在英语中是脏话,这种语言有时被称为brainf*ck或brainf***,甚至被简称为BF。
Müller的目标是创建一种简单的、可以用最小的编译器来实现的、符合图灵完全思想的编程语言。这种语言由八种运算符构成,为Amiga机器编写的编译器(第二版)只有240个字节大小。
就象它的名字所暗示的,brainfuck程序很难读懂。尽管如此,brainfuck图灵机一样可以完成任何计算任务。虽然brainfuck的计算方式如此与众不同,但它确实能够正确运行。
这种语言基于一个简单的机器模型,除了指令,这个机器还包括:一个以字节为单位、被初始化为零的数组、一个指向该数组的指针(初始时指向数组的第一个字节)、以及用于输入输出的两个字节流。
下面是这八种状态的描述,其中每个状态由一个字符标识:
字符    含义
>    指针加一
<    指针减一
+    指针指向的字节的值加一
-    指针指向的字节的值减一
.    输出指针指向的单元内容(ASCII码)
,    输入内容到指针指向的单元(ASCII码)
[    如果指针指向的单元值为零,向后跳转到对应的]指令的次一指令处
]    如果指针指向的单元值不为零,向前跳转到对应的[指令的次一指令处
(按照更节省时间的简单说法,]也可以说成“向前跳转到对应的[状态”。这两解释是一样的。)
(第三种同价的说法,[意思是"向后跳转到对应的]",]意思是"向前跳转到对应的[指令的次一指令处,如果指针指向的字节非零。")
Brainfuck程序可以用下面的替换方法翻译成C语言(假设ptr是char*类型):
Brainfuck    C
>    ++ptr;
<    --ptr;
+    ++*ptr;
-    --*ptr;
.    putchar(*ptr);
,    *ptr =getchar();
[    while (*ptr) {
]    }
]以上是维基百科中copy的,仅为了说明该语言,以及设计。 附件中加入了一个WinForm的测试程序,这里要注意的是编译是从A翻译的B由B编译成目标代码执行的。  
+100  科创币    phpskycn    2013/07/09 值得赞扬
+15  科创币    【四方】    2013/07/09 高质量发帖
来自:计算机科学 / 软件综合
12
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
天是蓝的
10年11个月前 IP:未同步
545629
居然还有这种语言…谁来检验一下那个普适图灵机?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
cs_net作者
10年11个月前 IP:未同步
545672
现在所有的计算机都是基于图灵原理制作的。 当然,那是理想状态。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
darkorochi
10年11个月前 IP:未同步
545680
@ clyce
字数补丁
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
.........
10年11个月前 IP:未同步
545708
有天看到了一个编译器叫做LLVM,LZ可以考虑在那个基础上搞搞
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
cs_net作者
10年11个月前 IP:未同步
545709
回 4楼(.........) 的帖子
这是N多年写的,最近开写VB的编译器
引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
helium
10年11个月前 IP:未同步
545727
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
【四方】
10年11个月前 IP:未同步
545731
回 6楼(能材爱好者) 的帖子
@XXXXXXyce

求教如何@
+1
科创币
delete
2013-07-09
插入链接,链接说明就输入@****就行了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
【四方】
10年11个月前 IP:未同步
545754
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
天是蓝的
10年11个月前 IP:未同步
545757
没想到学到了艾特的方法…话说管用吗?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
相对论万岁
10年11个月前 IP:未同步
545802
突然发现@功能可以用了,试试
@虎哥
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
相对论万岁
10年11个月前 IP:未同步
545807
额,不灌水了
话说楼主为何不写一个自己的编程语言
就叫kc语言好了。。。
看了别人开发自己的语言,似乎不是太难
有兴趣的可以看看编译原理
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yjgod
10年11个月前 IP:未同步
546010
[s:274]
[s:274]
[s:274]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}