Skip to content
gqlxj1987's Blog
Go back

Compile Thoery

Edit page

原文链接

编译原理分为前端和后端

「前端」是用来处理 Context Free Language ,把 text 转化成 tokens ,然后再把 tokens 通过 syntax rules 转化成 AST 的过程。

其中把 text 转化成 tokens ,一般用到的技术是 Regular Expression ,也就是「正则表达式」,背后对应的是无状态的自动机 NFA , NFA 可以转化为 DFA 。

然后, tokens 根据 syntax rules 进行 semantic analysis 的过程,是通过 parser 来完成的。

因为 context free language 需要分析文本前后的联系,也就是所谓代码的内在关系,所以必须用到内存,但不必用到随机存取内存,因此就在无状态自动机基础上加上 stack memory ,变成 Pushdown Automaton ,也就是 PDA ,下推自动机。

「后端」就是把 AST 转化成实际的目标代码


Edit page
Share this post on:

Previous Post
Resteasy
Next Post
baseline 开发