《自制编程语言》读书笔记
2014-03-31 By LiuMian
自制编程语言----引
前段时间图灵出版了一本《自制编程语言》,运气很好手里有一本,决定利用好这个博客记录一下自己的学习过程,写写自己的心得,将厚书读薄是第一步。如果您是编程爱好者,不妨和我一起学习,相信一定会大有裨益。
翻开这本书之前,如果别人问我要不要尝试自制一门编程语言,我会觉得you are crazy,因为在潜意识里,自制编程语言一定是像C语言之父丹尼斯里奇或者Ruby之父松本行弘那样的业界大牛才能完成的浩大工程。但其实,创造一门语言,只需要一些C语言基础、一些正则表达式知识、加上不断思索的大脑。
为什么要制作编程语言
单说目前主流的编程语言,就有C/C++、Java、C#、Python、ruby、php、lisp、JavaScript等等,那为什么要制作一门新的语言呢?
1.可以帮助理解编程语言的内部运行机制
2.能制作领域专用语言
如同php专门面向web一样,很多语言都是Dsl(Domain-specific Language),那么如果掌握了制作语言的技术,就可以可以在必要的情况下制作出DSL。
3.可以用编程语言扩展应用程序
例如Emacs就内置了Emacs Lisp这种Lisp方言,为Emacs的自定义性提高了无限的想象力。
4.还有就是非常有趣
有人说过,想写出终极程序的程序员最终都去写操作系统或者编程语言了!
用什么语言制作
作者采用的是C语言作为语法处理器的编写语言。 理由是可以降低依赖度,并且作者要用的的yacc/lex工具(后文会解释)也是面向C语言的。
要制作什么样的语言
1.设计什么样的语法
作者在经过复杂的内心活动之后,决定制作一门与C语言类似的编程语言。
当然需要改造一些东西,比如
1.C语言中的if {}是可以省略的,作者觉得很混乱,所以在语法层次将{}设置为不可以省略。
2.增加关键字
3.switch case中,去掉忘了写break就会进入下一个case的设计。
4.同时如果没有进入任何一个 case或者也没有写default分支,运行时就报错。
5.还要加上python的缩进表示逻辑结构(真是贪心-,-)