Alle .cqls
Dateien haben in der ersten Zeile eine Erkennung mit einer
Versionsnummer. Dahinter folgt eine in Klammern gesetzte komma-separierte Liste,
in der alle Schachformen aufgeführt werden, für die dieses Skript vorgesehen ist.
Es folgt eine zweite in Klammern gesetzte komma-separierte Liste, in der alle
Schachformen aufgeführt werden, die die Anwendung unterstützen muß, um dieses
Skript ausführen zu können. Die erste Zeile ist zwingend.
Die erste Zeile einer .cqls
-Datei sieht beispielsweise folgendermaßen aus:
; CQL-S 1.0 (normal,three-check) (normal)
Die ersten 11 Zeichen können von anderen Progammen zur Dateityperkennung genutzt werden.
Dieses sind die unterstützten Schachformen:
normal |
Normalschach |
three-check |
Dreimal-Schach |
king-of-the-hill |
König-auf-dem-Hügel |
dropchess |
Einsetzschach |
crazyhouse |
Crazyhouse |
chessgi |
Chessgi |
antichess |
Schlagschach |
suicide |
Suicide |
giveaway |
Giveaway |
losers |
Losers |
Nach einer Leerzeile schreibt Scidb den Ersteller (das Programm), den Autor, und das Datum:
; Creator: Scidb 1.0
; Author: NobodyKnowsMe
; Date: 2014/11/18
In den nächsten Zeilen, nach einer Leerzeile, folgt eine optionale Beschreibung des Skripts. Diese wird multilingual gehalten und sieht dann etwa so aus:
; Description (en): Smothered Mate
; This ingenious script ...
;
; Description (de): Ersticktes Matt
; Dieses grandiose Skript ...
Mit dem gleichen Format werden von Scidb auch die Standard-CQL-Skripte mit der Dateiendung
.cql
geschrieben, nur das hier die Erkennung in der ersten Zeile
abweicht – die Schachvarianten werden in Standard-CQL nicht unterstützt – z.B.:
; CQL 1.0
Hier können die ersten 9 Zeichen zur Dateityperkennung genutzt werden. Jedoch schreibt bisher nur Scidb diese Erkennung.
Alle CQL- bzw. CQL-S-Skripte sind im UTF-8-Format kodiert.
Dies ist nun die Backus-Naur-Beschreibung einer CQL-Datei:
<CQL-Header> ::= <Identification> <LF> <Creator> <Author>
<Date> <LF> <Descriptions> <Body>
<Identification> ::= <Id-CQL-S> | <Id-CQL>
<Id-CQL> ::= ";␣CQL␣" <Version>
<Id-CQL-S> ::= ";␣CQL-S␣" <Version> "␣" <Variants> "␣" <Variants>
<Version> ::= <Digit> "." <Digit>
<Variants> ::= "(" <Variant> ( "," <Variant> )* ")"
<Creator> ::= "Creator:" <Spaces> <UTF-8-String> <LF>
<Author> ::= "Author:" <Spaces> <UTF-8-String> <LF>
<Date> ::= "Date:" <Spaces> <YYYY/MM/DD> <LF>
<Descriptions> ::= ( <Description> <LF>* )*
<Description> ::= "Description␣(" <ISO-639-1> "):" <Spaces>
<Title> <LF> ( <CommentLine> )*
<Title> ::= <UTF-8-String>
<CommentLine> ::= ";" ( <Spaces> <UTF-8-String> )? ( <LF> )+
<Spaces> ::= ( <SpaceOrTab> )*
Der Zeilenumbruch <LF>
hängt vom Betriebssystem ab, auf dem
die erzeugende Anwendung läuft (moderne Editoren sollten mit allen
Zeilenumbrüchen zurechtkommen). Statt ISO-639-1 für den Sprachcode
kann auch ISO-639-2 verwendet werden, jedoch nur wenn es nicht anders
möglich ist.
Hier nun ein Beispiel für ein vollständiges Skript:
; CQL-S 1.0 (normal,three-check,king-of-the-hill,crazyhouse,bughouse,losers) (normal)
; Creator: Scidb 1.0
; Author: Gregor Cramer
; Date: 2014/06/24
; Description (en): Smothered Mate
; A smothered mate is a checkmate delivered by a knight
; in which the mated king is unable to move because he is
; surrounded (or smothered) by his own pieces.
; Description (de): Ersticktes Matt
; Ein ersticktes Matt liegt vor, wenn ein Springer Matt
; setzt und der König nicht entweichen kann, weil er
; von eigenen Figuren umgeben (erstickt) ist.
(match
(position
flipcolor ; either color
attackcount k [A.] 0 ; king is smothered by own pieces
btm ; black to move
mate)) ; and is mate