diff options
author | Jed Barber <jjbarber@y7mail.com> | 2019-01-13 23:19:19 +1100 |
---|---|---|
committer | Jed Barber <jjbarber@y7mail.com> | 2019-01-13 23:19:19 +1100 |
commit | 93406e9b26f9e4439a8e4d57659489323a4e57b4 (patch) | |
tree | 101867e1790804885037cf2998a9466532902bc8 /src/packrat-lexer.ads | |
parent | f8cef7edffc705cc1c168620a6ba0e76a90f6366 (diff) |
Spec for Packrat.Lexer Stamp, Scan, and derivative functions and procedures
Diffstat (limited to 'src/packrat-lexer.ads')
-rw-r--r-- | src/packrat-lexer.ads | 87 |
1 files changed, 86 insertions, 1 deletions
diff --git a/src/packrat-lexer.ads b/src/packrat-lexer.ads index 6c28bf8..d331645 100644 --- a/src/packrat-lexer.ads +++ b/src/packrat-lexer.ads @@ -20,7 +20,6 @@ package Packrat.Lexer is type Combinator_Array is array (Positive range <>) of Combinator; - Empty_Fail : constant Combinator_Result; @@ -47,6 +46,84 @@ package Packrat.Lexer is return String; + + + type Lexer_Context is new Ada.Finalization.Controlled with private; + + Empty_Context : constant Lexer_Context; + + + + + type Lexer_Component is access procedure + (Context : in out Lexer_Context); + + type Component_Array is array (Positive range <>) of Lexer_Component; + + generic + Label : in Label_Enum; + Combo : in Combinator; + procedure Stamp + (Context : in out Lexer_Context); + + generic + Combo : in Combinator; + procedure Ignore + (Context : in out Lexer_Context); + + + + + generic + Components : in Component_Array; + function Scan + (Input : in Element_Array; + Context : in out Lexer_Context) + return Gen_Tokens.Token_Array; + + generic + Components : in Component_Array; + Padding : in Gen_Tokens.Token; + procedure Scan_Set + (Input : in Element_Array; + Context : in out Lexer_Context; + Output : out Gen_Tokens.Token_Array); + + generic + Components : in Component_Array; + function Scan_Only + (Input : in Element_Array; + Context : in out Lexer_Context) + return Gen_Tokens.Token_Array; + + generic + Gomponents : in Component_Array; + Padding : in Gen_Tokens.Token; + procedure Scan_Set_Only + (Input : in Element_Array; + Context : in out Lexer_Context; + Output : out Gen_Tokens.Token_Array); + + generic + Components : in Component_Array; + with function More + return Element_Array; + function Scan_With + (Input : in Element_Array; + Context : in out Lexer_Context) + return Gen_Tokens.Token_Array; + + generic + Components : in Component_Array; + Padding : in Gen_Tokens.Token; + with function More + return Element_Array; + procedure Scan_Set_With + (Input : in Element_Array; + Context : in out Lexer_Context; + Output : out Gen_Tokens.Token_Array); + + private @@ -80,6 +157,14 @@ private Value => null); + + + type Lexer_Context is new Ada.Finalization.Controlled with null record; + + + Empty_Context : constant Lexer_Context := (Ada.Finalization.Controlled with null record); + + end Packrat.Lexer; |