This makes it a good time for publishing the syntax:
Code: Select all
Syntax of move ChessLive! move file:
Game ::= WhitePlayer ";" BlackPlayer ";" MoveList
MoveList ::= MoveSpec ";" MoveList
::= MoveSpec
::= ResultSpec
ResultSpec ::= Result ";" Text
Result ::= "+"
::= "="
::= "-"
MoveSpec ::= Move
::= Move "/" Depth "/" Score "/" Time
::= Move "/" Depth "/" Score "/" Time "/" SANtag
Move ::= MoveStep
::= MoveStep ":" Move
MoveStep ::= FromSpec ":" Square
FromSpec ::= Square
::= PieceID
Square ::= <lower-case letter> <number>
PieceID ::= <lower-case letter>
Depth ::= <number>
Score ::= <signed number>
Time ::= <number>
SANtag ::= <text not containing ; or / >
WhitePlayer ::= Text
BlackPlayer ::= Text
Text ::= <text not containing ;>
SEMANTICS
Depth is the depth in ply. Score is the score in centi-Pawn.
Time is the time remaining on the clock of the side that moved after the move.
The Result is only present in a finished game; the Text after it can specify the
reason (e.g. "3-fold repetition"),and will be printed in braces {} at the end
of the move list. The "+" "=" "-" indicate win, draw, loss from white point of view.
A MoveStep signifies either a move or a drop. If the first part is a PieceID it
puts a piece of that type on the square mentioned as second part ('drop').
If the first part indicates a square, that square is cleared after its contents
is copied to the square mentioned in the second part (this applies even to empty
squares!) There are no other effects than this; MoveSteps never have side effects,
and desired side effects in castling, e.p. capture and promotion will have to be
expicitly specified as additional MoveSteps.
The SANtag is a text to be prefixed to the to-square of the first MoveStep of
the move, before printing it in the move list. SANtags "O-O" and "O-O-O" are
recognized as special cases, and not combined with the to-square. E.g. if the
Move is "f3:e5", the SANtag could be "Nx"to cause prinitng of "Nxe5".
IDIOM
King-side castling: "e1:g1:h1:f1"
Promotion to Queen: "g7:g8:q:g8"
e.p.capture bxc5: "b5:c6:b5:c5"
Note that Chess960 castlings can be tricky, but can be done by dropping a
Rook in the second leg in cases where the King MoveStep obliterated the Rook.