Progetto:BridgeShape API: differenze tra le versioni

[versione verificata][versione verificata]
BridgeShape: documentazione DSL v2
BridgeShape: allineamento docs DSL v2
Riga 358: Riga 358:
== DSL versione 2 (<code><nowiki>dslVersion: 2</nowiki></code>) ==
== DSL versione 2 (<code><nowiki>dslVersion: 2</nowiki></code>) ==


Tutto ciò che sopra resta valido e '''invariato''': una pagina che usa solo la v1
Tutto ciò che sopra resta valido e '''invariato''': i campi v1 hanno lo stesso significato di prima.
produce lo stesso JSON di prima. La v2 aggiunge sintassi nuova; ogni scenario che
La v2 aggiunge sintassi nuova; '''ogni scenario ha nel JSON il campo <code><nowiki>requires</nowiki></code>''' (elenco di tag,
la usa ha nel JSON il campo <code><nowiki>requires</nowiki></code> (elenco di tag, vedi sotto) così un motore
vuoto se usa solo la v1; vedi sotto) così un motore parziale può rifiutare uno scenario con un
parziale può rifiutarlo con un errore esplicito invece di generare mani sbagliate.
errore esplicito invece di generare mani sbagliate. <code><nowiki>descriptions[].context</nowiki></code> è sempre presente
(array, eventualmente vuoto).
Le definizioni normative (cosa è una fermata, i punti totali, le perdenti...) e
Le definizioni normative (cosa è una fermata, i punti totali, le perdenti...) e
l'architettura del motore sono in '''<code><nowiki>DEAL_ENGINE_SPEC.md</nowiki></code>'''.
l'architettura del motore sono in '''<code><nowiki>DEAL_ENGINE_SPEC.md</nowiki></code>'''.
Riga 385: Riga 386:
</syntaxhighlight>
</syntaxhighlight>
<code><nowiki>$a=M</nowiki></code> nobili, <code><nowiki>$a=m</nowiki></code> minori, <code><nowiki>$a=any</nowiki></code> (default) qualunque, <code><nowiki>$a=SH</nowiki></code> insieme esplicito.
<code><nowiki>$a=M</nowiki></code> nobili, <code><nowiki>$a=m</nowiki></code> minori, <code><nowiki>$a=any</nowiki></code> (default) qualunque, <code><nowiki>$a=SH</nowiki></code> insieme esplicito.
Si usano al posto di <code><nowiki>S H D C</nowiki></code> in: <code><nowiki>$a:5+</nowiki></code> (lunghezza), <code><nowiki>$ahcp:</nowiki></code>, <code><nowiki>$a=KQ</nowiki></code>, <code><nowiki>$a~...</nowiki></code>,
Una variabile non dichiarata vale <code><nowiki>any</nowiki></code> (tutti i semi). Si usano al posto di <code><nowiki>S H D C</nowiki></code> in: <code><nowiki>$a:5+</nowiki></code> (lunghezza), <code><nowiki>$ahcp:</nowiki></code>, <code><nowiki>$a=KQ</nowiki></code>, <code><nowiki>$a~...</nowiki></code>,
<code><nowiki>stop:$a</nowiki></code>, <code><nowiki>has:$aQ</nowiki></code>, <code><nowiki>kc:$a3</nowiki></code>, confronti (<code><nowiki>$a>$b</nowiki></code>), <code><nowiki>longest:$a</nowiki></code>.
<code><nowiki>stop:$a</nowiki></code>, <code><nowiki>has:$aQ</nowiki></code>, <code><nowiki>kc:$a3</nowiki></code>, confronti (<code><nowiki>$a>$b</nowiki></code>), <code><nowiki>longest:$a</nowiki></code>.
Differisce da <code><nowiki>x:</nowiki></code> (che vale per una sola posizione).
Differisce da <code><nowiki>x:</nowiki></code> (che vale per una sola posizione).
Riga 473: Riga 474:


<code><nowiki>get</nowiki></code> e <code><nowiki>validate</nowiki></code> restituiscono <code><nowiki>warnings</nowiki></code> quando un frammento del DSL non è stato
<code><nowiki>get</nowiki></code> e <code><nowiki>validate</nowiki></code> restituiscono <code><nowiki>warnings</nowiki></code> quando un frammento del DSL non è stato
capito e quindi '''scartato''' (nome di posizione sbagliato, token fuori posto). Un
capito e quindi '''scartato''': nome di posizione sbagliato, token sconosciuto o con valore
motore non deve generare se ci sono <code><nowiki>warnings</nowiki></code> o <code><nowiki>errors</nowiki></code>.
non valido (<code><nowiki>aces:5</nowiki></code>, <code><nowiki>S=Kx</nowiki></code>, <code><nowiki>shape:4-5-x-x</nowiki></code>), token di scenario dopo le posizioni, posizione
definita due volte, <code><nowiki>quiet</nowiki></code> su opener/responder, gruppo <code><nowiki>any()</nowiki></code>/<code><nowiki>not()</nowiki></code> con alternative non
valide (in tal caso '''l'intero gruppo è ignorato''', mai applicato a metà). <code><nowiki>validate.valid</nowiki></code> è 1
solo se non ci sono né <code><nowiki>errors</nowiki></code> né <code><nowiki>warnings</nowiki></code>. Un motore non deve generare se ci sono
<code><nowiki>warnings</nowiki></code> o <code><nowiki>errors</nowiki></code>.
 
Limiti (oltre i quali il parser avvisa e tronca): 60.000 caratteri di input, 200 scenari, 6
prefissi <code><nowiki>@</nowiki></code>, 64 valori per macro, 64 scenari per espansione, 8 gruppi <code><nowiki>any/not</nowiki></code> e 16 alternative
per posizione. Le etichette non possono contenere <code><nowiki>:</nowiki></code>.


----
----