(怒)自制编程语言

对于这方面的资料,我实在是看不下去了,真是让人非亲自动手不可。上场yacc和lex,满口os和汇编,这让人怎么搞?

  造轮子?对。虽然砌砖才是该干的事——下面开始。


要做些什么?

  目的之一是可以自行添加特性,之二是对匹配方法很反感,另外我一直相信能用谁都看得懂的方法做出大事。至于我为什么这么想……是因为我在接触python前还接触过另一门语言——scheme——这可能导致了我奇怪的思维方式,比如“算术表达式怎么能一下子列完呢?”虽然我没有用scheme写过任何东西,更看不惯那么多括号。

  不妨先定个目标——【用此语言实现helloworld】【用此语言实现fizzbuzz】,demo先行。

  helloworld是很简单的,比如python只要

print("Hello,world!")

  但是还可以这样(cmd脚本):

@echo Hello, world!

  不过C该作为标准:

#include <stdio.h>

int main()
{
    printf("Hello, world!\n");
}

  我选择使用如下形式,并给这种语言起名error#1:

(print "Hello world!")

  下面开始实现——慢着,实现?怎么实现?我的64位机想汇编真的是……网上说学X64得先学16和32,而……那么只好用C了,但是我正是反感C中的输入输出流……算了,重写一个操作系统吧,用C写一份,再用汇编写一份装虚拟机,不过逻辑肯定是先用python写。简直是比功能减少的自举还夸张……不过不要紧,我们先用python实现,并调用python模拟的操作系统好了……

(2018-1-15 于地球)(待续)

原文地址:http://blog.51cto.com/13535617/2061128

时间: 2024-10-24 03:59:33

(怒)自制编程语言的相关文章

《自制编程语言》笔记:使用yacc与lex制作简单计算器

1.代码 1.1)test.l 1.2)test.y 1.3)Makefile (因为是在linux环境下,所以使用了Makefile) 2.编译与运行 2.1)编译 2.2)运行 1.代码(也可以在我的百度网盘下载:http://pan.baidu.com/s/1o65k7v8) 1.1)lex文件 test.l 1 %{ 2 #include <stdio.h> 3 #include "y.tab.h" 4 5 int 6 yywrap(void) 7 { 8 retu

自制编程语言crowbar(v0.1)构建解析器时分配内存

crowbar中第一次申请内存是在生成解析器的时候: /* interface.c */CRB_Interpreter *CRB_create_interpreter(void) { MEM_Storage storage; CRB_Interpreter *interpreter; storage = MEM_open_storage(0); interpreter = MEM_storage_malloc(storage, sizeof(struct CRB_Interpreter_tag)

x01.calc: 编程语言

想写终极程序,大都去写操作系统或编程语言了.编程语言可以极其复杂如C,也可以极简,只处理加减乘除如 calc. 1. 词法分析 %{ #include <stdio.h> #include "y.tab.h" int yywrap(void) { return 1; } %} %% "+" return ADD; "-" return SUB; "*" return MUL; "/" retur

姑娘你是在玩火啊...

两个月... 八篇博客... 你还记得大明湖畔的ML吗... 你还记得大明湖畔的hadoop吗... 你还记得大明湖畔的leetcode吗... 你还记得大明湖畔的千里码吗... 你还记得大明湖畔的sed.awk.grep吗... 你还记得大明湖畔的数据量太大内存放不下吗... 你还记得大明湖畔的Mathout吗... 你还记得大明湖畔的R吗... 你还记得大明湖畔的自制编程语言吗... 你还记得大明湖畔的龙书吗... 你还记得大明湖畔的编程之美.编程珠玑.剑指offer.程序员面试金典吗...

AACOS:基于编译器和操作系统内核的算法设计与实现

AACOS:基于编译器和操作系统内核的算法设计与实现 [计算机科学技术] 谢晓啸 湖北省沙市中学 [关键词]: 编译原理,操作系统内核实现,算法与数据结构,算法优化 0.索引 1.引论 1.1研究内容 1.2研究目的 1.3研究提要 正文 2.1研究方法 2.2编译器部分 2.2.1从计算器程序中得到的编译器制作启示 2.2.2在编译器中其它具体代码的实现 2.2.3编译器中栈的高级应用 2.2.3编译器中树的高级应用 2.2.4编译器与有限状态机 2.3操作系统内核部分 2.3.1操作系统与底

程序员必读书单

作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文地址:http://www.cnblogs.com/figure9/p/developer-reading-list.html 关于 本文把程序员所需掌握的关键知识总结为三大类19个关键概念,然后给出了掌握每个关键概念所需的入门书籍,必读书籍,以及延伸阅读.旨在成为最好最全面的程序员必读书单. 前言 Reading makes a full man; conference a ready man; and writing

C json实战引擎 二 , 实现构造部分

引言 这篇博文和前一篇 C json实战引擎一,实现解析部分设计是相同的,都是采用递归下降分析. 这里扯一点 假如你是学生 推荐一本书 给 大家 自制编程语言 http://baike.baidu.com/link?url=jIFOBNt26ykhnPr2-UaaDc5_I7gZURXdJ15P2iBXwbglXkdz2qT_tqAz4KoFF0rsS2IQbIP-ij2Ar5EMRzMcuq 当然学了上面内容,以后对编译链接设计方面会有很大提高. 但是对于 其它 也没有什么鸟用. 再扯一点 如

2016年计划

元宵佳节,新年已过去了15天.来公司两个月了,我的精神状态明显改好,现在每天都很有精神,不像以前,一到公司就想睡觉.然而,目前也仅仅非常确实的被改变了这一点. 一年的日子挺短的,有一些期望: 生活: 从3月份起,以后都是双休了.不浪费时间的话,工作和生活可以找到一个平衡点的.当然,就算现在都投入工作一点,它是值得的.对于我来说,不是编程这行工作,我真不知道怎么去适应其他行.编程值得我热爱.以后周日就用来寻找爱好,什么都去尝试尝试. 交友: 对不熟悉的人不怎么说话,想想正常,毕竟我以前接触的东西太

程序员必读书

前言 Reading makes a full man; conference a ready man; and writing an exact man. Francis Bacon 优秀的程序员应该具备两方面能力: 良好的程序设计能力: 掌握常用的数据结构和算法(例如链表,栈,堆,队列,排序和散列): 理解计算机科学的核心概念(例如计算机系统结构.操作系统.编译原理和计算机网络): 熟悉至少两门以上编程语言(例如C++,Java,C#,和Python): 专业的软件开发素养: 具备良好的编程