Figure 1.7. Translation of an assignment statement
p = x + v * 60
Lexical Analysis
<id,1>
<=> <id,2> <+>
<id,3> <*> <60>
Syntax Analysis
assn
/
| \
id
= expr
/
/ | \
p expr
+ expr
| / | \
id expr * expr
|
|
|
x
id const
|
|
v
60
Semantic Analysis
=
/
\
<id,1> +
/ \
<id,2>
*
/ \
<id,3> int2float
|
60
Intermediate Code
t1 = int2float(60) |
t2 = id3 * t1 |
t3 = id2 + t2 |
id1 = t3 |
Code Optimization
t1 = id3 * 60.0 |
id1 = id2 + t1 |
Code Generator
LDF R2, id3 |
MULF R2, R2, #60.0 |
LDF
R1, id2 |
ADDF
R1, R1, R2 |
STF
id1, R1 |