`
wx1568847608
  • 浏览: 13737 次
文章分类
社区版块
存档分类
最新评论

Javac编译原理

 
阅读更多

      Java语言有Java语言规范,这个规范详细描述了Java语言有哪些词法和语法,而Java虚拟机也有Java虚拟机规范,Java虚拟机规范和Java语言规范不是一回事。那么如何才能让Java的语法规则适用Java虚拟机的语法规则呢?这个任务就是由Javac编译器来完成,它的任务就是将Java语言规范转化成Java虚拟机语言规范,完成“翻译”工作,然后由JVM将Java虚拟机语言规范再转换成当前这个机器可以识别的机器语言。Javac功能如下图所示:

     

      Java编译器的作用就是将符合Java语言规范的源代码转换成符合Java虚拟机规范的Java字节码。主要过程如下:

  1. 读取源代码,一个字节一个字节的读进来,找出这些字节中哪些是语言关键词,如Java中的if、else、for、while等关键字,这个步骤是词法分析过程。词法分析的结果就是从源代码中找出一些规范化的Token流,类似于人类语言中词性识别、标点符号等。
  2. 对Token流进行语法分析,这一步就是坚持这些关键词组合在一起是否符合Java语言规范,如在if后面是否紧跟着一个布尔表达式,语法分析的结果是形成一个符合Java语言规范的抽象语法树。
  3. 语义分析主要工作是把一些难懂的、复杂的语法转换成更加简单的语法,类似于将文言文翻译成白话文。语义分析的结果就是将复杂的语法转换成最简单的语法,对应到Java中。如将foreach转换成for循环结构还有注解等,最后形成抽象语法树,这课语法树更加接近目标语言的语法规则。
  4. 最后,通过字节码生成器生成字节码,根据经过注解的抽象语法树生成字节码。

代码生成器的结果就是生成符合Java虚拟机规范的字节码,这个过程如下图所示:

 

转载于:https://my.oschina.net/u/3469218/blog/1587492

分享到:
评论

相关推荐

    编译原理课程设计(javac)

    编译原理课程设计,关于javac源代码的分析。对于词法分析,语法分析,有详细的解释。

    java现代编译原理.rar_java 编译_现代编译原理_编译_编译原理_编译原理 java

    Java现代编译原理是计算机科学中的一个重要领域,它涉及到如何将高级编程语言,如Java,转换为机器可执行的指令。这个主题对于深入理解Java程序的生命周期和性能优化至关重要。以下是对这一领域的详细阐述: 首先,...

    javac_可以编译目录.rar

    Java 编译器 javac 是 Java 开发工具包(JDK)的核心组件,它负责将编写好的源代码(.java ...通过深入研究 javac 的源码,你还能进一步理解 Java 编译器的工作原理,这对于成为一名优秀的 Java 开发者是至关重要的。

    javac源代码,java具体编译步骤

    通过阅读`javac`的源代码,开发者可以更清晰地了解编译器的工作原理,从而更好地调试和优化自己的程序。在实际编程中,还可以借助类似Javassist、ASM这样的字节码操作库,实现动态代码生成和修改,增强程序的功能。

    深入分析Java Web技术内幕高清PDF版.zip

    其次深入介绍Java技术,包括I/O技术、中文编码问题、Javac编译原理、class文件结构解析、ClassLoader工作机制及JVM的内存管理等。最后介绍Java服务端技术,主要包括Servlet、Session与Cookie、Tomcat与Jetty服务器、...

    深入分析Java Web技术内幕 修订版.pdf

    其次深入介绍了Java 技术,包括I/O 技术、中文编码问题、Javac 编译原理、class 文件结构解析、ClassLoader 工作机制及JVM 的内存管理等。最后介绍了Java 服务端技术,主要包括Servlet、Session 与Cookie、Tomcat 与...

    \编译原理\编译原理课程讲义\java图.

    ### 编译原理:Java图解析 #### 一、引言 Java作为一种广泛使用的编程语言,在软件开发领域占据着举足轻重的地位。其成功的关键因素之一在于它独特的编译和运行机制。本文将深入探讨Java编译原理,并通过一张简化...

    编译原理编辑器java

    在Java环境下,编译原理的应用通常涉及Java编译器Javac的工作流程。虽然Java是解释型和编译型混合的语言,但它的源代码仍然需要通过JVM(Java虚拟机)的编译过程才能运行。Javac会执行上述的词法、语法和语义分析,...

    编译原理(陈英)

    《编译原理》是计算机科学领域的一门重要课程,由陈英教授编著。这门学科主要研究如何将高级编程语言转换为机器可执行的低级代码,即汇编语言或机器语言。编译器是这个过程的核心工具,它的工作原理和设计方法是...

    编译原理语义分析编译原理语义分析

    编译原理是计算机科学中的一个重要领域,主要研究如何将高级编程语言转换为机器可以理解的低级语言,这个过程通常分为词法分析、语法分析、语义分析和代码生成四个阶段。语义分析是编译过程中至关重要的一步,它确保...

    深入分析Java Web技术内幕 修订版

    其次深入介绍了Java 技术,包括I/O 技术、中文编码问题、Javac 编译原理、class 文件结构解析、ClassLoader 工作机制及JVM 的内存管理等。最后介绍了Java 服务端技术,主要包括Servlet、Session 与Cookie、Tomcat 与...

    编译原理大作业

    《编译原理大作业》是针对大学计算机科学专业编译原理课程的一份实践作业,旨在帮助学生深入理解和应用编译器设计的基本原理。这个作业涵盖了三个重要的工具:Bison、Flex和JavaCC,它们分别在编译器的不同阶段起到...

    词法分析[编译原理]

    词法分析是编译原理中的一个关键步骤,它是编译器设计的第一阶段,负责将源代码文本分解成一系列有意义的符号或标记,这些符号被称为“记号”(Token)。在这个过程中,词法分析器(也称为扫描器或 tokenizer)会...

    编译原理(龙书)

    根据提供的文件信息,“编译原理(龙书)”这一标题及描述主要指向了一本关于编译原理的经典教材。下面将围绕“编译原理”的核心概念和技术进行详细阐述。 ### 编译原理概述 编译原理是计算机科学中的一个重要分支...

    编译原理实践-语言认知1

    【编译原理实践-语言认知1】 在计算机科学领域,理解和掌握编程语言是至关重要的,因为它们是我们与计算机沟通的工具。本实验旨在通过实践帮助学生深入理解程序设计语言的发展历史,不同语言的特点,以及它们如何被...

    编译器 编译原理课程设计 java

    在这个“编译器 编译原理课程设计 java”项目中,你将有机会深入理解这些编译器设计的核心概念,并通过编写Java代码实现它们。这不仅能够提升你的编程技能,还能帮助你更好地理解计算机系统的工作原理,对于软件开发...

    武汉理工大学编译原理复习资料

    编译原理是计算机科学中的一个重要领域,主要研究如何将高级编程语言转换为机器可以理解的低级语言,如机器码或汇编语言。这门学科对于计算机科学专业的学生来说至关重要,因为它涉及到软件开发的核心环节——代码的...

    深入分析java web

    3. **javac编译原理**:javac是Java的官方编译器,理解其工作原理有助于开发者优化代码和解决编译问题。这部分可能会涉及词法分析、语法分析、类型检查、字节码生成等编译过程。 4. **Class文件结构**:Java程序被...

    java+compile.rar_java netbean compi_编译原理 java

    在“java+compile.rar_java netbean compi_编译原理 java”这个压缩包中,我们主要关注的是使用Java和NetBeans进行编译原理的实践。 编译原理是计算机科学的重要组成部分,它涉及到将高级编程语言转换为机器可理解...

    javac源码和运行说明文件.zip

    通过学习javac源码,不仅可以提升对Java语言的理解,还能增强对编译原理的认识,对于软件开发者来说是一笔宝贵的财富。在实际学习过程中,结合Eclipse的调试功能,可以更有效地探索和理解javac的运作机制。

Global site tag (gtag.js) - Google Analytics