zoukankan      html  css  js  c++  java
  • javac编译原理之生死人肉白骨

      生死人肉白骨:使死人复生,使白骨长肉;javac编译就是将.java文件转换为jvm能看懂的.class文件

      简单来说javac编译只需要几个组件即可完成:

      首先:要读取源码,一个字节一个字节的读取进来,找出在这些字节中哪些是我们定义的语法关键字,如java中的if,else,for,while等关键词;要识别哪些 if’ 合法的关键词,哪些不是,这个步骤就是词法分析过程。词法分析的结果就是从源代码中找出一些规范化的Token流,

      接着,就是对Token进行语法分析了,这一步就是检查这些关键词组合在一起是否符合java语言规范,如 if 后是否是一个布尔判断表达式,就像人类语言中是不是主谓宾定状补,主干枝叶分清楚,定语必居主宾前,谓前为状谓后补。语法分析的结果就是形成一个符合java规范的抽象语法树。

      然后就是语义分析了,语义分析就是将一些难懂的代码,复杂的语句转换为通俗易懂的语法,就像生死人中的生,使动用法,使XX复生的意思,对应到java中就是将 foreach转换为for循环,还有注解等,最后形成一个注解过后的抽象语法树,,这棵树也最符合目标语言的语法规范。

      最后,通过字节码生成器生成字节码,根据经过注解的抽象语法书生成字节码,也就是将一个数据结构转换为另一个数据结构,就像将文言文转换为白话文。

    代码生成器的结果就是生成符合java虚拟机规范的字节码了,这个过程使用的组件如下:

  • 相关阅读:
    平稳随机过程通过线性系统
    频谱分析的作用
    数字图像处理中的4邻接,8邻接与m邻接
    网络存储实验基础
    灰度变换
    MATLAB数字图像处理基础
    用MATLAB对信号做频谱分析
    关于 oracle10g、oracle client和plsql devement 三者之间的关系
    技术栈呢
    Linux编程
  • 原文地址:https://www.cnblogs.com/52czm/p/11006514.html
Copyright © 2011-2022 走看看