示例#1
0
        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;
        }
示例#2
0
        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;
        }