L'analyse lexicale est la partie la plus facile à vérifier. Nous devons isoler les différents jetons, les symboles terminaux du code.
Nous utiliserons Lex[3] pour écrire notre spécification lexicale.
Comme nous allons spécifier notre langage, nous devons d'abord définir ce qu'est un langage. Nous pouvons utiliser un certain nombre de convensions qui nous seront utiles par la suite[4] :
Comme nous avons défini le langage comme un ensemble, nous pouvons appliquer certaines propriétés algébriques sous la forme du monoïde[10] suivant :
| Nom | Propriété | Information |
|---|---|---|
| neutralité | X.ε = X = ε.X | ε (une phrase vide) est neutre pour la concaténation. |
| associativité | X.(Y.Z); = (X.Y).Z | L'ordre d'association est sans importance. |
| Nom | Propriété | Information |
|---|---|---|
| union | L1∪L2 = {p|p∈L1 ∨ p∈L2} | L'union prend en compte des ensembles de chaînes. |
| concaténation | L1.L2 = {x.y|x∈L1 ∧ x∈L2} | La concaténation prend en compte des chaînes. |
| complément | C(L) = {x|x est une phrase sur Σ ∧ x∉L} | |
| exponentielle ou puissance | Ln = L.L.L. ... .L | L'exponentielle est en fait une succession de concaténations[9]. |
| exponentielle ou puissance | L0 = {$epsilon;} | L'exposant 0 correspond au neutre, dans notre cas une phrase vide. |
| étoile de Kleene[11] | L* = ∪Ln|n≥0 | De 0 à n fois. Par exemple {"a"}* = {ε,"a","aa","aaa",...} |
| “instance unique”[12] | a = {"a"} | Forme courte. Nous utilisons a, qui devrait normalement s'écrire {"a"} |
| langage vide | ∅ = { } | Attention à ne pas confondre le langage vide (∅) avec un mot vide (ε) |
| mot vide | ε = {ε} | Neutre |
Les quelques propriétés suivantes ne sont pas exhaustives; quel que soit le nombre de règles que nous pouvons définir, nous en manquerons toujours...
| Nom | Propriété | Information |
|---|---|---|
| commutativité | L1 ∪ L2 = L2 ∪ L1 | |
| associativité | L1 ∪ (L2 ∪ L3) = (L1 ∪ L2) ∪ L3 | |
| associativité | L1 . (L2 . L3) = (L1 . L2) . L3 | |
| idempotence | L ∪ L = L | |
| distributivité | L . (L1 ∪ L2) = L . L1 ∪ L . L2 | |
| distributivité | (L1 ∪ L2) . L = L1 . L ∪ L2 . L | |
| neutralité | L ∪ ∅ = L | |
| neutralité | L . ε = L = ε . L | |
| langage vide absorbant | ∅ . L = ∅ = L . ∅ | |
| expansion du vide | ∅* = ε | car expr* ⊃ expr0 ∧ expr0 = ε |
| expansion de l'étoile | L* = ε ∪ L . L* | ε ∪ L car l'étoile de Kleene correspond à zéro, une ou plusieurs fois. |
| redondance de l'étoile | (L*)* = L* |
Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.
51 mots clés dont 42 définis manuellement (plus d'information...).
Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.
Syntaxe et sémantique(Janvier 2010)
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.
Recherche (afficher)
Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
Citation (masquer)