第四章 Javac编译原理
4.1 Javac是什么
是一种编译器,将JAVA源代码(.java文件)语言先转化成JVM能够识别的一种语言(.class文件),然后由JVM将JVM语言再转化成当前机器可以识别的机器语言。
4.2 javac编译器的基本结构
javac编译器的作用是将符合JAVA语言规范的源代码转化成符合JAVA虚拟机规范的JAVA字节码。
词法分析:从源代码中找出一些规范的token流,就像在人类的语言中分辨出哪些是词语,标点符号,动词,名词等。
语法分析:形成一个符合JAVA语言规范的抽象语法树。语法树是结构化的语法表达形式,把语言的词法用一个结构化的形式组织在一起。
语义分析:虽然语法分析完了,但是语义是否正确呢?语义分析是把一些难懂的,复杂的语法转化成更加简单的语法。比如将foreach转成for循环结构,还有注解等。
代码生成:通过字节码生成器生成字节码,生成的是复合JAVA虚拟机规范的字节码。
4.3 Javac工作原理分析
4.3.1 词法分析器
4.3.2 语法分析器
4.3.3 语义分析器
4.3.4 代码生成器
4.4 设计模式解析之访问模式
4.4.1 访问者模式的结构
4.4.2 Javac中访问者模式的实现