Answered step by step
Verified Expert Solution
Question
1 Approved Answer
Here is the first assignment And this is the solution for the first one which I also need help. My professor said that the PairExpList
Here is the first assignment
And this is the solution for the first one which I also need help. My professor said that the PairExpList constructor has an Exp as the first argument, not a Stm, so the PrintStm is the problem. Wrap the PrintStm in an EseqExp which extends Exp. But I am not quit understand it.
And this is the assignment THAT I NEED HELP WITH!
I would be grateful if you could help me with the details. I am really confused about these assignment. And please don't copy other answers to here.
One of the fundamental data structures of a complier is the tree structure. A tree is one of the forms to implement intermediate representations. The assignment is the implementation of an intermediate representation of the straight-line programming language, described by the following grammar. StmStm;Stm(CompoundStm)StmIdExp:=Exp(AssignStm)Stmprint(ExpList)(PrintStm)Expid(IdExp)Expnum(NumExp)ExpExpBinopExp(OpExp)Exp(Stm,Exp)(EseqExp)ExpListExp,ExpList(PairExpList)ExpListExp(LastExpList)Binop(PLus)Binop(Minus)Binop(Times)Binop(Div) The grammar can be translated directly into a tree structure definition, where each grammar symbol corresponds to an abstract class given below. Note that the id is represented as a string and the num is an int. The programs to be analyzed are already parsed into abstract syntax, using the data types specified below. To avoid parsing the language, the program is written using data constructors. For example, the program a:=5+3;b:=(p+int(a,a1),10+a);print(b) can be represented in the above abstract syntax tree and specified as follows: Stm prog = new Compoundstm ( new Assignmstm (new IdExp ("a"), new OpExp (new NumExp (5), OpExp.Plus, new NumExp (3))), new CompoundStm (new Assignstm ( new IdExp ("b"), new EsegExp( new PrintStm( new PairExpList( new IdExp("a"), new LastExpList ( new OpExp ( new IdExp ("a"), OpExp.Minus, new NumExp (1))))), new OpExp (new NumExp (10), OpExp. Times, new IdExp (an)))), new Printstm( new LastExplist( new IdExp("b"))))); This assignment is to implement a tree structure for the intermediate representation of the language. Write the program supporting the inclusion of a tree construction statement like the one given above. Output a trace of class instantiations. Encode the following program and its tree construction. a:=3; b:=a4; e:=(print(b),b+a); d:=(e:=5,(print((print(e),6),(f:=e/7,ef)),8)) To support the simultaneous compilation of multiple programs, avoid the use of static variables, unless they are constants (final). Submit an executable and the source files after a colleague has reviewed your work. 1234567891011121314151617181920212223242526272829303132CompoundStm:AssignStm:aNumExp:3CompoundStm:AssignStm:bIdExp:aNumExp:4OpExp:TimesCompoundStm:AssignStm:cPrintStm:IdExp:bOpExp:PlusIdExp:aCompoundStm:AssignStm:dCompoundStm:AssignStm:eNumExp:5PrintStm:EseqExp:PrintStm:IdExp:eOpExp:MinusAssignStm:fIdExp:eNumExp:7OpExp:DivNumExp:8PrintStm:IdExp:d This assignment builds on the SLP Intermediate Representation Implementation. Functionality is added to the program to support three visitors using the Visitor design pattern. 1. Leaf Node Visitor: This visitor will determine the number of leaf nodes within the tree represtation of the program. The leaf nodes of interest are either a NumExp or I dExp object. Remember that print statements can contain expressions that contain other print statements. For the sample program below, the visitor would report a total of 10 leaf nodes, 4 NumExp objects and 6 IdExp objects. a :=5+3; b:=(print(a,a1),10a); print (b) 2. Symbol Table Visitor: This visitor will build a symbol table of variables appearing in the program. The symbol table will contain the variable's name and its assigned value. Assume all variables are initialized to 0 . The visitor will report the final values of all variables. Assume the representation is in static single assignment form. Remember that EseqExp statements contain both a Stm and an Exp part. The value of the Exp part is what will be assigned if the EseqExp appears in an assignment statement. Exp (Stm,Exp) (EseqExp) public class EseqExp extends Exp \{ public Stm stm; public Exp exp; public EseqExp(Stm s, Exp e) \{stm=s; exp=e; \}\} The sample program above would report final values of " a=8 " and "b =80. 3. Pretty Print Visitor: This visitor will generate a formatted listing of the SLP. The EseqExp may be expanded to several lines as formatted below. Each statement must be on a separate line. Use consistent spacing and indentation. a:=5+3;b:=(print(a,a1),10a);print(b) Use the straight-line program from the previous assignment to demonstrate the correctness of the visitors. One of the fundamental data structures of a complier is the tree structure. A tree is one of the forms to implement intermediate representations. The assignment is the implementation of an intermediate representation of the straight-line programming language, described by the following grammar. StmStm;Stm(CompoundStm)StmIdExp:=Exp(AssignStm)Stmprint(ExpList)(PrintStm)Expid(IdExp)Expnum(NumExp)ExpExpBinopExp(OpExp)Exp(Stm,Exp)(EseqExp)ExpListExp,ExpList(PairExpList)ExpListExp(LastExpList)Binop(PLus)Binop(Minus)Binop(Times)Binop(Div) The grammar can be translated directly into a tree structure definition, where each grammar symbol corresponds to an abstract class given below. Note that the id is represented as a string and the num is an int. The programs to be analyzed are already parsed into abstract syntax, using the data types specified below. To avoid parsing the language, the program is written using data constructors. For example, the program a:=5+3;b:=(p+int(a,a1),10+a);print(b) can be represented in the above abstract syntax tree and specified as follows: Stm prog = new Compoundstm ( new Assignmstm (new IdExp ("a"), new OpExp (new NumExp (5), OpExp.Plus, new NumExp (3))), new CompoundStm (new Assignstm ( new IdExp ("b"), new EsegExp( new PrintStm( new PairExpList( new IdExp("a"), new LastExpList ( new OpExp ( new IdExp ("a"), OpExp.Minus, new NumExp (1))))), new OpExp (new NumExp (10), OpExp. Times, new IdExp (an)))), new Printstm( new LastExplist( new IdExp("b"))))); This assignment is to implement a tree structure for the intermediate representation of the language. Write the program supporting the inclusion of a tree construction statement like the one given above. Output a trace of class instantiations. Encode the following program and its tree construction. a:=3; b:=a4; e:=(print(b),b+a); d:=(e:=5,(print((print(e),6),(f:=e/7,ef)),8)) To support the simultaneous compilation of multiple programs, avoid the use of static variables, unless they are constants (final). Submit an executable and the source files after a colleague has reviewed your work. 1234567891011121314151617181920212223242526272829303132CompoundStm:AssignStm:aNumExp:3CompoundStm:AssignStm:bIdExp:aNumExp:4OpExp:TimesCompoundStm:AssignStm:cPrintStm:IdExp:bOpExp:PlusIdExp:aCompoundStm:AssignStm:dCompoundStm:AssignStm:eNumExp:5PrintStm:EseqExp:PrintStm:IdExp:eOpExp:MinusAssignStm:fIdExp:eNumExp:7OpExp:DivNumExp:8PrintStm:IdExp:d This assignment builds on the SLP Intermediate Representation Implementation. Functionality is added to the program to support three visitors using the Visitor design pattern. 1. Leaf Node Visitor: This visitor will determine the number of leaf nodes within the tree represtation of the program. The leaf nodes of interest are either a NumExp or I dExp object. Remember that print statements can contain expressions that contain other print statements. For the sample program below, the visitor would report a total of 10 leaf nodes, 4 NumExp objects and 6 IdExp objects. a :=5+3; b:=(print(a,a1),10a); print (b) 2. Symbol Table Visitor: This visitor will build a symbol table of variables appearing in the program. The symbol table will contain the variable's name and its assigned value. Assume all variables are initialized to 0 . The visitor will report the final values of all variables. Assume the representation is in static single assignment form. Remember that EseqExp statements contain both a Stm and an Exp part. The value of the Exp part is what will be assigned if the EseqExp appears in an assignment statement. Exp (Stm,Exp) (EseqExp) public class EseqExp extends Exp \{ public Stm stm; public Exp exp; public EseqExp(Stm s, Exp e) \{stm=s; exp=e; \}\} The sample program above would report final values of " a=8 " and "b =80. 3. Pretty Print Visitor: This visitor will generate a formatted listing of the SLP. The EseqExp may be expanded to several lines as formatted below. Each statement must be on a separate line. Use consistent spacing and indentation. a:=5+3;b:=(print(a,a1),10a);print(b) Use the straight-line program from the previous assignment to demonstrate the correctness of the visitorsStep by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started