i
*%+
%&
,
-'. !0/
i
i
i
Como Construir
um Compilador
Utilizando
Ferramentas Java
Márcio Delamaro
Novatec Editora
i
i
i
i
i
2"
i
!Í">/
i
i
Capítulo 1
Introdução
¤ñM.>H: 5 7@Y%R E ^'e:8+78 E8E ( 5 7@ 5 e E :G78RS>T 5
E T 5
E
¦ ReLS È E
; E +W<L>e9; E
E :G78R$:8R78<'e%:G>7GeW<+e%:GbRW
5 7bRW
j
5 W<.MK; 5 7NC
E +7U0R$:G'M.'_>; 5
5 W
5
5 W
55
=H
=kI+e+'»;$F E
?dW3 5 7U
•
•
•
7G E RM.:8; 5
5 K7 5
5 K7 5
EG5 Wi7 5
5 K7 5
465 W
5
5E =kI+e+';
E NY
E E +7»RWi<.e E :G78RS>T 5 VLYRb.eL;$'>
MKI178 E V>;JY%RM
lHe'>C
e-W<+W<¯78KVZ: 5 ; 5
7 5 78W<]z+gNR$:U; 5
e
46f ½
; 5
46f ½ò 5E8E RL7G> E :878; 5 78 E Y%R`RL7U;W\:8+W< 5 7U78'W)>e%:G`;; 5EdEG5 78
e}W<+W<¯78'}e 5
5 M 5 >7 5
5 W
" E 5 ;$67G>7G E >e%:87Ø;; 5%E :U E
Y%R E(E );$ E *vW«78>M.'_>7 5 L>78S È E C fZ5 7(g$>W)M 5 VtL7U
_+>e; 5
5E
ù 5 7»g$+W<M 5 VVy"V$VyC'C'C ú<Y%R)';+e%:G Ç +i;(Wie+'78
E v-7GWi_>+e; 5
5 W<R$:8; 5 7NCØ·
•
5 78;78+W
5 W<R:8; 5 7d;$>1 E » 5 W) 5 7G:87>CØ·òW<+W<¯78'J]^;.1K;$';+W
RW¨+e;+78>S 5
Y%R
5%E`E5 7Gbi¦ +7878W)>e%:8i°%I1I 4`4 V
5E bY%R»;$'_yG½^W7 5 7UWiJ;$( 5 W<R:8; 5 7d]^RW<
e W)>7 5%E .e%:8+'7 5%E V E :G78'e E V78+ E :G7 5E :UC'V 5 R 5 ;$
5E8E R'e; 5
5
e E :GJ:8g: 5 C
" E 78Wi_+>e;ae E R^W<>W)¯7GKI CB? E8E E NY
5E
D W3t]+W
O que faz um compilador
bRWi¦ 7U E a¦§W
E '
5E t+e E 7G>1>W)>e%:G;$ E +R$:G'7^Y%R E
5 W<'M'; 5 7»3 5 W)>e%:878+W
RW¨+7U; 5 7a;$b 5 W).MK; 5 7G E Y%R
1.1
;$» 5 W<.MK; 5 78 E 7 5 1I1+M'W<+e%:GØv
E +781(RWî 5 W<'M'; 5 7NC fZ5 7` E8E5 V1IW
]JJ7U0Y%R
e 5
'H
5 e%:G'H; 5
5 e%:G'
H;5
5 e%:G'
H;5
5 e%:G ; 5
RW<+e%: 5
I
+e;$>7GNS 5
+e;+78>S 5
"N} 5 W
">%$V$
5
XH
e W<+7 5
=H
E5 Wi7»RWæe W)>7 5
78Wi_+>e; 5
e 5
+e;$>7GNS 5
46f ½;$>1>7GK3+g$>R:87 5 L>78S È E 5 W
;W)>W<¯78'z">378
5
78+ E :G7U; 5 7F·
;) 5%E KS+T 5
;W)>W<¯78'z">" 78
5
78+ E :G7U; 5 7
n
;$·
/m
"N"<
5 nm
n m
;) 5%E KS+T 5
;$
78W<p
>Wî·
7U)< 5%E KS+T 5
;$W<>W)¯7GKz">C
;b 5 W<M.+g$';;$ ; 5E 7 5 7UWi E ;$( 5 W)R$:8; 5 7NV: 5 78e 5 R$p E ^e>+ E p
E 78 5 ;$ E >e%1 5 M'1 +pXM 5E eRWêe â 1+M%;$@ E :878S+T 5 RW
5 R 5 Wi E >M.>1I; 5 VNW<+e 5%E ;$>L>e;$+e%:8
; E 'e E :G78RS È E ;$ RWi0;$+:G>7GW<'e;3WiY%R'eCZj 5 78W+7GK; E V E8E .W}V$ E M.'eRL>e E ;$
"
i
i
i
i
i
,
i
!Í"+
i
i
Î`ÏaÐÑÏÎ`ÏaÒ ÓÌÔZÕ0ÖØ×*ÕîÖ[ÐÙÎ`ÏaÐÚd×*ÛÌÜ Ý)ÏaÕ
M.: 5
e â 1+MXVLY%R
_>S+T 5
E R E :G.:GR>W« E 'e E :87GRLS È E ; 5E 5 W<R$:U; 5 7G E 5 7 5 Wie; 5%E Rv E R$:8.M'.p
5 W<7G>+e E T 5<E T 5
5E`EG5 Wi7 5
'e;$K+iY%RY%R+78+W
t+M 5
A
7 5 7UWi; 5 7i;$
5 M 5 >7 5
7G E RM.:8; 5
m # E
5 W
5
5 WieL; 5
c = a + b;
'H
5 e%:G ; 5
e< 5%E KS+T 5
M''eR>e E
>7: 5zE +e%:GK; 5
W< E ¦§> E C fZ5 7`g$>W)M 5 V 5
;$RWi< 5E 'S>T 5
'H
5 e%:G ; 5
;$W<+W<¯7GK0Y%RJ¦ 5 ÌU9W<;
;, 5%E KS+T 5
;$W<+W<¯7GK,U9Wi;,;$
poIC
;(W<>W)¯7GK<U9Wi;0;
;$<7 5 7UWiS>T 5
78;$K+M'W<+e%:GV 5E
W0R;78W
L>7GWie>++Wæ'eM.:G>78; 5E E ¯} 5 e E >R>W
B
5 W<R$:U; 5 7G E eRW
+e%:8+e;$>7*3'e E :G78RS È E(E 'W)M. E
0Y%R) E :GvW
e 5äE >R&78+t+7G:G¯78 5 C fZ5 7( EGEG5 Vt7 5 7UWi E E 78H: 5E +WæM'.eR+e E ;$0MH: 5
e â 1>MB78> E W
E +7» 5 e1>7:8'; 5%E e E8E E .e E :G78RS È E e%:G E ;$
78.eL'MZ:87G'RKS+T 5
RL>W;$»MH: 5
E +78+W+g$>R:8; 5E Ck? EGE )]b
5 W).MK; 5 7>F:878e E ¦ 5 7GWi7»RWæ7 5 78Wi< E 78H: 5
;$)RW
e â 1+Mu0Y%R^U9WiW
5%E ;$^M'.eR+W¦ 5 e%:G`u3+W
5 7`RWi<;$:8+78W<.e;)WiY%R'e3u#Y%RbU9LWiW
eRWi#M'.ep
.e E :G78RS È E g$NR$:UI1+ E
5E ;$+¯;. 5)5 $v*: 5 C
PROGRAMA
PROGRAMA
FONTE
OBJETO
COMPILADOR
qrs
Fonte 1
Obj. 1
Fonte 2
Obj. 2
Compilador
Linkeditor
.
.
.
.
.
.
Fonte n
Obj. n
Executável
qts
f 7 5 + E8E5%E ;$iù§úa 5 W<'M'S+T 5
j[.R78ä"C."»u
l EGEG5
]ä78 E RW<'; 5
RW
7UY%R'1 5
5 W
5¬E â ;,RW
5 R$:87 5
1>_+ E EGE <7 5 7UWi
; E
M.'eRL>e E
7 5 78W<
Ç R7Uà"C'"ù{úC-?dW
e
5 e:8+e; 55
7UYR.1 5
5 $v*: 5
Wi E RW
>W
E8E5
78
5
5 W<.MK; 5 7378>++tz 5 W
¦ 5 e%:G-ù 5
+¯;. 5à5 $v*+: 5
L7G:G<; 5
E +R E
ù 5
5
>e:878;
7 5 78W<z¦ 5 e:8Núb#7 5 ;R_
7 5 78Wi
7 5 7UWiÍ 5 W
78 E t> :8.1 5E
5
5 $v*: 5 úCsR.:8 E
: 5 ; 5 Ci·
RW
5 W<.MK; 5 78 E
L>7GW<.:G>W
W< 5 7GK
Y%R}RW
;$'1+7 EG5E 78Y%R'1 5%E pX¦ 5 e%:8378 E LN :G'1 5%E^5 $v*: 5E C(=» E8E )+ EG5
7Ub7G>7U7 5
½^WÿM'.eº>;$.: 5 7^v*Re%:U}: 5 ; 5%E5E
Y%RJ E :8)7 5 e%: 5
5 W
]<L>e E
;$7 5 78WiS+T 5
E *vz;$'1%K;$K; 5
](e>+ E8E 7G 5
+7UMXV 5
7 5 78W<äe&M.'eR+W
iù túaM.'eº>;$KS+T 5 C
7 5 78W<JL7Ubg$NRS>T 5
7 5 7UWi E(5 $v*: 5E VB¦ 5 78Wie; 55
E +7^+7G78+%; 5
e<W<+W<¯78'); 5
ù{j[.R78Í"C'"ù§LúúC
7 5 7UWizg$>+R$:8I1+MXV
5 W<R$:U; 5 7FJ+gNR$:U; 5 C
i
i
i
i
i
/,
i
!Í"No
i
i
eu
wvyx0×*Ò0ÔZÕÏaÝÍÖVz|{bÏ
ÎZÜ^Ú +Ô(ÖØÛ6Ï
1.2
Os componentes de um compilador
D 7U;'+ 5 eM'W<+e%:GVZ& 5 e E :87GRS>T 5
5 WRWi)¦ ReS>T 5
m
eM' E ; 5 7FM.]+g$' 5
5
eM' E ; 5 7 E 'e%:8:GK 5
5
eM' E ; 5 7 E >Wi®e%:GK 5
5
+7U; 5 7F;J+¯$;$. 5 C
•
•
1.2.1
5 W).MK; 5 73]ä;$.1K;$K;+W´7:8 E Vk+;RWi
;$zRW
E t> â.Ç >CZ?dWî+7UMXV$ 5 ;$>W
5
•
•
m
5E K;$+e%:G Ç >7`+WîRW¨ 5 W<'M'; 5 7N
m
O analisador léxico
¤ÊeM. E ; 5 7[M']g$' 5
ù§· AØúZ>e+7G78+%p E F;$ E >7U7Ze 5
E .e Ç +; 5
:G>e9zM'RW
7 5 7UWi`¦ 5 e:8^+;
5 R&;)I1 E 7»Y%Re; 5
78#ÍM.'eR+W
¦§_L7G:G;<M'.eR+W]>e 5 e%:G7U; 5 C fZ5 7`g$+W<M 5 V1W
=kI+eLK);
}~XM}wp~ S=d=_
g_&:b'[
5 Wî
· 5
E >R'e%:G
E >Y
eM. E 7a:8MB+e%:878;V 5
5 M 5E C[·»M.]>WË;$ EGEG5 V 5
]Y%R>M.
•
•
•
•
•
•
EGâ W0 5 M 5 CZ= 5
eLM' E ; 5 7aM.]+gK 5
+ E5
Eâ W3 5 M 5
EGâ W0 5 M 5
RW
Y%R
Y%R0eLT 5
5%E`E R 5 7`RW¨7 5 7UWi¦ 5 e:8
Eâ W3 5 M 5E e%:G>7G 5 7NV%:G>7 â W
I
;$>1>7GK)';$>e%:G Ç +7^
eM. E ; 5 7k;$>1`+:G> 5 78'_>7Z+;JRW
5 5 787 >eK3;b
;$+M' E V'e;$K+e; 5
Eâ W)p
;$»Y%RF:G' 5
5E m
"I/3uÍ 5 e E :Ue%:G('e:8+'78
m
gy" uÍe 5 W);$17GKI1>M 5 Rz7 5 N;$.W<>e: 5
m$u
EGâ W3 5 M 5
m
E t>+'M* 5 e%: 5 prpr1 â 78RMKI
m
buÍe 5 W);$17GKI1>M 5 Rz7 5 N;$.W<>e: 5
m
:87GR(u# 5 e E :8e%:GJ 55 M.Ne
t+.ezu#M'I17U378 E +781;C
¤ 1%KW<>e:8b E8E #MK E8E Ç >S+T 5
E ;C)·MK E8E Ç >S>T 5
5 ;$
;$+t+e;0;$)YRLM[M.'eRL>Wî¦ 5 e%:Gb E :U
E >77GNMZ78ääM.'eRL>W
]3L7Ui°I1V 5 eL;$3#LMKI1%7U*t+.e$3eT 5
R$:8.M'._N;Vk 5 70+g$+W<M 5 Vd 5 W
5E<EGâ W0 5 M 5%E
Y%R;$>1>W
5
:8+W
e>e9RW
f E +MXVBWi E
E 'e Ç >; 5
¤´·»A
E >7078> 5 e9NK; 5E
t+M 5
· AdVk;$>1+W
5%E
;$>1-:8W0L]>W©I1 E 7äYRLe; 5
RW
EGâ W0 5 M 5
eM..p
E t>+'MÌ0 5 ;$
78> 5 787G>7
'e%1M.K; 5
" |L78>>7keRW7 5 7UWi
¦ 5 e%:8C fZ5 7d+g>W<M 5 V E 5)Eâ W3 5 M 5
5 W<.MK; 5 7»°%I1V 5
E +e; 5
++7G:8W<>e:8<eT 5ä5
E >7
e 5 W<ä;$z17GKI1>M{C&· EGE 'WäV@7U;$+:G+78W<.eL70Y%R E)E T 5
M'.eR+W}C
eT 5
/
·»Aà;$>13I1 E 7^Y%R3RW
¦§_J7G:G;$e>e9RWi<+:8+ 5 78'0;$
EGâ W0 5 M 5
'e1M''; 5
Eâ W3 5 M 5E >H:U3t+M 5
J
;$ E 78'S>T 5
78>+&e 5
E >e; 5
;
7 5 7UWi
eM' E ; 5
5 7@RW
y |
¦ 5 [+e 5 e%:G7U; 5 V 5 E
·»A@C
i
i
i
i
i
à
i
!Í">
i
i
Î`ÏaÐÑÏÎ`ÏaÒ ÓÌÔZÕ0ÖØ×*ÕîÖ[ÐÙÎ`ÏaÐÚd×*ÛÌÜ Ý)ÏaÕ
¤¨¦ Re+ 5 eW<>e: 5
GYR+7U7 5
1>78;;$aeT 5
;$>M. E
; 5
L78>z E :8e%:G
· A
7 5 7UWi ¦ 5 e%:G +W
]»L>W E8E C[?kg$ E :G>W
fZ5 7`+g>W<M 5 V 5 W
D R; 55
Y%Rä+M'ä;$>1z¦§_>+7<]
;$'1>7 EG5E 5 W<M''>; 5 7G E L7U EGE :87G+¦§Cd¤ò78'W)>.7 5
E +W<78) E :U}:8T 5
]ÍY%R#}+e%:878;}e+W
E 'W<M. E C
Eâ W3 5 M 5E ^1>7G Ç +7@bY%R»>:8+ 5 7GK(+M' E L>7:8+e++W}CZ·
5iE +78')eLM' E ;)
L>Wÿ7G78RWi;z 5 W
&
5
Y%R#W
5E :G7UW
5E C
E >R'e%:GJ+e%:878;
}~XM} g_&b[c=_[7a
E +7^;$'1';$K;}ù >W
?dMKi;$+1+78'
m
uÍ 5 e E :Ue%:G('e:8+'78
¿
m
Eâ W3 5 M 5
u
E LNKMG78U9I1
u#M'I17U378 E +781;C
Ø ¤ R$:G7 5
¦§: 5 7iYR}; Ç +RM.:8- 5 e E :G78RS>T 5
E :8; 5E );$.¦ +78+e%:G E VÌ;# 5 78; 5
¦ 5 e%:8C fZ5 7`+g$+W<M 5 V;$ EGE +W
+R E <RW
e 5
m
u#e 5 W)b;(17GKI1>M 5 Rz7 5 N;$'W)>e%: 5
Ä @Lµ
f E +MKú
+787 5
5 W
5%E
5%E 9< 5 R 5
;$>e 5 W<'e; 5
+787 5
; 5
· A
]Y%Rä E :G} 5 ;ä>e 5 e%:G7U7Gp E #+W
+7U:G>7G E Y%R
E T 5
+e 5 e%:G7U; 5E
Y%Rb<78 E +eLS+);$RW
M']g$K 5 C^s E E8E5
eLT 5
|e
]b1+7U;;
5
e 5
7 5 7UWi
7 5 7UWi¦ 5 e:8
E >W)7GC m 078>++7
7 5 78W<b¦ 5 e%:G
'7 bS7_f:\if:^^&d=d\g^
5
· A&eT 5
;$>1» 5 e:U76RW+787 5
e9N>7`RWii 5 e E :Ue%:G; 5
· 5
M']g$K 5
>W
(5
>e 5 e:8787>V 5 7@g$>W)M 5 V 53EGâ W0 5 M 5
:GRL; 5
Y%R(7GNS+b:G]
5
= 5
> â :GRM 5
5
5%E 5 W
/b1+78+W
·»A&+e%:G7UJeRW E :8; 5
#7 V$:8]»W< E W
5
78¯Ig$.W
M'.eR+W}C
5 W
X bS7_f:\if^^dXd\g^ VV E 'WäV%78> 5 p
:8. 5ÍE :G78.eLCd·^M' 5#E +W<+M'9e:8 5 e%:G>+ 5 W
5
+W
5E 5 W<+e%:87G 5E C
Y%R»;$>1^'e 5 7U7
5)EGâ W0 5 M 5%E e 5 7GWiM.W<+e%:8»eT 5
1M''; 5E e
K;$>e:8 Ç +7@ MK E8E Ç >7 5%EdEâ W3 5 M 5E ;$»RWiM''eR>W
5 e E :G78R'7`RWî·»A@C
1.2.2
O analisador sintático
¤òeM' E ; 5 7 E 'e%:8:GK 5
=kI+eLK0;$
E >Y
= 5 :G
5
ù§·
m úZ] 5 5 7US+T 5 6; 5
EGâ W3 5 M 5E 5 e:8';0e 5
M.>H: 5 7bY%R
5
·»A
5 W<'M'; 5 7NV7G E 5 e E I1+M% 5 7k1+78 Ç +7 E `
7 5 7UWiJ¦ 5 e%:8J¦ 5 78W<0RW¨7 5 7UWib1M.K; 5<5 RäeT 5 C
E i+eL+7878+z;$iK;$+e%:G Ç >7
7 5 78W< ¦ 5 e:8V%Wi E eT 53E ^78 5 +R>W
1+78 Ç +7 E (
1M'';
5 R}eT 5 Cd? E8E <]RW<Í; E :G78.R'S È E ; 5
:G78>U9 5
;$7 5 7UWi
·
5EEGâ W3 5 M 5E
5 7U;$+W
+W
Y%R#7GN>Wæe 5
Y%R +M' E 78>++W
m C fZ5 7`+g$+W<M 5 V 5 e E ';+78
]
5<E +R'e:8
b ^ } ¡ g ~
^£¢¤g
i
i
i
i
i
,o
i
!Í"Iq
i
i
eu
wvyx0×*Ò0ÔZÕÏaÝÍÖVz|{bÏ
ÎZÜ^Ú +Ô(ÖØÛ6Ï
¤
5
78> E m
»RW
5 W
5
I 5 W 5 1M''; 5 C f 7UJ E8E5 V
pbÍ;$>131'7»RW VRWii+g7G EGE T 5
;$>1 E +7F+_^;$ eM. E 7k E8E »7 5 7UWi(^78> 5 e9N prM 5
· m
·
o
E L>7 Y%R0L¯ E iLMKI1%7U)7G E >7G1;
CZû»> 5 E
^¢¤g C
f 7UJ E8E5 V 5
·
;$ EGEG5 V;$>1»1'76RW 5 Wie; 5
Y%RM'Y%R>7>V% 5 76+g$+W<M 5 VRWi3:G78.R'S>T 5
]» 5 e E :87GR â ; 5bEG5 7GaRWi78W<:GK+JY%R^;$ E +7G>1^JM'.eR+W¦ 5 e%:GC
m
? E8E <78Wi:GK+)]3 5 W< 5E :8i;$bRW<
E ]>7G'b;$b78+78 E Y%R0;$ E 78+1+W¨Y%R E»E T 5
:G78RS È E 1M''; E ;JM''eR>WäCd¤Ê· m
;$>1^++.:87@Y%R>M. E 7 5 7UWi E Y%R E +R+WË E8E E
I
78+7U E a7Gv*+.:87Ìub'e;$K+e; 5
= 5
+ â :GRM 5
0;$ E +7G>1+78+W
R$:8.M'._N;äe E :8):Gg: 5
·^M']+W´;$Í+.:87
5E
;$ E >W)t+e9i'e;
· m
+; 5
5 5 787 >eK»;$aRW+787 5JE 'e%:8:GK 5 ubY%R+M' E Y%R` E 1 5 MKW}C
5%E 5 7FW)> 5
L7Uz} 5 e E :G78RS+T 5
Wi E`E5 78(<R$:8.M''_>S>T 5
;$(RWi07UWi:8'>b3M''eR>W
;$<RWÿ 5 W<'MK; 5 7>C
E +7U
VY%R
++
X
5 W<+e%:87G>W
D W3t]+W
5E
;$7UWi:GK+ E 78);$ E 78+1+7aM'.eR+e E C
7 5 78Wi EJE 'e%:8:GK+W<>e:8i 5 7878: 5%E
5 R$:8780'W) 5 7G:8e%:G(¦ ReS>T 5
7 5 78Wi3¦ 5 e%:GC ½^Wi#781 5 7G
b< 5 W
a;$ E +7G>1+7Z 5 W
07G1 5 78 E 'e%:8:GK+);
¦ 5 78Wi; 5
5 76RWig$78 E8E T 5
:8W3t]+W
78+78 E +e%:U;J 5 7FRWi
Y%Rb:8+W
5 W
»RW
5ÍE R-7G1 5 78 E RWi
'e 5 7G78: 5E V 5
;<7G1 5 78 E 'e%:8:G.p
E 'e:U:8'>]RWi# E :87GR:GR7U<+W«¦ 5 78Wi#;$)781 5 78Y%R
7 5 78W<(¦ 5 e%:G» 5E8E RLRW 5 Wie; 5
:GK+(;$>1a E L>M.9L7[ E8E 6¦§: 5
5E
i7Gv*+.:87
Y%RJ]J< 5 e E :G78RS+T 5
;$ E +7G>1J E 5 e E :G78RS È E ;0M''eR>W7GN 5 e9>+'; E L>M 5
780Y%R+M'J 5 Wie; 5
E 5 e E p
5 Wie; 5
5
Y%R+M'»1 E : 5
· m
e 5
7 5 7UWib¦ 5 e%:GC m 5
93 5 R 5 V E R0781 5 78 E .e%:8p
5 EGE F 5 WieL; 5 ]6¦ 5 78Wi; 5 C fZ5 ;$+7 â W
5E :G>7
b<]
;$( 5 W)L7US+T 5 V
Ç R7U#"C VY%RJ'e;$K+)Y%R 5
5 Wie; 5
;$ :G78.R'S>T 5 C[·ñ+g7G EGE T 5 V 5 7 E RJ1>_V%]
E R7G1 5 78^Rv378._ ] RW<
E R-g$78 E8E T 5
;$
5 t+7US>T 5
E R$:878S+T 5
3RWi
E R-g$78 E8E T 5
;$
W3RMH:8.M'K+S>T 5 C
if
>
-
a
=
*
10
b
= 5%E > â :GRM 5E Í<oi E :U78+W
b
2
j['R7UÍ"C bu#?kg$+W<M 5
:G7U:U78+W
a
5E :878:8e; 5
;$b7G1 5 78 E .e%:8:GK+C
5 Wæ;$:UM'9 E
; 5
· m Cy= 5%E > â :GRM 5%E #iq
5E ;$b7G1 5 78 E .e%:8:GK+C
i
i
i
i
i
,
i
!Í">
i
i
Î`ÏaÐÑÏÎ`ÏaÒ ÓÌÔZÕ0ÖØ×*ÕîÖ[ÐÙÎ`ÏaÐÚd×*ÛÌÜ Ý)ÏaÕ
1.2.3
¤
O analisador semântico
eLM' E ; 5 7 E +Wi®e%:8' 5
E :8T 5
5 7G78: 5E V 5 R
ù§·
m +W#ú '78Í1+78 Ç +7 E E *vV E ^eT 5
S È E R$:G'M.'_>; E t+M 5
5E
I
E t> : 5E(E >Wi®e%:GK 5%E ; 5
+g$ E :G>WË'e 5 >7 >eK E Y%Re%: 5
7 5 7UWi; 5 7NC
50E 'e Ç >; 5
7 5 7UWi
; E 5 e E :G78R$p
¤ÑeM. E ; 5 7 E +Wi®e:8' 5 eT 5 R$:G'M.'_>^W< EÌ5 7 5 78W<6¦ 5 e:8d78F¦§_++7B:8M1>7G Ç +S+T 5 C
?dW\1+_@;$ E8E5 VNR:G'M.'_> »781 5 7G E .e%:U:GK+ 5 W
5 7G>7G E >e%:8S>T 5 ; 5 7 5 7UWiC̤2eM' E ; 5 7
I
E +Wi®e%:GK 5
;$>1J7 5 +R7U7a 5 7`.eL 5 +7 +e+' E 5 W
:8. 5E
5 t+7Ue; 5E
;$
.eL 5 W<: â 1> E
5 5 W
5 t+7U; 5 78 E C
5Eä5
m :8.1+78W
5 Wie; 5
^£¢¤g `--1I7GKI1>M¥`&¦ 5 ;$NMK7U;; 5 :8. 5 iSXdb[7PV@>e:UT 5,5 eM' E ; 5 7
E +Wi®e:8' 5 ;$+1Í 5 e%:U7RWÿ+787 5E +Wi®e:8' 5 VØ 5 E E8E <:8. 5 ;$ 5 L>78e; 5 eT 5 ]
5<5 L>78; 5 7 m
5 W<: â 1+MB 5 W
17GKI1> E eT 5 ;>MK7U; E m
•
78>;>MK7US>T 5 ;$178'I1+ E m
•
5 eX
U9LWi; E ;$J¦ ReS È E`5 RäW<]: 5 ; 5E 5 W
H W<+7 5 'e 5 787G+: 5 ;$7U®W<+:G7 5E m
•
•
•
5 WieL; 5E
5 M 5 +; 5E
¦ 5 78,;$- 5 e%:8g: 5 C
`\[7S:b[=_(¦ 5 780;$»RW 5 Wie;
Wie; 5
5
fZ5 7#g$+W<M 5 V^àR$:G'M.'_>S+T 5
; MKS 5
;$RWÙ 5 p
;$+1 E +7a 5 e%:8;3 5 W
5
>7G7 5
RW
E +Wi®e:8' 5 C
? E8E E +787 5E eT 5#E T 5
5 7U; 5
;:GN :U; 5%E t+M 5
RWizg$78 E8E T 5
5 W
eT 5 V 5 R}Y%RMy]
^£¢¤g `$VyeT 5
5
V`
E +73R:G'M.'_>;+W
.W< 5 7G:8e; 5}E 0¦ 5 d;$NMK7U;Íe%:G>7G 5 78W<+e%:G
5 R
· m >W
EGâ W0 5 M 5%E C^=»+MK
;$+t+e;0;$0RWi<:8L>M'z;$
7GWi_++eL; E 'e$¦ 5 78WiS È E ;$<178KI1+ E ;>MK7U; E VL¦ ReS È E(5 R&W<]: 5 ; 5E Vy:G' 5%E(5 R
MK E8E E C
; 5
5 e E :G.:GR>W¨>7G7 5E`E 'e:U:8' 5E C6û ¦ 5 e:8VZRWi17GKI1>M ä 5 ;$
5iE +Rz:G' 5 C
f 7U#;$ E +W<t+e9L7 E +R&t+MXV 5
E T 5
· m Vt 5 E eT 5
5 Wÿ78Wi:GK+};M.'eRL>W
m 5 W)>e%:G0 5 Wæi:Ut+MKÍ;$
7 5 7UWiC f[5 7 +g$+W<M 5 Vy 5
EGâ W0 5 M 5%E ]3 5E8EGâ 1+M[7GNM'._N7»Í1IM.K;S+T 5zE >W<®e%:GK+
eM' E 7 5
178'I1+ E
+e1 5 M.1K; E
:8e%: 5 V 5
W< E W
5
;$+1V` 5
78>+ E · m >W
¦ 5 7G>1%KW<>e:8;$>+M'78;
· m +W
^£¢¤g `ù 5 R-W<+M'9
5 WieL; 5
E .e%:8:GK+ 5 7G78 E 5 e;$>e:8ä- E8E } 5 WieL; 5 úV 5
eM' E 7iRW
5
:8. 5
5 Wie; 5
`
E t+7
5 7NVtz781 5 7G
E +;&RWi; E
;$+;RWi¬;$>M' E C
;$&;$NMK7US+T 5
5 W
5
f 7U
b[7S¦`$V
'eM'R'7@eb:8t+MKb;$ Eâ W3 5 M 5E 178'I1+M $V%.eL;$'>e; 5 V%+e%:G78 5 R:G7U E 5 E E V%YR E +R<:G' 5
"b[XSPC
]
= 5
+ â :GRM 5
E :GRL;7^ 5 W
1.2.4
5
:878:878+W
5%E
;$ä:Ut+MK-;$
> â :GRM 5%E
-2""Vd'7G>W
5%E
O gerador de código
½^Wi(1>_a1+78 Ç +; 5
Y%RaeT 5 +g$ E :G>W+787 5E[E 'e%:8:8' 5EZ5 R
78>M''_>7 E Rb:87G+¦§VY%R ](378'S+T 5
]78Wi_+>e; 5
eRWî78Y%R'1 5
7UWi EZ5 $v*+: 5E@5 R
t+M 5<E E :8+Wi
EGâ W0 5 M 5%E C2= 5%E
¦ Re 5 e<RW¨eLM' E ; 5 7 E +Wi®e:8' 5 C
; 5
Y%RJ 5 ;$
7 5 78W<
E +Wi®e%:8' 5E V 5
5 $v*: 5 C[?dW
>78M{V 5
E +7` 5E :G>7G 5 78W<+e%:G(M'.eº>;$.:8; 5
E .W<M' E W<+e%:Ga>787G>; 5 @ebW)>W<¯78'b; 5
5 W<'M'; 5 7Z 5 ;$
7 5 78Wi 5 $v*: 5
5 W
5 R$:87 5%E 7 5 p
5 W)R$:8; 5 7d g$>+R$:8; 5
5 t+7U 5 eLMXC
i
i
i
i
i
àq
i
!Í">
i
i
eu
wvyx0×*Ò0ÔZÕÏaÝÍÖVz|{bÏ
ÎZÜ^Ú +Ô(ÖØÛ6Ï
¤î7 5 7UWi
P
5 $v*+: 5
7 5 78W<i¦ 5 e%:GC
78 +:GV[W<N;$'e%:G#'e E :G78RS È E
465 W
5
78+e%:G»;»'e E :87GRLS È E »;$»W<> 5%E ;$( EGEG5
Y%RJg$ E :U0RWî>78; 5 7a;$b+¯;. 5
5 :G'W<._NS>T 5
·
;$' 5 CÍ=^>M'
E T 5
7 5 78W<
; 5
+¯;. 5
M'K+; E
5 $v*+: 5 V 5 W
·>78S+T 5
50E E :8+Wi
; E :G'e%: 5
e 5%EGEG5
5
> â :GRM 5
7UY%R'1 5
5 W).MK; 5 7>Cz·°ö(s
5 W<'MK; 5 7(eLT 5
5 e%:8+W}C D M[7UYR.1 5
;$0W
+C +M' EGE UVyR:G'M.'_>e; 5 p E 5
;$(.e E :G78RS È E Y%R
7UY%R.1 5
'e:8+78W<>;$K78 5
Y%RJ;$+ 5 E ]»:878e E ¦ 5 7GWi; 5
7 5 7UWi
E >78T 5
R$:G'M'._N; E
+C MK E8E VyWi E V E 'W}VBRW
E >7» 5E :G>7G 5 78W<+e%:G7 5 EGE ; 5
;+W;+7U7Gp E ^RW¨¯$;$' 5
5
e â 1+MB;)e 5%EGE 3M''eR>W
E >7@1 E RM.'_>; E V 5 W
7 5 78W<Ͱ E W<'eBVÌ;$ E +7G.: 5
e 5
5E
+7U; 5E 5 7` 5 W<'M'; 5 78 E °I1C[· EGE .W
+7Uä;$.78:UW<+e%:8)RW
5 ;$
5 e++e%:G7U78W
]#RWÿ7 5 7UWiÍ>_#;$ig$NR$:U7Íù§e
Y%R( E 'e E :G78RS È E ;3°ö(sæ 5 ;$>W
+W
;$i¯p
>7U:G+7 âKE :8'> E ; 5
1+_<;$<e 5E
5 W<.MK; 5 7a7U07G>7G E >e%:87 5%E 5 WieL; 5E ;$bMH: 5
¦ 5 e%:8Cͤe 5%EGEG5
;)+7US>T 5
E R)1+M 5 K;;C
"NC3?dW
Y%RMKY%R+7 5 R$:878bW<Y%R.eLV 5%EGE RtRW 5 ev*Re%: 5
+Wîe 5E8E5
; 5
;H¦ +p
5E R$:8.M''_>7 )s&Y%R'e<ö»'7:8RMB°%I1}ù§°ö s&ú` 5 W
1>78;;$V'e%:G+7878:U7 úd7UY%R'1 5E C MK E8E YR E T 5
5 W
7 5 + E8E5
5 :8.W<'_>7bM'RWi E
78
5 V$ 5 7`g$+W<M 5 V E +Rz:8W<e9 5<5 R
;$i¯$;$' 5zE +7UÍ:G7U:8;#e 5
; 5
5 Wie; 5E
5 ev*Re%: 5
5 L>78 5 eM{V>W+7UM]»eN E8E 78 5
5 ;$0¦§_+>7J7G:G<; 5
:8W3t]+W
e â 1>M{V 5E
7U)+;0M':8¦ 5 7GWiC
;$'1>7 E E :G]NeK+ E
+W¨RWii7UY%RH:8:8R78)7:8'+RMK7NV%'78+W
WiY%R'epwM'1 5
;$#Hg 5
5 R>;zMK:U¦ 5 78WiÍ 5E8E RkRW
>;zWiY%R'e
q
5
eRWibM''eR>W
3:G7Ue E ¦ 5 78Wi; 5
eRW
E >R'7>C)=»ä1>78;;$Vy E8E ä 5 7Gp
R$:G'M'._Ne; 5
5 e:U+W}V
RWi)M'.eR+Wî;(W
5 $v*: 5 V]»:UW0L]>W
R$:G'M.'_>;0+W 5 W<.MK; 5 78 E
78> E C
1.3
O JavaCC e o Jasmin
=^ E :8 :8g: 5
E :U78+W
RWiiM'.eR+W
5E R$:G'M.'_>e; 5)5
5 W<.MK; 5 78 E V 5 RàWi E
5 W
5
> â :GRM 5
7GN E W)>e%:G#RW
b;$'_+>7 E ?dM'6:UW0L]>W
E :G E ¦§_
5 RäeT 5
+7U; 5 73;$äeM. E ; 5 7
'e 5 7G 5 7Ue; 5 p E (¯$;$' 5
û».¦ +78+e%:8+W<+e%:G;$
5
5 R$:G7 5E
>78; 5 78 E
7GNM'._NRW´:G' 5
Y%R>M.}t+78W<H:8&Y%R
E vW
; Ç eK; 5%Ei5
5
°%I1I 4`4
n >7Gº+M'+
°%I1 4`4
:G>W
:8M{V 5
;$
; 5
5
5 R$:87 5 V$7U
; 7 5 7G'>;;$ ;
5
5 W<.MK; 5 7 E +7UT 5
;; 5%E Wi E
:878:878+W
YR
5 R¬eM' E E 'e:U:8' 5
;$
¨§@+mj[M.+gÍ
ù§AB+g#
E (M.'t+7U; 5)E5 Í3M'.p
l e%:G>7Ge:@e 5
e
5%E ; 5E
E t>: 5E
; 5
>e;$>7GNS 5
°I1 4`4
5 W).MK; 5 7>C}·>;+:8; 5 e E p
;$+:8M'9 E ; 5
M'+.: 5 7^;$+1 1+78 Ç >7a<; 5 RW<+e%:US+T 5
eLM' E ; 5 7
m Re}sK7 5E E :8+W
¦ Re+ 5 eW<+e%: 5
;$i 5 7U;7»: 5 ; 5E(5%E ;:8M.9 E
5 R$:G7U E ¦ 5 e%:8 E ;$'e$¦ 5 78WiS>T 5
7 5 7UWi+7U; 5
eM. E ; 5 7 E .e%:8:GK 5 C
m 5 ¦ :*~F7G`û E :G78'R$:G 5 eù nam û(úC fZ5 ;$ E +7 5 $:GK; 5
5E Vy 5 7G]>WäVBz'e:8+eS>T 5
+7U; 5 VPC
5 R$:G7 5E 7 5 7UWi E`E 'W)'MK78 E ])Y%R
R$:8.M'._N; 5%E 5E 7G E
Q7SXS&T:i|UWXW&©X^&]^`=`|Z3aX_]ªZ6©&^&]^OZ[_&S7WC3=» E :G<:8g: 5
J 5 e E :G78RS>T 5 ;$Íe 5E8E5 t>Y%R+e 5
Y%R#'e%:G+78 E8E W
:G78RS>T 5
;$
eM. E ; 5 7)M']g$K 5
eLM' E ; 5 76M']g$K 5
] RWî7 5 ;$R: 5
eM' E ; 5 7 E 'e%:8:8' 5
E .e%:8:GK 5 V 5
;$ E 78+1+7
E +7< 5 e E :87GR â ;V
E 'e%:8:GK+U9Wi;;Í: 5 ¬; 5 ~`e
E ¯)1>_CZ?dW+7UMXV 5 R$:87 5%E 7 5 78Wi E@E T 5
n E5 eLú V$RW¨7U0+7U7 5
E .e%:8:GK+-;$+1
;$eM. E ; 5 7
;$}eM. E YR3;$.¦ +78
¤
-7G1 5 78
7U378>M.'_>7F:8MP:U78¦§< 5
5 e%: 5
>eS+
7 5 78W<z°I1ä+_<;$ieM. E 7
E 7G>7U E E LN Ç +; E e EGE )7UWi:8'>C
.eL;$'>7< 5 W
;$ E ++e;$>e%:GCJ¤ R$:G7 5
RWi
>78; 5 7 ;$
E 'e%:8:GK 5 C-?dM'Í: 5 Wi
5 ¦ +78>+d¦§+.M'K;;$ E L7U^ 5 e E :G78RS>T 5 ;(781 5 7G E .e%:U:GK+CØ· 5
-7UWi:8'>VZ 5 ;$+p E z:8W0L]>W
°%I1I 4`4
7U3+7GK7FRW 5 W<'M'; 5 7F7U
C^? E8E 07 5 7UWi)]bRW
>e:878;zRWiz78Wi:GK+Í):G7Ue E ¦ 5 78WipwieRW
RW«7UYR.1 5
t+M 5
7 5 7UWib°%I1I 4`4
E .W<M' E Vt78 E +e%:8;<e 5
;$)R E5
Y%R 5 W<e9
E J+e 5 e%:G7UWîe 5
I
;$ E :8
; 5
°I1 4`4 CL=»T 5
EG5 ¦ :*~a78C
f 7U
5iE5 ¦ :*~F7G J E .eL;$'>S È E
·^ +e;$K
n
C
i
i
i
i
i
,
i
!)
i
i
Î`ÏaÐÑÏÎ`ÏaÒ ÓÌÔZÕ0ÖØ×*ÕîÖ[ÐÙÎ`ÏaÐÚd×*ÛÌÜ Ý)ÏaÕ
¤Ê7 5 7UWi(° E W<'e)]»RWi.e%:8+7G¦§^;^W
:G>7¦§Iú VY%R6: 5 W<J 5 W
7UY%R'1 5
e
t+M 5
ù§78Y%R'1 5
+g$>R:8I1>M[°ö s
l e%:G+78e+:>VBe 5
_>; 5
5 >e%:G7U; RW78Y%R'1 5
+ EG5ä5
+eL;$+78>S 5
· m 4 lGl 5 W'e E :87GRLS È E °ö s¨F7 5 ;$R_FRW
C MK E8E *úCb? E8E )7 5 7UWii 5 ;$):8W3t]+W
Q7SXS=T«UWXWYXY=YVZ`^&SªZ[ ªZ6_&acW7¬
fc_ _dW&©X^7i
fb'[yC^?@M.
M'+.: 5 7bY%R+'78z7 5 ;$R_+'7RWÿ7UYR.1 5
5 W<'MK; 5 7^YR.78+W
MK; 5 7^>78)RW
78äY%R< 5%EGE W
](:G7Ue E ¦ 5 78WiprM 5
g$NR$:UI1+Mkä7:8.7; 5
5E 5 e E :87GR'7`e E :8J:Gg: 5 C@?@W
7 5 78W<)°ö s
1 E RM.'_>; 5 CZ· E8E 'W 5 ;$+W
]3L7G:G0; 5
5 e%:8+WË7UJ°I1iù{°I1J· m E >sM.>7 l =^p
Y%Rb E :U<e 5
5E 1+78 Ç >7 E 5
¦ 5 7GWi: 5
¯$;$' 5
Wi:8+78'MÌR$:8.M'._N; 5
¯$;$' 5
+7U; 5
5 W<.p
· m 4 lGl 3Y%Rb 5 ;$
5E +gNR$:U7JWi E RWiÍ:U78¦§VÌY%R
7 5 7UWib°% E W<.eBCk°% E W<.e
¯®
°Ìü±³²¯$ü±:#;$
M''1%7 5
c`>.M'M'FY%Ra;$ E 78+16(sY%R'e
s>+7NVRM.K+; 5 t+MKb¤
7G E >e:Ub:UW0L]>WîRWi)LNY%R+e)'e%:G7 5 ;RS+T 5
5
R E5
E +7^¦§'M.W<>e:8
E :8< 5 7G78: 5b5 RäeT 5 C f[5 7G]>W}V
g$NR$:UI1+MP°%I1IVR$:G'M.'_>e; 5)5
e 5
5 :GK; 5
E +7UÍR$:8.M'.p
5 R$:G7U E M'I17U E Ve 5E8E5
+7U; 5
5E g$NR$:U7J E8E i+¯;. 5 Vy78>+ E W
e%RW7UYR.1 5
E +7
; 5
D 7 5 äû 7 5 ~`.eÍ0° 5 e
I
ö»'7:8RM$°%I1CZ¤ò·^ +e;$K 4
°% E W<.eBC
i
i
i
i