È capace di espandere una data URL in un insieme combinatorio di URL che possono essere interpretate come indici oppure come file. La data URL è analizzata sintatticamente rispetto ad una certa grammatica, che identifica alcune sue porzioni come espressioni.
Dal momento che una espressione denota una sequenza di valori, la data URL è espansa in un insieme di URL considerando ogni valore per ciascuna espressione.
Il disegno sottostante descrive il processo di espansione quando la URL contiene nell'ordine le espressioni [“a”,”b”] and [“c”,”d”]
Un'espressione è una porzione della data URL, delimitata da una coppia di parentesi quadre. Essa rappresenta una sequenza di valori, che sono usati per espandere la data URL in un insieme di stringhe.
Sintassi
Una semplice espressione è una lista di elementi separati da virgole. Essa rappresenta la sequenza di valori ottenuta unendo le sequenze corrispondenti a ciascun elemento.
[elemento1, elemento2, ..., elementoN]
Gli elementi possono essere:
Un intervallo è un elemento multi-valore che rappresenta una sequenza di interi.
Sintassi
left [ - right ][ { step [ , width [ , padding ] ] } ]
1 rappresenta 1
1{1,5} rappresenta 00001
999{1,2} rappresenta 999
1-10 rappresenta 1, 2, 3, ..., 10
1-10{2} rappresenta 1, 3, 5, ... 9
1-10{2,2} rappresenta 01, 03, 05, ... 09
1-10{2,2,"*"} rappresenta *1, *3, *5, ... *9
Una stringa è una stringa di zero o più caratteri circondata da una coppia di apici doppi (”). È un elemento a singolo valore, che denota la medesima sequenza di caratteri.
Sintassi
"caratteri"
"stringa" rappresenta stringa
La data URL può essere interpretata come una sequenza di espressioni alternate a testo semplice (vale a dire la sequenza di caratteri tra due espressioni consecutive).
Per esempio nella URL seguente le due espressioni sono in grassetto:
http://www.fioreltech.net/[1-10]/hello/[1-10]
Le espressioni sono indicizzate da sinistra verso destra a partire da zero. Un riferimento ad una espressione è un token della forma \n, dove n è l'indice della espressione cui si riferisce.
Un riferimento non può puntatare nè direttamente nè indirettamente alla espressione che lo contiene.
Sintassi
[\n]
L'espressione assume lo stesso valore dell'n-esima espressione.
[\n : sequenza]
L'espressione assume l'i-esimo valore della sequenza quando l'n-esima espressione viene espansa alla i-esimo valore.
sequenza è una lista di elementi separati da virgole, che denota una sequenza di tanti valori quanti sono quelli rappresentati dalla n-esima espressione.
In entrambi i casi l'espansione è condizionata alla espansione della espressione cui si fa riferimento, cosicchè la prima espressione ha soltanto un valore per ogni espansione della seconda.
http://www.fioreltech.net/[1-12{1,2}]/[\0 : "january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november","december"]/index.html
si espande in
http://www.fioreltech.net/01/january/index.html http://www.fioreltech.net/02/february/index.html http://www.fioreltech.net/03/march/index.html http://www.fioreltech.net/04/april/index.html http://www.fioreltech.net/05/may/index.html http://www.fioreltech.net/06/june/index.html http://www.fioreltech.net/07/july/index.html http://www.fioreltech.net/08/august/index.html http://www.fioreltech.net/09/september/index.html http://www.fioreltech.net/10/october/index.html http://www.fioreltech.net/11/november/index.html http://www.fioreltech.net/12/december/index.html