|
HooverChessUtils_PgnReader 0.9.0
|
The PGN parser. More...
#include <pgnparser.h>

Public Member Functions | |
| PgnParser (PgnScanner &scanner, T_ActionHandler &actionHandler) | |
| Constructor. | |
| PgnParser (const PgnParser &)=delete | |
| PgnParser (PgnParser &&)=delete | |
| PgnParser & | operator= (const PgnParser &) &=delete |
| PgnParser & | operator= (PgnParser &&) &=delete |
| void | parse () |
Private Attributes | |
| PgnScanner & | m_scanner |
| T_ActionHandler & | m_actionHandler |
| StringBuilder | m_strBuilder { } |
| StringBuilder | m_strBuilder2 { } |
| bool | m_inMoveTextSection { } |
| std::vector< std::string > | m_pendingComments { } |
The PGN parser.
| T_ActionHandler | Semantic action handler. See PgnParser_NullActions for description. |
| Rule | Parsing function | Remarks | ||
|---|---|---|---|---|
| PGN | ⇒ | GAME* COMMENT* <END_OF_FILE> | parse() | Any number of games with possibly trailing comments. |
| GAME | ⇒ | TAGPAIRS MOVETEXT | parse() | A PGN game consists of a list of tag pairs followed by move text section. |
| TAGPAIRS | ⇒ | (COMMENT* TAGPAIR)* | parse() | List of PGN key/value tags. |
| TAGPAIR | ⇒ | <TAG_START> <TAG_KEY> <TAG_VALUE> <TAG_END> | parseTagPair() | A single PGN key/value tag. |
| MOVETEXT | ⇒ | LINE <RESULT> | parse() | The move text section of a PGN game. |
| LINE | ⇒ | (COMMENT | <MOVENUM>)* (MOVE_ITEM (COMMENT | <MOVENUM> | MOVE_ITEM | VARIATION)* )? | parseLine() | A line consists of any number of moves, interleaved with optional comments, move numbers, and variations. A variation may not appear before the first move. Move numbers are completely optional in PGNs. When present, however, they are validated to be correct by PgnReader. |
| VARIATION | ⇒ | <VARIATION_START> LINE <VARIATION_END> | parseVariation() | Variation is an alternative line to a move. |
| MOVE_ITEM | ⇒ | MOVE <nag>* | parseLine()parseNagsAfterMove() | A move followed by any number of numeric annotation glyphs (NAGs) |
| MOVE | ⇒ | PgnScannerToken::MOVE_PAWN | | parseLine() | A pawn advancing move (non-promoting) |
PgnScannerToken::MOVE_PAWN_CAPTURE | | A pawn capture move (non-promoting) | |||
PgnScannerToken::MOVE_PAWN_PROMO | | A pawn advancing move (promoting) | |||
PgnScannerToken::MOVE_PAWN_PROMO_CAPTURE | | A pawn capture move (promoting) | |||
PgnScannerToken::MOVE_PIECE_KNIGHT | | Knight move | |||
PgnScannerToken::MOVE_PIECE_BISHOP | | Bishop move | |||
PgnScannerToken::MOVE_PIECE_ROOK | | Rook move | |||
PgnScannerToken::MOVE_PIECE_QUEEN | | Queen move | |||
PgnScannerToken::MOVE_PIECE_KING | | King move | |||
PgnScannerToken::MOVE_SHORT_CASTLE | | Short castling move (O-O) | |||
PgnScannerToken::MOVE_LONG_CASTLE | Long castling move (O-O-O) | |||
| COMMENT | ⇒ | <COMMENT_START> (<COMMENT_TEXT> | <COMMENT_NEWLINE>)* <COMMENT_END> | parseCommentBlock() | PGN block comment. |
<COMMENT_TEXT> | parseSingleLineComment() | PGN single line comment. | ||
Strings may use backslashes for quoting the next character as is. This is useful only for quoting a quote (") or a backslash (\) character.
The rules are derived from the description in https://www.saremba.de/chessgml/standards/pgn/pgn-complete.htm .
|
inline |
Constructor.
| [in] | scanner | PGN scanner |
| [in] | actionHandler | Semantic action handler. See PgnParser_NullActions for description. |
|
delete |
|
delete |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
delete |
|
delete |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |