int skip1 = 0, skip2 = 0, skip3 = 0, promoted = 0;\r
ChessSquare piece;\r
ChessMove result;\r
+ char c;\r
\r
if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */\r
\r
piece = boards[yyboardindex]\r
[currentMoveString[1] - ONE][currentMoveString[0] - AAA];\r
if(promoted) piece = (ChessSquare) (DEMOTED piece);\r
- if (ToLower(yytext[skip3]) != ToLower(PieceToChar(piece)))\r
+ c = PieceToChar(piece);\r
+ if(c == '~') c = PieceToChar((ChessSquare) (DEMOTED piece));\r
+ if (ToLower(yytext[skip3]) != ToLower(c))\r
return (int) IllegalMove;\r
\r
result = LegalityTest(boards[yyboardindex],\r
return (int) result;\r
}\r
\r
-[a-l][0-9][xX:-]?[a-l][0-9]((=?\(?[A-Z]\)?)|=)? {\r
+[a-l][0-9][xX:-]?[a-l][0-9]((=?\(?[A-Za-z]\)?)|=)? {\r
/*\r
* Simple algebraic move, possibly with promotion\r
+ * [HGM] Engine moves are received in this format, with lower-case promoChar!\r
*/\r
int skip = 0;\r
ChessMove result;\r