大作业要写编译器,写啥语言呢?

2015-12-14 13:56:42 +08:00
 a302800411

词法分析器和语法分析器都要手写,代码量 5000 行左右吧,不知道该写啥语言,最近期末时间也比较紧张,龙书都还没有看完,感觉如果自己总结 LL1 文法的话,是一件很蛋疼的事.
没在 Google 上搜到合适的教程...很多都是写到一半就断更了...Coursera 上有一节编译器的课,可是没有字幕看起来好费劲.
求各位 V2er 推荐一门靠谱的语言来写...有教程推荐更是极好的....
最搞笑的是这门大作业不是编译原理的...是软件构造的(课本是代码大全)..

5850 次点击
所在节点    问与答
35 条回复
eb0c6551
2015-12-14 14:12:50 +08:00
平心而论,如果一门课要求写编译器,但没有提供一门语言的子集以及一定的程序框架,就实在是太坑了。
a302800411
2015-12-14 14:15:52 +08:00
@eb0c6551 是啊,虽然没要求最后能链接执行,但大体上我觉得还是应该要写出来的,
其实老师本来的目的是按小组分工,体验合作写代码,但大学环境大家都懂的,一个程序猿带三个文档手
tabris17
2015-12-14 14:17:09 +08:00
pascal 或者 basic 最简单了
wildlynx
2015-12-14 14:25:51 +08:00
How about The "Brainfuck" programming language?
easing
2015-12-14 14:29:26 +08:00
参考 lua 的语法,不到一页纸,还可以做适当简化,根本用不到 LL LR 等自底向上的,直接递归下降就搞定了,不需要 5000 行。后端建议找一个 VM 平台或者写一个简单的 VM 作为目标代码,省心。
a302800411
2015-12-14 14:45:53 +08:00
@wildlynx 这个...........
a302800411
2015-12-14 14:46:10 +08:00
@tabris17
@easing
我来查一查资料...
josephpei
2015-12-14 14:50:42 +08:00
coursera 上的课都有英文字幕。斯坦福的那个 Compiler 课,作业是 COOL 教学语言,生成 mips 指令,用 mips 模拟器执行。其它有些大学是用 llvm 后端。
V69EX
2015-12-14 14:52:36 +08:00
最简单的莫过于汇编语言的编译器了!
silenc1
2015-12-14 14:52:37 +08:00
我们学校编译原理教材用的是《编译原理及实践》,当时写的是教材上 C Minus (简化版的 C ),书结尾有代码
qdwang
2015-12-14 14:52:52 +08:00
写 scheme ,不用语法分析了
shoumu
2015-12-14 14:54:48 +08:00
我们当年写的 C0 , C 语言的子集
yunying
2015-12-14 14:58:57 +08:00
我大三编译原理的期末实验就是要做一个语法分析和词法分析器。词法分析器选用的是 C/C++语言,核心是实验有限状态自动机就行,然后定义好你自己的规则即可,还算比较简单。不过语法分析做的是 TINY 语言(一个经过精简的用于教学,是当时上课教材里用的),核心直接使用递归下降方法,不过要在词法分析的基础上做的。
integer
2015-12-14 15:01:09 +08:00
参考虎书,有个 tiger 编译器,基于 java 的
josephpei
2015-12-14 15:06:06 +08:00
有本书叫《编程语言实现模式》,用 java ANTLR( the next generation of flex/bison for java),从头开始一步步写个简易编译器(基于 JVM ),该书理论讲的很少,基本都是实践过程。 Udacity 上也有门课,用 python (pyFlex/pyBison)写个简单编译器。 Udacity 的特色也是社会培训班类型,不讲理论,只讲实践过程。
jiang42
2015-12-14 15:32:57 +08:00
果断 Lisp 啊😄
dndx
2015-12-14 16:08:33 +08:00
我都是 C++、 Bison 和 YACC ,写起来还是挺简单的。
a302800411
2015-12-14 16:14:32 +08:00
@dndx 助教还要求手写,,,不能用工具 神坑
pynix
2015-12-14 16:16:06 +08:00
lisp
clino
2015-12-14 16:21:29 +08:00
写 lua 的吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/243411

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX