Modify the CFG and attribute grammar of Figures 4.11 and 4.14 to permit mixed integer and real

Question:

Modify the CFG and attribute grammar of Figures 4.11 and 4.14 to permit mixed integer and real expressions, without the need for float and trunc. You will want to add an annotation to any node that must be coerced to the opposite type, so that the code generator will know to generate code to do so. Be sure to think carefully about your coercion rules. In the expression my_int + my_real, for example, how will you know whether to coerce the integer to be a real, or to coerce the real to be an integer?

Figures 4.11:

program + stmt list $$ stmt list + stmt list decl | stmt_list stmt | e decl - int id | real id id := expr | read id | write expr stmt expr → term | expr add_op term term + factor | term mult-op factor ( expr )

Figures 4.14:

Fantastic news! We've Found the answer you've been seeking!

Step by Step Answer:

Related Book For  book-img-for-question
Question Posted: