什么是编译程序
- 翻译程序:将某一种语言程序(源语言程序)等价转换为另一种语言程序(目标语言程序)的程序
- 编译程序:把一种高级语言程序等价地转换为另一种低级语言程序(如:汇编语言、机器语言)
- 解释程序:把源语言写的源程序作为输入,但是不产生目标程序,而是边解释边执行源程序本身,
编译结构
把编程语言看做句子
- 词法分析:分析出各个单词
- 语法分析:分析出各类短语
- 语义分析:根据句子结构分析出句子中各个短语在句子中充当什么成分
- 给出中间表示形式
编译器工作结构
编译器分为两个阶段:前端(分析源码)和后端(生成目标代码)
语法分析树与抽象语法树的区别
解析树是您的语法及其工件的结果(您可以为同一种语言编写无穷多的语法),AST 将解析树简化为最接近该语言。同一种语言的几种语法会给出不同的解析树,但应该产生相同的 AST。
语法分析树和语法树不是一种东西。习惯上,我们把前者叫做“具体语法树”,其能够体现推导的过程;后者叫做“抽象语法树”,其不体现过程,只关心最后的结果。
我要做的,是抽象语法树ast
有一个在线生成语法树的网站,是基于java-parser的,可以用多种语言——网站——竟然是js写的,震惊
好像有用java写的,