Académique Documents
Professionnel Documents
Culture Documents
Cours compilation
Chapitre 2 : Analyse lexicale
1
Licence 3 Cours compilation Chapitre 2
Demande d’une
Code source Code source unité lexicale Code source
Unité lexicale
Code source
2
Licence 3 Cours compilation Chapitre 2
3
Licence 3 Cours compilation Chapitre 2
Algorithme
𝒕𝒄 ∶ 𝒕𝒆𝒓𝒎𝒆 𝒄𝒐𝒖𝒓𝒂𝒏𝒕
𝒕𝒔 ∶ 𝒕𝒆𝒓𝒎𝒆 𝒔𝒖𝒊𝒗𝒂𝒏𝒕
𝒅𝒆𝒃𝒖𝒕
𝒕𝒄 ← 𝟏𝒆𝒓 𝒄𝒂𝒓𝒂𝒄𝒕è𝒓𝒆
𝒔𝒊 (𝒕𝒄 =′ 𝒂′ ) 𝒂𝒍𝒐𝒓𝒔
𝒕𝒄 ← 𝒕𝒔;
𝒔𝒊 (𝒕𝒄 =′ 𝒂′ )𝒂𝒍𝒐𝒓𝒔
𝒕𝒄 ← 𝒕𝒔
𝒔𝒊 (𝒕𝒄 =′ 𝒃′ ) 𝒂𝒍𝒐𝒓𝒔
𝒕𝒄 ← 𝒕𝒔
𝒔𝒊 (𝒕𝒄 =′ #′ ) 𝒂𝒍𝒐𝒓𝒔
𝑪𝒉𝒂𝒊𝒏𝒆 𝒂𝒄𝒄𝒆𝒑𝒕é𝒆
𝒔𝒊𝒏𝒐𝒏 𝒆𝒓𝒓𝒆𝒖𝒓
𝒔𝒊𝒏𝒐𝒏 𝒆𝒓𝒓𝒆𝒖𝒓
𝒔𝒊𝒏𝒐𝒏 𝒔𝒊 𝒕𝒄 =′ 𝒃′ 𝒂𝒍𝒐𝒓𝒔
𝒕𝒄 ← 𝒕𝒔
𝒔𝒊 (𝒕𝒄 =′ #′ ) 𝒂𝒍𝒐𝒓𝒔
𝑪𝒉𝒂𝒊𝒏𝒆 𝒂𝒄𝒄𝒆𝒑𝒕é𝒆
𝒔𝒊𝒏𝒐𝒏 𝒆𝒓𝒓𝒆𝒖𝒓
𝒔𝒊𝒏𝒐𝒏 𝒆𝒓𝒓𝒆𝒖𝒓
𝒔𝒊𝒏𝒐𝒏 𝒆𝒓𝒓𝒆𝒖𝒓
Exemple 2
Écrire un analyseur lexical à la main, qui reconnait les mots suivants :
{𝒂, 𝒂𝒂, 𝒂𝒂𝒂, … , 𝒂𝒏 }𝒕𝒆𝒍 𝒒𝒖𝒆 𝒏 ≥ 𝟏 (𝒂+ )
Algorithme
𝒕𝒄 ∶ 𝒕𝒆𝒓𝒎𝒆 𝒄𝒐𝒖𝒓𝒂𝒏𝒕
𝒕𝒔 ∶ 𝒕𝒆𝒓𝒎𝒆 𝒔𝒖𝒊𝒗𝒂𝒏𝒕
𝒅𝒆𝒃𝒖𝒕
𝒕𝒄 ← 𝟏𝒆𝒓 𝒄𝒂𝒓𝒂𝒄𝒕è𝒓𝒆
𝒔𝒊 (𝒕𝒄 =′ 𝒂′ ) 𝒂𝒍𝒐𝒓𝒔
𝒕𝒄 ← 𝒕𝒔;
𝒕𝒂𝒏𝒕 𝒒𝒖𝒆 (𝒕𝒄 =′ 𝒂′ ) 𝒇𝒂𝒊𝒓𝒆
𝒕𝒄 ← 𝒕𝒔
𝑭𝒊𝒏 𝒕𝒂𝒏𝒕 𝒒𝒖𝒆
𝒔𝒊 (𝒕𝒄 =′ #′ ) 𝒂𝒍𝒐𝒓𝒔
𝑪𝒉𝒂𝒊𝒏𝒆 𝒂𝒄𝒄𝒆𝒑𝒕é𝒆
𝒔𝒊𝒏𝒐𝒏 𝒆𝒓𝒓𝒆𝒖𝒓
𝒔𝒊𝒏𝒐𝒏 𝒆𝒓𝒓𝒆𝒖𝒓
4
Licence 3 Cours compilation Chapitre 2
𝒂
𝑺𝟎 𝒂 𝒃 𝑺𝟐
𝑺𝟏
5
Licence 3 Cours compilation Chapitre 2
c. Algorithme d’analyse :
L’algorithme d’analyse est comme suit :
Algorithme
𝒕𝒄 ∶ 𝒕𝒆𝒓𝒎𝒆 𝒄𝒐𝒖𝒓𝒂𝒏𝒕; 𝒕𝒔 ∶ 𝒕𝒆𝒓𝒎𝒆 𝒔𝒖𝒊𝒗𝒂𝒏𝒕
𝑬𝒄 ∶ 𝑬𝒕𝒂𝒕 𝒄𝒐𝒖𝒓𝒂𝒏𝒕, 𝑴 ∶ 𝒎𝒂𝒕𝒓𝒊𝒄𝒆 𝒅𝒆 𝒕𝒓𝒂𝒏𝒔𝒊𝒕𝒊𝒐𝒏; 𝑽 ∶ 𝒗𝒆𝒄𝒕𝒆𝒖𝒓 𝒅𝒆𝒔 é𝒕𝒂𝒕𝒔 𝒇𝒊𝒏𝒂𝒖𝒙
𝒅𝒆𝒃𝒖𝒕
𝒕𝒄 ← 𝟏𝒆𝒓 𝒄𝒂𝒓𝒂𝒄𝒕è𝒓𝒆;
𝑬𝒄 ← 𝑳′ é𝒕𝒂𝒕 𝒊𝒏𝒊𝒕𝒊𝒂𝒍;