第四章 Javac编译原理
2024-10-21 03:45:49
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中访问者模式的实现
最新文章
- Windows批处理:自动部署常用软件(静默安装)
- jquery的curCSS方法
- ubtuntu 下安装Erlang R17
- lua 获取文件名和扩展名
- Trick
- 文件的搜寻【转vbird】
- swift 笔记 (十八) —— 扩展
- MyEclipse或Eclipse导出JavaDoc中文乱码问题解决
- Java进阶(四十六)简述ArrayList、Vector与LinkedList的异同点
- (90)Wangdao.com第二十三天_JavaScript CSS 操作
- 手把手:使用service principal连接Azure Media Service
- Kubenets 调试cronjob
- $.each()和$(selector).each()
- 配置ssh免密码登入
- 配置子目录Web.config使其消除继承,iis7.0设置路由
- hadoop MultipleInputs fails with ClassCastException (get fileName)
- VS2015预览版体验
- windows批处理初学贴出一些命令
- sqlmap的二次开发
- git 本地文件里内容 操作记录
热门文章
- InflateException:Bin file line #19:Error inflating class MyTextView
- 解决Oracle数据库IP地址改变创建数据库的问题
- 三十九 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念
- 解决loadrunner在脚本回放时长时间等待及在vugen中create controller scenario时报错的方法!超管用!!
- 【第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-F】等式(因子个数)
- OLED取模笔记
- hdu4619
- LeetCode OJ:Lowest Common Ancestor of a Binary Tree(最近公共祖先)
- WAL日志文件名称格式详解
- 项目工程结构说明(Internal)