diff options
author | Jed Barber <jjbarber@y7mail.com> | 2019-01-08 00:13:02 +1100 |
---|---|---|
committer | Jed Barber <jjbarber@y7mail.com> | 2019-01-08 00:13:02 +1100 |
commit | bc7a4ad484dd248b35b01dbf3e86afc9d1533000 (patch) | |
tree | e7fcbb2a6aa813c30545d7cfe9c4b4923974831a | |
parent | 6f767eb4b27c4e15ca6c3be3b93ca187caf95bd9 (diff) |
Packrat.Util basic predicates now work
-rw-r--r-- | src/packrat-util.adb | 47 | ||||
-rw-r--r-- | test/ratnest-tests.adb | 4 |
2 files changed, 37 insertions, 14 deletions
diff --git a/src/packrat-util.adb b/src/packrat-util.adb index 6ee1d4a..dc9968b 100644 --- a/src/packrat-util.adb +++ b/src/packrat-util.adb @@ -1,8 +1,18 @@ +with + + Ada.Characters.Latin_1; + + package body Packrat.Util is + package Latin renames Ada.Characters.Latin_1; + + + + function In_Set (Element : in Character) return Boolean is @@ -26,7 +36,7 @@ package body Packrat.Util is (Char : in Character) return Boolean is begin - return False; + return (Char >= '0' and Char <= '9'); end Is_Digit; @@ -34,7 +44,10 @@ package body Packrat.Util is (Char : in Character) return Boolean is begin - return False; + return + (Char >= '0' and Char <= '9') or + (Char >= 'A' and Char <= 'F') or + (Char >= 'a' and Char <= 'f'); end Is_Hex; @@ -42,7 +55,9 @@ package body Packrat.Util is (Char : in Character) return Boolean is begin - return False; + return + (Char >= 'A' and Char <= 'Z') or + (Char >= 'a' and Char <= 'z'); end Is_Letter; @@ -50,7 +65,7 @@ package body Packrat.Util is (Char : in Character) return Boolean is begin - return False; + return Is_Digit (Char) or Is_Letter (Char); end Is_Alphanumeric; @@ -58,7 +73,11 @@ package body Packrat.Util is (Char : in Character) return Boolean is begin - return False; + return + (Char >= '!' and Char <= '/') or + (Char >= ':' and Char <= '@') or + (Char >= '[' and Char <= '`') or + (Char >= '{' and Char <= '~'); end Is_Punctuation; @@ -66,7 +85,7 @@ package body Packrat.Util is (Char : in Character) return Boolean is begin - return False; + return Char <= Character'Val (127); end Is_ASCII; @@ -74,7 +93,7 @@ package body Packrat.Util is (Char : in Character) return Boolean is begin - return False; + return Char >= Character'Val (128); end Is_Extended_ASCII; @@ -82,7 +101,7 @@ package body Packrat.Util is (Char : in Character) return Boolean is begin - return False; + return Char = ' '; end Is_Space; @@ -90,7 +109,7 @@ package body Packrat.Util is (Char : in Character) return Boolean is begin - return False; + return (Char = ' ' or Char = Latin.HT); end Is_Linespace; @@ -98,7 +117,7 @@ package body Packrat.Util is (Char : in Character) return Boolean is begin - return False; + return (Char = Latin.LF or Char = Latin.CR); end Is_End_Of_Line; @@ -106,7 +125,11 @@ package body Packrat.Util is (Char : in Character) return Boolean is begin - return False; + return + Char = Latin.HT or + Char = Latin.LF or + Char = Latin.CR or + Char = ' '; end Is_Whitespace; @@ -114,7 +137,7 @@ package body Packrat.Util is (Char : in Character) return Boolean is begin - return False; + return not Is_Whitespace (Char); end Not_Whitespace; diff --git a/test/ratnest-tests.adb b/test/ratnest-tests.adb index dd2228f..2479998 100644 --- a/test/ratnest-tests.adb +++ b/test/ratnest-tests.adb @@ -226,12 +226,12 @@ package body Ratnest.Tests is return Test_Result is begin for I in Integer range Character'Pos (Character'First) .. 127 loop - if PU.Is_ASCII (Character'Val (I)) then + if PU.Is_Extended_ASCII (Character'Val (I)) then return Failure; end if; end loop; for I in Integer range 128 .. Character'Pos (Character'Last) loop - if not PU.Is_ASCII (Character'Val (I)) then + if not PU.Is_Extended_ASCII (Character'Val (I)) then return Failure; end if; end loop; |