From: Lucien Gentis expr.
- Cependant, certaines directives comme cond.
+ Les directives comme
+ string.
-expr ::= "true" | "false"
- | "!" expr
- | expr "&&" expr
- | expr "||" expr
- | "(" expr ")"
+expr ::= cond
+ | string
+
+string ::= substring
+ | string substring
+
+cond ::= "true"
+ | "false"
+ | "!" cond
+ | cond "&&" cond
+ | cond "||" cond
| comp
+ | "(" cond ")"
comp ::= stringcomp
| integercomp
| unaryop word
| word binaryop word
- | word "in" "{" wordlist "}"
- | word "in" listfunction
+ | word "in" listfunc
| word "=~" regex
| word "!~" regex
+ | word "in" "{" list "}"
stringcomp ::= word "==" word
@@ -125,35 +138,65 @@ integercomp ::= word "-eq" word | word "eq" wo
| word "-gt" word | word "gt" word
| word "-ge" word | word "ge" word
-wordlist ::= word
- | wordlist "," word
-
-word ::= word "." word
- | digit
+word ::= digits
| "'" string "'"
- | """ string """
+ | '"' string '"'
+ | word "." word
| variable
- | rebackref
+ | sub
+ | join
| function
+ | "(" word ")"
-string ::= stringpart
- | string stringpart
+list ::= split
+ | listfunc
+ | "{" words "}"
+ | "(" list ")"
-stringpart ::= cstring
+substring ::= cstring
| variable
- | rebackref
-cstring ::= ...
-digit ::= [0-9]+
variable ::= "%{" varname "}"
| "%{" funcname ":" funcargs "}"
+ | "%{:" word ":}"
+ | "%{:" cond ":}"
+ | rebackref
+
+sub ::= "sub" ["("] regsub "," word [")"]
+
+join ::= "join" ["("] list [")"]
+ | "join" ["("] list "," word [")"]
+
+split ::= "split" ["("] regany "," list [")"]
+ | "split" ["("] regany "," word [")"]
+
+function ::= funcname "(" words ")"
+
+listfunc ::= listfuncname "(" words ")"
+
+words ::= word
+ | word "," list
-rebackref ::= "$" [0-9]
+regex ::= "/" regpattern "/" [regflags]
+ | "m" regsep regpattern regsep [regflags]
-function ::= funcname "(" wordlist ")"
+regsub ::= "s" regsep regpattern regsep string regsep [regflags]
-listfunction ::= listfuncname "(" word ")"
+regany ::= regex | regsub
+
+regsep ::= "/" | "#" | "$" | "%" | "^" | "|" | "?" | "!" | "'" | '"' | "," | ";" | ":" | "." | "_" | "-"
+
+regflags ::= 1*("i" | "s" | "m" | "g")
+regpattern ::= cstring ; except enclosing regsep
+
+rebackref ::= "$" DIGIT
+
+digits ::= 1*(DIGIT)
+cstring ::= 0*(TEXT)
+
+TEXT ::= <any OCTET except CTLs>
+DIGIT ::= <any US-ASCII digit "0".."9">
@@ -348,6 +391,22 @@ listfunction ::= listfuncname "(" word ")"
Certains modules, comme
Toute variable peut être insérée dans une chaîne, et ceci non + seulement dans les chaînes entre quotes des expressions booléennes, mais + aussi dans les expressions littérales issues de la concaténation de chaînes + constantes et dynamiques.
+ +On peut utiliser ici les variables (temporaires) du style
+ %{:word:} qui permettent d'insérer dans les deux types
+ d'expressions des variables (et des constructions) avec la syntaxe puissante
+ word sans entrer en conflit avec les parties constantes de telles
+ chaînes. Même si la syntaxe word est directement utilisable au sein
+ des expressions booléennes, ces variables sont cependant surtout utiles dans
+ les expressions littérales. Ces variables permettent d'évaluer des
+ expressions rationnelles, des substitutions, de concaténer ou dissocier des
+ chaînes et des listes au sein des expressions littérales, et donc de
+ construire des chaînes complexes dynamiquement.
En plus des fonctions dont la valeur est une chaîne, il existe
aussi des fonctions dont la valeur est une liste, qui acceptent une
- chaîne comme argument, et renvoient une liste de mots, autrement dit
- une liste de chaînes. La liste de mot peut être utilisée avec
+ chaîne comme argument, et renvoient une liste , par exemple
+ une liste de chaînes. La liste peut être utilisée avec
l'opérateur spécial -in. Les noms de fonctions sont
insensibles à la casse. Les modules peuvent fournir des fonctions
supplémentaires.
-inin/regexp/m#regexp#Le nom d'hôte doit commencer par une lettre [a-z]. Par exemple :
+n'est pas valide et provoquera une erreur si une requête correspond + au chemin.
+Les workers définis explicitement sont de deux sortes : workers directs et workers de répartition (de charge). Ils supportent de nombreux attributs de