java编译器源码分析之词法分析器

java编译器是什么?

编译简单理解就是一种高级语言到另一种低级语言的翻译过程;而执行这个过程的主体称为编译器。寻常所说的编译器是指把汇编语言转变成机器语言,也称目标代码,即CPU指令集。汇编语言是一种比机器语言对人友好的语言,但不同机器硬件构造不一样,驱动机器的软件也不一样,因此汇编语言需要针对不同的机器编写不同的代码,显得有点麻烦。为解决这个问题,聪明的工程师想到一种方法,即采用虚拟机的形式屏蔽底层硬件和软件平台的不同,也就是说,高级语言的编写不受底层硬件的影响,达到“一次编译,到处运行”的效果。
很明显,“一次编译,到处运行”的功能寄托于虚拟机;java语言是基于java虚拟机(JVM)而实现的一种高级语言,它需要通过java编译器编译成JVM识别的语言,最后由JVM实现到目标语言的转换。
javac

javac的作用?

javac是把java高级语言转变成JVM识别的一种二进制代码;具体体现就是.java文件到.class文件的转变;JVM识别的.class文件存储的是字节码;而转变的正确性则是由JVM的语言规范来保证,所以java编译器的作用可以理解为把java语言规范转变成JVM语言规范。

javac的主要过程?

从java语言到字节码的转变要经过四个过程:①java语言到Token流的过程,称为词法分析;②Token流到抽象语法树的过程,称为语法分析;③解析复杂的树节点,如语法糖的解析等,称为语义分析;④抽象语法树到字节码的过程,称为代码生成。
javac过程
至于为什么要分为这四个步骤?
抽象语法树是关键。抽象语法树可以把一种语言结构重组为另外一种语言结构,这里可以简单理解为java语言规范到JVM语言规范的转变。

这篇博客首先来看一下词法分析的过程。

何为词法分析?

词法分析从字面来理解就是解析java语言中的单词;单纯的从字面来看,java文件由java关键字、标识符(包名、类名、属性名和方法名)以及符号(各类运算符、各类括号)等三部分组成。词法分析的主要目的就是把这些单词和符号转变成Token流。那么什么是Token流呢,后面会讲到。

词法分析的过程?</
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值