diff --git a/src/Pig.cpp b/src/Pig.cpp index 507fafed..4c9143d4 100644 --- a/src/Pig.cpp +++ b/src/Pig.cpp @@ -171,6 +171,36 @@ bool Pig::getDigits (int& result) return false; } +//////////////////////////////////////////////////////////////////////////////// +bool Pig::getHexDigit (int& result) +{ + int c = _text[_cursor]; + if (c && + Lexer::isHexDigit (c)) + { + if (c >= '0' && c <= '9') + { + result = c - '0'; + ++_cursor; + return true; + } + else if (c >= 'A' && c <= 'F') + { + result = c - 'A' + 10; + ++_cursor; + return true; + } + else if (c >= 'a' && c <= 'f') + { + result = c - 'a' + 10; + ++_cursor; + return true; + } + } + + return false; +} + //////////////////////////////////////////////////////////////////////////////// // number: // int frac? exp? diff --git a/src/Pig.h b/src/Pig.h index 46f5533c..73c1df66 100644 --- a/src/Pig.h +++ b/src/Pig.h @@ -43,6 +43,7 @@ public: bool getUntilWS (std::string&); bool getDigit (int&); bool getDigits (int&); + bool getHexDigit (int&); bool getNumber (std::string&); bool getNumber (double&); bool getOneOf (const std::vector &, std::string&);