with Unit_Tests; use Unit_Tests; private with Packrat.Errors, Packrat.Traits, Packrat.Lexers.Debug, Packrat.Utilities; package Rat_Tests.Lexers is function Join_Check return Test_Result; function Equals_Check return Test_Result; function Sequence_Check return Test_Result; function Count_Check return Test_Result; function Many_Check return Test_Result; function Many_Until_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 Line_End_Check return Test_Result; function Input_End_Check return Test_Result; Combinator_Tests : Test_Array := ((+"Join", Join_Check'Access), (+"Equals", Equals_Check'Access), (+"Sequence", Sequence_Check'Access), (+"Count", Count_Check'Access), (+"Many", Many_Check'Access), (+"Many_Until", Many_Until_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), (+"Line End", Line_End_Check'Access), (+"Input_End", Input_End_Check'Access)); function Stamp_Check return Test_Result; function Ignore_Check return Test_Result; function Scan_Parts_Check return Test_Result; function Scan_Once_Check return Test_Result; function Scan_With_Check return Test_Result; function Scan_Set_Check return Test_Result; function Scan_Set_With_Check return Test_Result; function Scan_Parts_Error_Check return Test_Result; function Scan_Once_Error_Check return Test_Result; function Scan_With_Error_Check return Test_Result; function Scan_Set_Error_Check return Test_Result; function Scan_Set_With_Error_Check return Test_Result; Lexer_Tests : Test_Array := ((+"Stamp", Stamp_Check'Access), (+"Ignore", Ignore_Check'Access), (+"Scan_Parts", Scan_Parts_Check'Access), (+"Scan_Once", Scan_Once_Check'Access), (+"Scan_With", Scan_With_Check'Access), (+"Scan_Set", Scan_Set_Check'Access), (+"Scan_Set_With", Scan_Set_With_Check'Access), (+"Scan_Parts Exception", Scan_Parts_Error_Check'Access), (+"Scan_Once Exception", Scan_Once_Error_Check'Access), (+"Scan_With Exception", Scan_With_Error_Check'Access), (+"Scan_Set Exception", Scan_Set_Error_Check'Access), (+"Scan_Set_With Exception", Scan_Set_With_Error_Check'Access)); private package PU renames Packrat.Utilities; type My_Labels is (One, Two, Three); package Slexy_Traits is new Packrat.Traits (My_Labels, Character, String); package Slexy is new Packrat.Lexers (Slexy_Traits); package Slebug is new Slexy.Debug; use type Slexy.Combinator_Result; type Word_Enum is (Blank, Word, Whitespace); package Swordy_Traits is new Packrat.Traits (Word_Enum, Character, String); package Swordy is new Packrat.Lexers (Swordy_Traits); package Swolbug is new Swordy.Debug; use type Swordy_Traits.Tokens.Token_Type; use type Swordy_Traits.Tokens.Token_Array; function Satisfy_Letter is new Swordy.Satisfy (PU.Is_Letter); function Many_Letter is new Swordy.Many (Satisfy_Letter, 1); function Satisfy_Whitespace is new Swordy.Satisfy (PU.Is_Whitespace); function Many_Whitespace is new Swordy.Many (Satisfy_Whitespace, 1); function Stamp_Word is new Swordy.Stamp (Word, Many_Letter); function Ignore_Whitespace is new Swordy.Ignore (Whitespace, Many_Whitespace); end Rat_Tests.Lexers;