summaryrefslogtreecommitdiff
path: root/src/packrat-lexers.ads
diff options
context:
space:
mode:
authorJed Barber <jjbarber@y7mail.com>2020-12-04 20:17:43 +1100
committerJed Barber <jjbarber@y7mail.com>2020-12-04 20:17:43 +1100
commita21cc8153592700ae7cb2cdfbb24b377e096a22a (patch)
tree9dec048f52576a9881241e509fee72f8b91ac090 /src/packrat-lexers.ads
parent0abd0d9444164cbb85df0e5a50451b5f98fef3db (diff)
Scan/Parse functions are now packages, tests broken with linker errors
Diffstat (limited to 'src/packrat-lexers.ads')
-rw-r--r--src/packrat-lexers.ads123
1 files changed, 75 insertions, 48 deletions
diff --git a/src/packrat-lexers.ads b/src/packrat-lexers.ads
index 57fc462..68a01d0 100644
--- a/src/packrat-lexers.ads
+++ b/src/packrat-lexers.ads
@@ -17,6 +17,11 @@ generic
package Packrat.Lexers is
+ type Lexer_Context is private;
+
+
+
+
type Combinator_Result is private;
type Combinator is access function
@@ -29,13 +34,6 @@ package Packrat.Lexers is
- type Lexer_Context is private;
-
- Empty_Context : constant Lexer_Context;
-
-
-
-
type Component_Result is private;
type Component is access function
@@ -55,68 +53,97 @@ package Packrat.Lexers is
generic
- Label : in Traits.Label_Enum;
- with function Combo
- (Input : in Traits.Element_Array;
- Start : in Positive)
- return Combinator_Result;
- function Stamp
- (Input : in Traits.Element_Array;
- Context : in out Lexer_Context)
- return Component_Result;
+ Components : in Component_Array;
+ package Scan_Parts is
- generic
- Label : in Traits.Label_Enum;
- with function Combo
- (Input : in Traits.Element_Array;
- Start : in Positive)
- return Combinator_Result;
- function Ignore
- (Input : in Traits.Element_Array;
- Context : in out Lexer_Context)
- return Component_Result;
+ function Scan
+ (Input : in Traits.Element_Array)
+ return Traits.Tokens.Token_Array;
+ procedure Reset;
+ end Scan_Parts;
generic
Components : in Component_Array;
- function Scan
- (Input : in Traits.Element_Array;
- Context : in out Lexer_Context)
- return Traits.Tokens.Token_Array;
+ package Scan_Once is
+
+ function Scan
+ (Input : in Traits.Element_Array)
+ return Traits.Tokens.Token_Array;
+
+ procedure Reset;
+
+ end Scan_Once;
- generic
- Components : in Component_Array;
- function Scan_Only
- (Input : in Traits.Element_Array;
- Context : in out Lexer_Context)
- return Traits.Tokens.Token_Array;
generic
Components : in Component_Array;
- function Scan_With
- (Input : in With_Input;
- Context : in out Lexer_Context)
- return Traits.Tokens.Token_Array;
+ package Scan_With is
+
+ function Scan
+ (Input : in With_Input)
+ return Traits.Tokens.Token_Array;
+
+ procedure Reset;
+
+ end Scan_With;
+
generic
Components : in Component_Array;
Pad_In : in Traits.Element_Type;
Pad_Out : in Traits.Tokens.Token;
- procedure Scan_Set
- (Input : in Traits.Element_Array;
- Context : in out Lexer_Context;
- Output : out Traits.Tokens.Token_Array);
+ package Scan_Set is
+
+ procedure Scan
+ (Input : in Traits.Element_Array;
+ Output : out Traits.Tokens.Token_Array);
+
+ procedure Reset;
+
+ end Scan_Set;
+
generic
Components : in Component_Array;
Pad_In : in Traits.Element_Type;
Pad_Out : in Traits.Tokens.Token;
- procedure Scan_Set_With
- (Input : in With_Input;
- Context : in out Lexer_Context;
- Output : out Traits.Tokens.Token_Array);
+ package Scan_Set_With is
+
+ procedure Scan
+ (Input : in With_Input;
+ Output : out Traits.Tokens.Token_Array);
+
+ procedure Reset;
+
+ end Scan_Set_With;
+
+
+
+
+ generic
+ Label : in Traits.Label_Enum;
+ with function Combo
+ (Input : in Traits.Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+ function Stamp
+ (Input : in Traits.Element_Array;
+ Context : in out Lexer_Context)
+ return Component_Result;
+
+ generic
+ Label : in Traits.Label_Enum;
+ with function Combo
+ (Input : in Traits.Element_Array;
+ Start : in Positive)
+ return Combinator_Result;
+ function Ignore
+ (Input : in Traits.Element_Array;
+ Context : in out Lexer_Context)
+ return Component_Result;