找回密码
 注册
搜索
查看: 55|回复: 2
收起左侧

写了个Brainfuck编译器

[复制链接]
  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 172 天

    [LV.7]常住居民III

    0

    威严

    1912

    帖子

    3275

    点数

    白玉楼半灵

    琪露诺深圳分诺

    Rank: 4

    积分
    2506
    QQ
    发表于 昨天 05:36 | 显示全部楼层 |阅读模式
    你说你写了个啥?

    这个嘛……写着玩玩,就当是学习编译器原理了()
    而且这玩意严格来说也不算编译器,顶多算个把BF代码转换成C代码的……Python程序
    过两天试着能不能用C语言写出来
    随着编译器附带的还有一个输出“Hello, world”的Brainfuck源代码和Makefile构建文件


    对了,如果对代码有疑问或者意见请随时轰炸我


    (以下内容来自度娘百科)
    Brainfuck是瑞士的一名物理系学生Urban Müller在1993年发明的,仅用六个符号来构建的编程语言,常被写为Brainf*ck或BF。虽然可用的表达式特别少,但是BF却具备了图灵完备性(可以实现任何的运算操作)。
    作为一种极简主义的编程语言,Brainfuck影响和意义主要体现在计算机科学教育、编程语言理论研究以及编程挑战领域。它并非为了实际软件开发而设计,而是作为一种探索编程语言边界和计算本质的实验性语言。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    也许多少年后在某个地方,
    我将轻声叹息把往事回顾,
    一片树林里分出两条路,
    而我选了人迹更少的一条,
    因此走出了这迥异的旅途。
    ——罗伯特·弗罗斯特《未选择的路》
  • TA的每日心情

    14 小时前
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    0

    威严

    8

    帖子

    55

    点数

    毛玉

    Rank: 1

    积分
    13
    QQ
    发表于 昨天 13:18 | 显示全部楼层
    居然真的能用,好清奇的思路
    不过貌似转换出来的c代码也是十分的奇怪(?),全是++*ptr;(但是能编译运行)
    回复

    使用道具 举报

  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 172 天

    [LV.7]常住居民III

    0

    威严

    1912

    帖子

    3275

    点数

    白玉楼半灵

    琪露诺深圳分诺

    Rank: 4

    积分
    2506
    QQ
     楼主| 发表于 昨天 22:45 | 显示全部楼层
    本帖最后由 FandaP 于 2026-8-29 22:52 编辑
    霜降awa 发表于 2026-8-29 13:18
    居然真的能用,好清奇的思路
    不过貌似转换出来的c代码也是十分的奇怪(?),全是++*ptr;(但是能编译运行 ...

    其实我这个思路算比较特异的(?),通常应该写作 *ptr ++; 来着。


    至于这段转换出来的C代码的原理嘛……大致可以理解为声明了一个30KiB的内存带,然后用指针依次给内存带的前15字节的每一项填充对应的字符编码(这个填充方法非常暴力,属于一个一个地往上+1一直加到对应的字符为止),并一个字符一个字符地输出。

    但是我提供的BF源程序是我自己写的暴力形式。以下是稍微没那么暴力(但逻辑更复杂)的hello.bf:
    1. ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
    复制代码

    我自己也没看懂,在别的地方复制了就发来了()。
    这样生成的C语言代码会短一点,只有118行左右,而且也能输出helloworld,而且可执行文件也只有16056字节。比我自己写的转换出来的上千行的C源代码和40632字节的可执行文件要好多了
    也许多少年后在某个地方,
    我将轻声叹息把往事回顾,
    一片树林里分出两条路,
    而我选了人迹更少的一条,
    因此走出了这迥异的旅途。
    ——罗伯特·弗罗斯特《未选择的路》
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    手机版|Archiver|东方幻想乡 ( ICP15046467-1 )

    GMT+8, 2026-8-30 14:19 , Processed in 0.425500 second(s), 24 queries .