Mini Java编译器(六)

编译

七、系统工作过程及运行说明

   

   

   

八、实例程序运行结果示例一代码
class

Main{

  public static void main(String[] args){

    System.out.println(10);

  }

}

 

 

 

 

 

 

class G{

  public int get(int num){

    int a;

    a=2;

    return a+5;

  }

}

 

 

 

 

 

 

class H extends G{

  int i;

  boolean bol;

 

 

 

 

 

 

  public int put(){

    i=1+2;

    i=12-3;

    i=2*7;

 

 

 

 

 

 

    bol=true && false;

    bol=1<2;

 

 

 

 

 

 

    return 10;

  }

}

 

 

 

 

 

 

继承树

 

 

 

 

 

 

符号表

 

 

 

 

 

 

内存分配表

 

 

 

 

 

 

示例二代码
class Factorial {

    public static void main(String[] a) {

        System.out.println(new Fac().ComputeFac(10));

    }

}

 

 

 

 

 

 

class Fac extends Factorial{

    Fac f;

    Factorial ff;

    int i;

 

 

 

 

 

 

    public int ComputeFac(int num) {

      int numaux;

      if (num < 1)

        numaux = 1;

      else

        numaux = num * (this.ComputeFac(num-1));

      return numaux;

    }

}

 

 

 

 

 

 

class F extends Fac{

}

 

 

 

 

 

 

class G extends Factorial{

}

 

 

 

 

 

 

class H{}

 

 

 

 

 

 

class I extends H{}

 

 

 

 

 

 

class J extends I{}

 

 

 

 

 

 

class GG extends I{}

 

 

 

 

 

 

class DD extends I{}

 

 

 

 

 

 

继承树

 

 

 

 

 

 

符号表

 

 

 

 

 

 

内存分配表

时间: 2024-09-22 22:16:02

Mini Java编译器(六)的相关文章

Mini Java编译器(五)

编译 六.系统的设计和实现这个编译器是用Java写的,基于OO技术,所以整个系统是尽量用OOD设计的.OOD中最小的设计粒度是类,本系统的大致类结构如下   compiler包整个系统的根,UML图如下:   token包封装了所有的可识别单词,采用一符一码,单词对应的码定义在Token类中,该类是抽象类,仅作继承用.该包UML图如下: common包公用包,封装了一些公用的对象和数据结构: HierarchyTree类和HierarchyTreeNode类定义了继承树结构: MemoryTab

Mini Java编译器(一)

编译 一.任务概述本项大作业将设计并实现一个Mini Java语言的编译器 Mini Java概述Mini Java是Java语言的子集.作为一种很好的编译课程教学语言,它与Java相比做了如下精简: (1)不允许重载(overloading) (2)一个文件中可以申明若干个类,但必须有且只有一个的主类,辅类可以有多个,类不能申明为public:主类中只能有一个主方法,该方法的签名必须为"public static void main(String[])",其中String[]参数不做

Mini Java编译器(二)

编译 二.Mini Java的文法BNFGoal ::= MainClass ( TypeDeclaration )* <EOF> MainClass ::= "class" Identifier "{" "public" "static" "void" "main" "(" "String" "[" "]

Mini Java编译器(三)

编译 三.属性翻译文法主类声明(MainClass)<MainClass> ::= "class" <Identifier>↑<id_name1> @fillMemory↓<id_name1>↑<id_address> @fillTable↓<id_name1>,<id_address> @fillTree↓<id_name1> "{" "public"

Mini Java编译器(四)

编译 四.P代码指令说明由于系统较简单,所以对底层硬件也做了简化: 1.没有寄存器,只有一个数据栈 2.只能对主存进行存.取操作 3.只支持主存间接寻址 4.可以查找符号表中符号,返回该符号地址   指令表(未完成)助记符 格式 说明 push push <address> 将<address>指向的内容压栈 pop pop <address> 将栈顶内容弹入<address>指向的位置 jmp jmp <address> 无条件跳转至<a

java编译器顺序-java读取代码顺序是从左往右还是从右往左

问题描述 java读取代码顺序是从左往右还是从右往左 java编译器读取每行代码顺序是从左往右还是从右往左 例如 int a=1; int b=2; int c=3; int d=a+b*c int d=a+b*c是从左往右读取还是按优先级读取 编译器读取每行代码都是从左往右读取吗 解决方案 也许你觉得从左到右是很天经地义的事情. 偏偏阿拉伯文就是从右到左的. 我们知道,windows.office这些软件都有阿拉伯语言的版本,也能正确处理这些语言. 那么微软是否需要为这些国家或者地区的人重新设

华硕校招笔试题:哪些语言可以实现java编译器?

问题描述 今天参加了华硕的校招笔试,java只有唯一的一题,说的是:下列哪些语言可以实现java编译器?A:CB:C#C:JAVAD:以上都可以请问各位大神们指导,应该选哪个?java编译器还可以用多种语言实现吗?跪求解答! 解决方案 解决方案二:应该都可以吧解决方案三:就是生成.class文件吧.是A->B的转换吧.是语言都可以.解决方案四:是的,都可以!解决方案五:引用2楼u011461314的回复: 就是生成.class文件吧.是A->B的转换吧.是语言都可以. 请问能详细解释一下吗?解

Java SE 6.0调用Java编译器的两种新方法

在很多Java应用中需要在程序中调用Java编译器来编译和运行.但在早期的版本中(Java SE5及以前版本)中只能通过tools.jar中的com.sun.tools.javac包来调用Java编译器,但由于tools.jar不是标准的Java库,在使用时必须要设置这个jar的路径.而在Java SE6中为我们提供了标准的包来操作Java编译器,这就是javax.tools包.使用这个包,我们可以不用将jar文件路径添加到classpath中了. 一.使用JavaCompiler接口来编译Ja

编码准则与Java编译器

我们在写代码时,常常会提到两条原则: 1.方法要尽量短,大方法要分解成小方法: 2.不要重复发明轮子. 我们在强调这两个原则的时候,往往只关注的是代码简洁.易维护等方便我们人的因素,其实这样做还可以大大方便java编译器优化代码. Java编译器优化简介 Java应用程序的编译过程与静态编译语言(例如C或C++)不同.静态编译器直接把源代码转换成可以直接在目标平台上执行的机器代码,不同的硬件平台要求不同的编译器.Java编译器把Java源代码转换成可移植的JVM字节码.与静态编译器不同,java