private Token GetHexNumber(Position startPos) { var res = new Token {Position = startPos, Type = TokenType.Number, Modifer = "hex"}; AddChar(); while (!Eof) { if (char.IsDigit(Ch) || IsHexLetter(Ch)) { AddChar(); continue; } if (Ch == 'h' || Ch == 'H') { NextCh(); res.Value = _tokVal.ToString(); break; } // если следом за числом идет пробел или не буква то ок if (!char.IsLetter(Ch) || IsWs()) break; AddChar(); throw new ApplicationException($"Неверный символ в Hex числе \"{_tokVal}\" в позиции {Pos.Line}:{Pos.Col}"); } res.Value = _tokVal.ToString(); return res; }
private Token GetBinNumber(Position startPos) { var res = new Token {Position = startPos, Type = TokenType.Number, Modifer = "bin"}; AddChar(); while (!Eof) { if (Ch == '0' || Ch == '1') { AddChar(); continue; } if (Ch == 'b' || Ch == 'B') { NextCh(); break; } // если следом за числом идет пробел или не буква то ок if (!char.IsLetter(Ch) || IsWs()) break; throw new ApplicationException($"Неверный символ в Bin числе, в позиции {Pos}"); } res.Value = _tokVal.ToString(); return res; }