11 décembre 2008
  1. Observations sur l'interrogation écrite du 11/12/08
  2. Continuation vers une expérimentation sur machine

Jean-François Perrot


Observations sur l'interrogation écrite du 11/12/08

Sur l'intention qui a présidé à la confection de l'expression donnée E = (7|9)+|0(7+|x(7|9|h)+), voir plus loin.


Continuation vers une expérimentation sur machine

L'expression (7|9)+|0(7+|x(7|9|h)+) a pour intention de décrire les formats de nombres entiers
couramment en usage dans les langages de programmation, correspondant aux notations
Dans cette perspective :
Ainsi la réunion (7|9) représente tous les chiffres décimaux sauf 0, et (7|9|h) tous les chiffres hexadécimaux sauf 0.

On voit ainsi que notre expression décrit correctement des nombres comme 779 (décimal), 0xA779 (hexa), ou 077 (octal)
et interdit 0779 (qui devrait être octal, mais alors 9 est impossible), ou 779A (qui devrait être décimal, mais alors A est impossible), etc.
Mais elle interdit aussi 7790, 0770, 0xA7790, et d'une manière générale tous les nombres présentant une occurrence de 0 après l'initiale.

Il faut donc la raffiner :
et au total (7|9)(0|7|9)*|0((0|7)+|x(0|7|9|h)+)

Pour expérimenter avec automate d'une manière plus significative, on recourt à la syntaxe étendue à la LEX :
Notre expression prend alors son véritable visage : [1-9][0-9]*|0([0-7]+|x[0-9A-F]+)

L'automate minimal est (presque) identique au précédent :