summaryrefslogtreecommitdiff
path: root/test/rat_tests-parsers.ads
diff options
context:
space:
mode:
authorJed Barber <jjbarber@y7mail.com>2021-01-21 16:33:47 +1100
committerJed Barber <jjbarber@y7mail.com>2021-01-21 16:33:47 +1100
commit30d59f09f6908aa0de2ec3a58a0736c8030ffda5 (patch)
treeffbca1ff15ffe02de67374687b7210131cace28e /test/rat_tests-parsers.ads
parentd089edbb61f6bf6b52bc74f7f03f909b8b33b670 (diff)
Piecewise parsing fixed, unit tested
Diffstat (limited to 'test/rat_tests-parsers.ads')
-rw-r--r--test/rat_tests-parsers.ads21
1 files changed, 14 insertions, 7 deletions
diff --git a/test/rat_tests-parsers.ads b/test/rat_tests-parsers.ads
index 198b622..bca6e30 100644
--- a/test/rat_tests-parsers.ads
+++ b/test/rat_tests-parsers.ads
@@ -72,11 +72,17 @@ package Rat_Tests.Parsers is
(+"Not_Empty", Not_Empty_Check'Access));
+ function Parse_Parts_Check return Test_Result;
+ function Parse_Parts_Left_Check return Test_Result;
+ function Parse_Parts_Exception_Check return Test_Result;
function Parse_Once_Check return Test_Result;
function Parse_Once_Exception_Check return Test_Result;
Parser_Tests : Test_Array :=
- ((+"Parse_Once", Parse_Once_Check'Access),
+ ((+"Parse_Parts", Parse_Parts_Check'Access),
+ (+"Parse_Parts Left Recursive", Parse_Parts_Left_Check'Access),
+ (+"Parse_Parts Exception", Parse_Parts_Exception_Check'Access),
+ (+"Parse_Once", Parse_Once_Check'Access),
(+"Parse_Once Exception", Parse_Once_Exception_Check'Access));
@@ -151,6 +157,7 @@ private
function Add_Expr is new Left_Sums.Parsers.Sequence_2 (Add, Left_Sums.Parsers.End_Of_Input);
package Add_Parse_Once is new Left_Sums.Parsers.Parse_Once (Add_Expr);
+ package Add_Parse_Parts is new Left_Sums.Parsers.Parse_Parts (Add_Expr);
@@ -167,20 +174,20 @@ private
function Stamper_Number is new Add_Errors.Parsers.Stamp (Number_Err, Sater_Digit);
function Matcher_Plus is new Add_Errors.Parsers.Match ('+');
- function Stamper_Plus is new Add_Errors.Parsers.Stamp (Plus_Err, Matcher_Plus);
- function Ignorer_Plus is new Add_Errors.Parsers.Ignore (Stamper_Plus);
+ function Discarder_Plus is new Add_Errors.Parsers.Discard (Plus_Err, Matcher_Plus);
function Sumer_Plus is new Add_Errors.Parsers.Sequence
- ((Adder_Redir.Call'Access, Ignorer_Plus'Access, Stamper_Number'Access));
+ ((Stamper_Number'Access, Discarder_Plus'Access, Adder_Redir.Call'Access));
function Sumer_Choice is new Add_Errors.Parsers.Choice
((Sumer_Plus'Access, Stamper_Number'Access));
function Sumer is new Add_Errors.Parsers.Stamp (Sum_Err, Sumer_Choice);
- function Stamper_End is new Add_Errors.Parsers.Stamp (Eof_Err, Add_Errors.Parsers.End_Of_Input);
- function Ignorer_End is new Add_Errors.Parsers.Ignore (Stamper_End);
- function Sumer_Expr is new Add_Errors.Parsers.Sequence_2 (Sumer, Ignorer_End);
+ function Discarder_End is new Add_Errors.Parsers.Discard
+ (Eof_Err, Add_Errors.Parsers.End_Of_Input);
+ function Sumer_Expr is new Add_Errors.Parsers.Sequence_2 (Sumer, Discarder_End);
package Adder_Parse_Once is new Add_Errors.Parsers.Parse_Once (Sumer_Expr);
+ package Adder_Parse_Parts is new Add_Errors.Parsers.Parse_Parts (Sumer_Expr);