diff options
Diffstat (limited to 'src/packrat-lexer.ads')
-rw-r--r-- | src/packrat-lexer.ads | 166 |
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); |