Compilation 2
Compilation 2
Compilation 2
code source
position = initial + rate * 60
table de symboles
((a|b)a)*
spécifie le langage de mots de longueur paire terminés par un ‘a’
(0|1)*0
Tête de lecture
w h ...
2
1
3 4 IF
i f
AF
[0-9]
[0-9] .
2 [0-9]
1 NUM 3
. REAL
“” “” 4 [0-9]
5 SPACE
currentState = D.initialState;
currentInputPosition = 0;
currentChar = input.nextChar();
currentInputPosition++;
while ((currentChar!=EOF) && (currentState !=0 ) )
{
currentState = D.trans[currentState][currentChar];
currentChar = input.nextChar();
currentInputPosition++;
}
if in(currentState, D.F) && (currentChar == EOF))
return TRUE;
else return FALSE;
[0-9]
Entrée : 9 7 . 5 EOF .
[0-9]
2 [0-9]
current 1 NUM 3
Input current
. REAL
Position State “” “” 4
[0-9]
5
0 1 SPACE
1 2
2 2 ‘‘ [0-9] ‘.’
3 3 1 5 2 4
4 3 2 0 2 3
3 0 3 0
Retourne TRUE (accepte l’entrée)
parce qu’il termine dans un état 4 0 3 0
accepteur et toute l’entrée est lue. 5 5 0 0
i
tel que i est un nouvel état initial et accepteur.
a
i f
r ε s
ε
C-à-d.: L’état initial de N(rs) est l’état initial de N(r) et les états finaux
de N(rs) sont les états finaux de N(s). Ensuite, il faut ajouter des
transitions ε partant des états finaux de N(r) vers l’état initial de N(s).
r
ε
i
s
ε
C-à-d.: on crée un nouvel état i, avec des transitions ε aux états initiaux
de N(r) et N(s). Les états finaux de N(rs) sont ceux de N(r) et N(s).
r ε
ε ε
i
ε