index Zurück zur Hilfe-Übersichthome Zurück zur Homepage

CQL-Dateiformat

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