FEN tag¶
The Forsyth-Edwards Notation or shortly FEN tag defines a position on the board. In the PDN 2.0 draft standard the following syntax is proposed:
[TURN]:[COLOUR1][[K][SQUARE_NUM][,]...]:[COLOUR2][[K][SQUARE_NUM][,]...]
We extend this syntax with ranges of numeric fields, such that the start
position of international draughts can be defined as [FEN "W:W31-50:B1-20"]
.
Another extension is that we allow ?
to denote an unknown color.
The following grammar describes the formal syntax of the value of a FEN tag.
// Productions
Fen : COLOR (NumericSquares | AlphaNumericSquares) DOT?
NumericSquares : (COLON COLOR NumericSquareSequence)+
NumericSquareSequence : NumericSquareRange (COMMA NumericSquareRange)*
NumericSquareRange : KING? NUMSQUARE (HYPHEN NUMSQUARE)?
AlphaNumericSquares : (COLON COLOR AlphaNumericSquareSequence)+
AlphaNumericSquareSequence : KING? ALPHASQUARE (COMMA KING? ALPHASQUARE)*
// Tokens
COLOR : "[WB?]"
KING : "K"
ALPHASQUARE : "[a-h][1-8]"
NUMSQUARE : "([1-9][0-9]*)|(0[1-9][0-9]*)|0"
HYPHEN : "\-"
COMMA : "\,"
COLON : "\:"
DOT : "\."
Important
Some corrections have been made.
- The
COMMA
inNumericSquareSequence
andAlphaNumericSquareSequence
is mandatory. - A missing
KING?
inAlphaNumericSquareSequence
has been added. NUMSQUARE
may contain more than two digits (it is up to the implementer to do range checks).
Restrictions¶
The following restrictions apply when writing a FEN tag:
- No embedded spaces are allowed inside the value of a FEN tag
- No dot (‘.’) is allowed at the end of the value of a FEN tag
Examples¶
[FEN "B:W18,24,27,28,K10,K15:B12,16,20,K22,K25,K29"]
[FEN "B:W18,19,21,23,24,26,29,30,31,32:B1,2,3,4,6,7,9,10,11,12"]
[FEN "W:W31-50:B1-20"]
Extensions¶
The above grammar does not allow positions with no pieces for one of the players. It should therefore be extended to accept empty ranges of pieces.