Program to abstract syntax tree constructed, JAVA Programming

Assignment Help:

Please submit your answers    

In this homework, we are going to generate Java Virtual Machine codes by processing the abstract syntax tree constructed from the parsing process.

We are going to support all features of C-- language for integer data type. That is, for the purpose of this homework, float data type is not supported.

Please refer to the following documents about Java Virtual Machine codes:

  • Instructions Set (limited to instructions that are related to integers only)
  • Compiling Examples

The template for codes generation program is similar to that given for hw7. Also, click here for an executable for hw8.

One can obtain the Java Virtual Machine codes for the test data as follows: Take the example of data04. We can present it as a Java program as follows:

public class data04 {

public static

int

Factorial(int v)

{

   int limit = 7;

   if (v < 0 || v > limit) return -1;

   {

       int c = 0, fact = 1;

       /* Loop invariant: fact == c! */

       while (c < v) {

          c = c+1; fact = fact*c;

       }

       return fact;

   }

}

}

The commands are:

  javac data04.java

  javap -c data04 > data04.java.out

The command javap will produce the Java Virtual Machine Codes in readable format.

You can also compare the output data04.java.out by javap with the output of hw8 by running

  hw8 < data04 > data04.out

NOTE: The codes produced by hw8 may differ from that by the Java compiler. But the codes are close. Sometimes, hw8 has a few more unnecessary branching statements which can be cleaned up by a simple pass over the generated codes.

Programming hints:

Previously, traverse_ast does not return any value. You may want to extend the function traverse_ast to return the number of lines of codes generated. In order that traverse_ast can generate the right line numbers for the Java Virtual Machine codes, the function traverse_ast takes one extra parameter next_line_number which is the line number of the first instruction generated in the processing of the subtree rooted at node.

The (unsophisticated) codes for AST_ADD in traverse_ast can be very simple as follows:

case AST_ADD:

             size  = traverse_ast( node->left  , next_line_number        );

             size += traverse_ast( node->right , next_line_number + size );

             printf("%4d:   iadd\n", next_line_number+size);

             size++;

             return size;

You need to modify your symtbl module so that each ID symbol has an entry with a field local_var_index. Note that we do not make use of any temp variable for codes generation in this homework. We need a global variable local_var_num, which use is similar to that of temp_num, to keep track of the largest variable number that is currently in use. The function symtbl_dump_entry needs to be revised to print also the local_var_index associated with an identifier.

Also, modify hw5parser.y so that float data type is no longer supported.

type_spec   : INT

              { data_type = TYPE_INT; }

            | FLOAT

              { yyerror("float unsupported\n"); exit(-1); }

            ;

Java uses special comparison instructions when one of the operands is 0. They are ifeq, ifne, iflt, ifge, ifgt, ifle. For your first attempt, you can just use the general comparison instructions if_icmpeq, if_icmpne, if_icmplt, if_icmpge, if_icmpgt, if_icmple so that you can avoid testing if one of the operands is 0.

NOTE: the codes that your program generates do not have to match the quality of the codes generated by the Java (javac) compiler, or my hw8.

NOTE: You can assume that each integer constant in a C-- program is of small value, and can be represented in one byte so that there is no need to use the runtime constant pool. Also, you can assume that the number of local variables is small such that the index into the local variable array can be achieved in one byte.


Related Discussions:- Program to abstract syntax tree constructed

Query and update the text database for a library , Implement a program to q...

Implement a program to query and update the text database for a library using a client/server model allowing multiple clients safe access to the database, and using a producer-cons

How can we include images in a web page using html and java, How can we inc...

How can we include images in a web page using HTML and Java script?2011 Images in HTML It is quite straight forward to include gif and jpg images in an HTML webpage using the

Need java assignment for course, Need Java Assignment for course Project...

Need Java Assignment for course Project Description: I want to get an assignment done. Involves building on a minesweeper game written in Java. You subsequent code is to be u

Create a gui in java, Fill in the necessary parts to create a GUI that use...

Fill in the necessary parts to create a GUI that uses the CardDeck class.  In your GUI you should have a text field for each hand, two buttons and a text area.   Your program s

Write a java adb client, Write a Java ADB client to perform the following- ...

Write a Java ADB client to perform the following- The client will read the contents of the file - invoice.txt. The first line of the file will display the type of the currency. The

Give an examples of java.lang.math methods, Give an Examples of java.lang.M...

Give an Examples of java.lang.Math Methods Here is an instance program in which exercises most of the routines in java.lang.Math. If your high school math is a little rusty, do

How you returning values from methods in java, How you Returning Values Fro...

How you Returning Values From Methods in java ? It's frequent meaningful to have a method return a value to the class which is known as it. This is accomplished through the ret

Java server faces - eagro portal project, eAgro Portal Project: Techno...

eAgro Portal Project: Technology Used: Java Server Faces, JSR 168 Specification, Websphere Portal Server5.0, DB2 database And Rational Application Developer, Jasper Report Too

Boardcoloring , n this problem you are given a board in which some of the e...

n this problem you are given a board in which some of the elements are placed as shown in diagram below. Each element represents a color. Fill the other elements in the board, such

What is the difference between internet and intranet, What is the differenc...

What is the difference between Internet and Intranet ? Intranet and internet are 2 domains which are extremely a like but frequent segregated in order to manage security. Inter

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd