Progetto:BridgeShape API: differenze tra le versioni
| [versione verificata] | [versione verificata] |
BridgeShape: documentazione DSL v2 |
Link a Editor e Laboratorio |
||
| (3 versioni intermedie di uno stesso utente non sono mostrate) | |||
| Riga 1: | Riga 1: | ||
Documentazione BridgeShape: [[Progetto:BridgeShape Motore e frontend|Motore e frontend]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]] | Documentazione BridgeShape: [[Progetto:BridgeShape Motore e frontend|Motore e frontend]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]] · [[Progetto:BridgeShape Smazzate di gioco|Smazzate di gioco]] · [[Progetto:BridgeShape Editor e Laboratorio|Editor e Laboratorio]] | ||
= BridgeShape — API per Generatori di Smazzate = | = BridgeShape — API per Generatori di Smazzate = | ||
| Riga 220: | Riga 220: | ||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
shape:balanced — distribuzione bilanciata (4333, 4432, 5332) | shape:balanced — distribuzione bilanciata (4333, 4432, 5332) | ||
shape:semi_balanced — semibilanciata (5422, 6322) | |||
shape:one_suiter — monocolore | shape:one_suiter — monocolore | ||
shape:two_suiter — bicolore | shape:two_suiter — bicolore | ||
| Riga 358: | Riga 359: | ||
== 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''': | Tutto ciò che sopra resta valido e '''invariato''': i campi v1 hanno lo stesso significato di prima. | ||
La v2 aggiunge sintassi nuova; '''ogni scenario ha nel JSON il campo <code><nowiki>requires</nowiki></code>''' (elenco di tag, | |||
vuoto se usa solo la v1; vedi sotto) così un motore parziale può rifiutare uno scenario con un | |||
parziale può | 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 387: | ||
</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 475: | ||
<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''' | 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>. | |||
---- | ---- | ||