summaryrefslogtreecommitdiff
path: root/src/packrat-lexer.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/packrat-lexer.ads')
-rw-r--r--src/packrat-lexer.ads166
1 files changed, 141 insertions, 25 deletions
diff --git a/src/packrat-lexer.ads b/src/packrat-lexer.ads
index d331645..382b7ff 100644
--- a/src/packrat-lexer.ads
+++ b/src/packrat-lexer.ads
@@ -20,31 +20,10 @@ package Packrat.Lexer is
type Combinator_Array is array (Positive range <>) of Combinator;
- Empty_Fail : constant Combinator_Result;
-
-
- function Create_Result
- (Length : in Natural;
- Status : in Result_Status;
- Value : in Element_Array)
- return Combinator_Result;
-
- function Join
- (Left, Right : in Combinator_Result)
- return Combinator_Result;
-
function "="
(Left, Right : in Combinator_Result)
return Boolean;
- function Status
- (This : in Combinator_Result)
- return Result_Status;
-
- function Debug_String
- (This : in Combinator_Result)
- return String;
-
@@ -60,6 +39,9 @@ package Packrat.Lexer is
type Component_Array is array (Positive range <>) of Lexer_Component;
+
+
+
generic
Label : in Label_Enum;
Combo : in Combinator;
@@ -124,22 +106,158 @@ package Packrat.Lexer is
Output : out Gen_Tokens.Token_Array);
+
+
+ generic
+ Params : in Combinator_Array;
+ function Sequence
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+ generic
+ with function Param
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+ Number : in Positive;
+ function Count
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+ generic
+ with function Param
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+ Minimum : in Natural := 0;
+ function Many
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+ generic
+ with function Param
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+ with function Test
+ (Item : in Element)
+ return Boolean;
+ Minimum : in Natural := 0;
+ function Many_Until
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+
+
+
+ generic
+ with function Test
+ (Item : in Element)
+ return Boolean;
+ function Satisfy
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+ generic
+ with function Test
+ (Item : in Element)
+ return Boolean;
+ with function Change
+ (From : in Element)
+ return Element;
+ function Satisfy_With
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+ generic
+ Item : in Element;
+ function Match
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+ generic
+ Item : in Element;
+ with function Change
+ (From : in Element)
+ return Element;
+ function Match_With
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+ generic
+ Items : in Element_Array;
+ function Multimatch
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+ generic
+ Number : in Positive := 1;
+ function Take
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+ generic
+ with function Test
+ (Item : in Element)
+ return Boolean;
+ function Take_While
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+ generic
+ with function Test
+ (Item : in Element)
+ return Boolean;
+ function Take_Until
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+
+
+
+ generic
+ EOL_Item : in Element;
+ function Line_End
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+ generic
+ EOF_Item : in Element;
+ function Input_End
+ (Input : in Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+
+
private
type Element_Array_Access is access Element_Array;
-
Empty_Array : Element_Array (1 .. 0);
+
+
type Combinator_Result is new Ada.Finalization.Controlled with record
Length : Natural;
Status : Result_Status;
Value : Element_Array_Access;
end record;
-
overriding procedure Initialize
(This : in out Combinator_Result);
@@ -149,7 +267,6 @@ private
overriding procedure Finalize
(This : in out Combinator_Result);
-
Empty_Fail : constant Combinator_Result :=
(Ada.Finalization.Controlled with
Length => 0,
@@ -161,7 +278,6 @@ private
type Lexer_Context is new Ada.Finalization.Controlled with null record;
-
Empty_Context : constant Lexer_Context := (Ada.Finalization.Controlled with null record);