From bc7a4ad484dd248b35b01dbf3e86afc9d1533000 Mon Sep 17 00:00:00 2001
From: Jed Barber <jjbarber@y7mail.com>
Date: Tue, 8 Jan 2019 00:13:02 +1100
Subject: Packrat.Util basic predicates now work

---
 src/packrat-util.adb | 47 +++++++++++++++++++++++++++++++++++------------
 1 file changed, 35 insertions(+), 12 deletions(-)

(limited to 'src')

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;
 
 
-- 
cgit