我只是一名发烧友程序员。我有龙书,我一直试图理解递归解析器是如何工作的,但对我来说这很难。我也一直在研究语言源代码,但即使是小语言也很复杂。
例如: Lua大约有18K行代码 Sed约为20K 图标大约是41K Ed(文本编辑器)只有大约2.7K,但似乎与我所知的语言完全不同。
有人可以推荐一种小小的语言来学习吗?它是否有用无关紧要。
维基百科指的是“微小的编程语言,但没有链接。
感谢您阅读 - Patrick
答案 0 :(得分:1)
Tiny最初由Jack Crenshaw开发,用于他的基于pascal的教程“Lets build a compiler”,现在教程已经从我的链接中移开了!我相信有一些人在许多课程中使用它或类似的东西来教授编译器背后的想法。
这里有一个版本http://www.e-booksdirectory.com/details.php?ebook=1137e
目前,它是针对MC680x0处理器的输出组件,用于1980年代后期的Atari ST / comodore Amiga型家用电脑。
如上所述的代码是一个介绍,大部分都不是复杂的代码,它很简单且工作正常,解析器是一个非常基本的设计。
答案 1 :(得分:0)
查看ANTLR维基上的calculator example。从那里,您可以尝试其他任务,例如解析CSV文件,或Terrence Parr class site底部的练习。
答案 2 :(得分:0)
我建议学习某种语言的BNF,例如c:http://www.cs.man.ac.uk/~pjj/bnf/c_syntax.bnf
因为学习代码根本无法理解递归解析器。想象一下BNF是什么,研究C_syntax bnf,尝试编写一些代码并在纸上解析它 - 我编写了我的编译器,所以这是我的开始,尝试理解它是如何工作的。