1
zjsxwc 2019-10-09 09:37:39 +08:00 1
龙书
|
2
salamanderMH 2019-10-09 09:42:38 +08:00 1
编译原理及实践这本书简单点。
|
3
itenyh 2019-10-09 09:46:59 +08:00 via iPhone 1
喜欢写代码,不用当码农,码农是青春饭
|
4
levelworm OP |
5
levelworm OP @salamanderMH 多谢!看了一下目录的确也不错,步子似乎小一些
|
6
stormhouse 2019-10-09 09:53:24 +08:00 via Android 1
|
7
zhuangzhuang1988 2019-10-09 09:55:44 +08:00 2
先看 antlr 的两本书 <Language Implementation Patterns> <The Definitive ANTLR 4 Reference>好用,工具齐全,知道工业级的代码有啥.
parsec 相关的少花时间, 语法糖, 对写算法没啥提高 然后再看理论书. |
8
GeruzoniAnsasu 2019-10-09 09:59:34 +08:00 via Android 1
以及推荐一下 llvm 的 tutorio
写出一个 parser 其实相当于数据结构刚学会了链表,虽然能用来做不少事了但也刚入门而已( interpreter 只要能撸出来 parser 就已经完成大部分了) |
9
jimrok 2019-10-09 10:10:59 +08:00 1
python 不是很好了,也可以嵌入到应用里,你用 c++做个桥,接上去,就能用脚本控制你的代码了。
|
10
fcten 2019-10-09 10:21:42 +08:00 1
有理论基础的话,看着 lua 的代码照着撸就是了。没有就先学一下编译原理。
|
11
favourstreet 2019-10-09 10:29:41 +08:00 via Android 1
写 c 的解释器不需要多少编译原理的东西,但是强烈建议看一看 c 的标准 ISO9899 (草案),这个标准会为你实现 c 的编译器 /解释器提供极大的帮助;另外建议以实现自举为目标(解释器自己能嵌套运行),这个不难,很重要,而且据我的经验,很有成就感
|
12
levelworm OP @favourstreet 多谢,不过这要求离我很远,我慢慢来,先写个简单的解释器。。。不过能想象出来会很有成就感。
|
13
kele1997 2019-10-09 11:20:57 +08:00 1
|
14
kele1997 2019-10-09 11:22:02 +08:00 1
github 上的 c4 很短,可以看一看, 然后下面的那个是教程版
c4 实现了自举哦 |
15
nianyu 2019-10-09 11:33:56 +08:00 1
我想知道推荐龙书的自己看没看完 况且 lz 说了非码农, 写点编译器用得到看龙书? 简单的网上一大把的博客百行代码的简易实现. 可以先看看王垠的文章 如何写一个解释器
|
16
hmzt 2019-10-09 11:35:20 +08:00 1
解释器很好写的,不需要太多知识,会字符串处理就差不多了,编译器的汇编部分就比较麻烦了
|
18
levelworm OP @hmzt 这块我看过一点东西,印象最深刻的就是怎么用 two passes 来读入函数信息,比如说 parameter 和 local variable。觉得的确是聪明啊。。。
|
19
wangyzj 2019-10-09 12:24:44 +08:00 1
老哥,勇气可嘉
但能有你这种心态才能永远保持年轻和竞争力啊 |
20
jon 2019-10-09 14:08:47 +08:00
收藏一下
|
21
YourLord 2019-10-09 14:10:01 +08:00 via Android 1
BA 为啥要学 C/C++?
Python 用处更大。 |
22
seraphv3 2019-10-09 17:17:25 +08:00
我看过虎书 C 语言版前半部分,照着做了学校的课程大作业。做解释器应该容易点,要做汇编代码生成,寄存器分配真是难,不管 x86 还是 MIPS。印象中数据结构和算法有一些,像符号表(里面有 hash 运算,类似于实现了一个 java 的 HashMap )、语法树、中间代码树,不过没有什么需要预先学习的,用到的时候看看就行了
|
23
tankren 2019-10-09 17:23:01 +08:00 1
是我就不会自学这种 怎么学都比不上专业的 对自己工作 /职业发展无用的 技能
|
24
lazydog 2019-10-09 17:32:42 +08:00 via Android 1
github 上的 build your own x 项目可以帮到你!
|