Javac编译原理学习:一、Javac介绍

Java虚拟机规范和Java规范是不一样的,他们都有自己的词法和语法解析规则。所以javac要将Java语言规范解析成Java虚拟机的语法规范,Javac作为‘翻译‘’。

Javac是什么?

机器能够识别和运行的都是机器码,但人去写机器码的话太困难,太不友好、所以人们通过编译器将高级语言转换成目标机器码。

javac编辑器就是将Java语言编译成jvm所能识别的语言,最后jvm将jvm语言转换成当前机器能够识别的语言。

这种转换虽然比其他语言多了一层步骤,牺牲了一些执行步骤,但是却拥有了平台无关性。

在Java编译原理中,将会了解到Javac的语法树结构、Javac的工作流程(包括词法分析、语法分析、符号表构建、annotation处理、标注和语法检查、数据流分析、类型转换、语法等)、java如何实现内部类、如何实行对异常的处理、javac与其他编译器的对比。

Javac将java语言转换到jvm语言需要经过以下几个步骤:

1、词法分析

2、语法分析

3、语义分析

4、代码生成

要读取源代码,就需要一个单词一个单词地读取,从中找出规范的token流,就像人类语言一样,要能识别出哪些是标点符号,哪些是动词,哪些是名次。

语法分析检查单词之前的组合是否符合Java规范,比如if后面是否接了布尔判断表达式,就像人类语言中主谓宾的组合是不是能够理解的。

语法分析形成一个符合Java语言规范的抽象语法树,抽象语法树是一个结构化的语法表达形式,它的作用是把语法的主要词法用一个结构化的形式来组织起来。

语义分析将复杂的语法解析成简单的语法,比如将foreach转为for,注解转为代码。

最后,通过字节码生成器生成字节码,将会根据经过注解的抽象语法树生成字节码,也就是将一个数据结构转为另一个数据结构。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值