" "
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
... |
\0 42 | le caractère de code octal 42 (guillemet, pour cette valeur) |
\x 22 | 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.