-- This source is licensed under the Sunset License v1.0 with Unit_Tests; use Unit_Tests; private with Packrat.No_Lex, Packrat.Parsers.Debug, Packrat.Errors, Packrat.Traits; package Rat_Tests.Parsers is function Sequence_Check return Test_Result; function Sequence_2_Check return Test_Result; function Choice_Check return Test_Result; function Choice_2_Check return Test_Result; function Count_Check return Test_Result; function Many_Nomin_Check return Test_Result; function Many_Min_Check return Test_Result; function Followed_By_Check return Test_Result; function Not_Followed_By_Check return Test_Result; function Many_Until_Nomin_Check return Test_Result; function Many_Until_Min_Check return Test_Result; function Satisfy_Check return Test_Result; function Satisfy_With_Check return Test_Result; function Match_Check return Test_Result; function Match_With_Check return Test_Result; function Multimatch_Check return Test_Result; function Take_Check return Test_Result; function Take_While_Check return Test_Result; function Take_Until_Check return Test_Result; function Empty_Check return Test_Result; function Not_Empty_Check return Test_Result; Combinator_Tests : Test_Array := ((+"Sequence", Sequence_Check'Access), (+"Sequence_2", Sequence_2_Check'Access), (+"Choice", Choice_Check'Access), (+"Choice_2", Choice_2_Check'Access), (+"Count", Count_Check'Access), (+"Many No Minimum", Many_Nomin_Check'Access), (+"Many With Minimum", Many_Min_Check'Access), (+"Followed_By", Followed_By_Check'Access), (+"Not_Followed_By", Not_Followed_By_Check'Access), (+"Many_Until No Minimum", Many_Until_Nomin_Check'Access), (+"Many_Until With Minimum", Many_Until_Min_Check'Access), (+"Satisfy", Satisfy_Check'Access), (+"Satisfy_With", Satisfy_With_Check'Access), (+"Match", Match_Check'Access), (+"Match_With", Match_With_Check'Access), (+"Multimatch", Multimatch_Check'Access), (+"Take", Take_Check'Access), (+"Take_While", Take_While_Check'Access), (+"Take_Until", Take_Until_Check'Access), (+"Empty", Empty_Check'Access), (+"Not_Empty", Not_Empty_Check'Access)); function Default_Result_Check return Test_Result; Other_Tests : Test_Array := (1 => (+"Default Combinator Result", Default_Result_Check'Access)); private type Parser_Labels_One is (One, Two, Three, Four, Five, Six); package Pone is new Packrat.No_Lex (Parser_Labels_One, Character, String); package One_Debug is new Pone.Parsers.Debug; function Match_AB is new Pone.Parsers.Multimatch ("ab"); function Match_CDE is new Pone.Parsers.Multimatch ("cde"); function Match_FG is new Pone.Parsers.Multimatch ("fg"); function Seq_ABCDEFG is new Pone.Parsers.Sequence ((Match_AB'Access, Match_CDE'Access, Match_FG'Access)); function Match_C is new Pone.Parsers.Match ('c'); function Many_C is new Pone.Parsers.Many (Match_C, 1); function Match_CC is new Pone.Parsers.Multimatch ("cc"); function Match_CCCDE is new Pone.Parsers.Multimatch ("cccde"); function Choose_CCCDE is new Pone.Parsers.Choice ((Many_C'Access, Match_CC'Access, Match_CCCDE'Access)); function Alphanum_Switch (Char : in Character) return Character; end Rat_Tests.Parsers;