" " ou [ ], \t, et \n.
$ \ ^ ( ) [ ]
{ } < > + - * / |
? . " %
\ en toute position,
^ seulement s'il est en début,
- seulement s'il n'est ni au début ni à la fin,
{} peut délimiter une définition (si '{' est en début de ligne) ou un nombre d'occurrence.
$ ni ^ ni /
| Expression | signification (E est une expression, c est un caractère) |
|---|---|
| E | l'expression E avec interprétation des méta-caractères de Lex |
"E" | la chaine E littéralement, avec les méta-caractères de la convention ANSI-C |
| (E) | E elle-même (voir les règles de priorités(1)) |
| {E} | l'identificateur E tel que défini dans la deuxième partie |
| <X>E | (en début de ligne) rechercher l'expression E uniquement dans la configuration X, définie dans la deuxième partie
N.B. il peut y avoir plusieurs configurations, apr exemple pour deux <X1,X2>. |
[c1-c2] |
n'importe quel caractère entre c1 et c2 (ordre du code ASCII) |
[c1-c2c3-c4] |
entre c1 et c2 ou entre c3 et c4 (ordre du code ASCII) |
| [E] | n'importe quel caractère (un caractère) de E (attention : règle particulière pour -) |
| [^E] | n'importe quel caractère qui n'est pas dans E |
^E | E en début de ligne (^ doit être le premier caractère de la règle) |
E$ | E en fin de ligne ($ doit être le dernier caractère de la règle) |
. | n'importe quel caractère sauf \n |
\c |
interprétation selon la convention ANSI-C si c est un caractère ASCII autorisé (à éviter sinon)
\n : retour à la ligne Unix (càd \x5C)
\t : tabulation horizontale (càd \x09)
\\ : caractère '\'
\" : caractère guillemet
... |
\042 | le caractère de code octal 42 (guillemet, pour cette valeur) |
\x22 | le caractère de code hexadécimal 22 (guillemet, pour cette valeur) |
E? | 0 ou 1 occurrence de E(1) |
E* | 0, une ou plusieurs occurrences de E(1) |
E+ | une ou plusieurs occurrences de E(1) |
E{n} | exactement n occurrences de E |
E{n,p} | entre n et p occurrences de E |
E{n,} | au moins n occurrences de E |
E1|E2 | si possible E1, sinon E2 |
E1/E2 |
l'expression E1 seulement si elle est suivie(2) de E1 |
truc|machin* | est interprété comme (truc)|(machi(n*)) |
abc{1,3} |
est interprété par Lex comme (abc){1,3} et par Flex comme ab(c{1,3}) |
^truc|machin |
est interprété par Lex comme (^truc)|machin et pas ^(truc|machin) |
truc{def}* |
est interprété comme (truc{def})* par Lex et comme truc({def})* par Flex |
REJECT et de %option yylineno)
ralentit notablement la vitesse d'exécution du programme et doit être réservé à un usage expert de Lex.