From: Lucien Gentis expr
.
- Cependant, certaines directives comme cond
.
+ Les directives comme
+ string
.
@@ -348,6 +391,22 @@ listfunction ::= listfuncname "(" word ")"-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">
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.
-in
in
/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