with Packrat.Parse_Graphs; package body Rat_Tests.Parse_Graphs is type My_Labels is (Noun, Determiner, Noun_Phrase, Preposition, Prepositional_Phrase, Verb, Verb_Phrase, Sentence); package String_Tokens is new Packrat.Tokens (My_Labels, Character, String); package Graphs is new Packrat.Parse_Graphs (My_Labels, Character, String, "<", String_Tokens); -- These tokens are defined here purely to reduce verbosity when -- manually constructing the various test graphs in the package initialisation. Noun_1 : String_Tokens.Token := String_Tokens.Create (Noun, 1, "i"); Noun_4 : String_Tokens.Token := String_Tokens.Create (Noun, 4, "man"); Noun_7 : String_Tokens.Token := String_Tokens.Create (Noun, 7, "park"); Noun_10 : String_Tokens.Token := String_Tokens.Create (Noun, 10, "bat"); Det_3 : String_Tokens.Token := String_Tokens.Create (Determiner, 3, "a"); Det_6 : String_Tokens.Token := String_Tokens.Create (Determiner, 6, "the"); Det_9 : String_Tokens.Token := String_Tokens.Create (Determiner, 9, "a"); NP_1 : String_Tokens.Token := String_Tokens.Create (Noun_Phrase, 1, ""); NP_3 : String_Tokens.Token := String_Tokens.Create (Noun_Phrase, 3, ""); NP_6 : String_Tokens.Token := String_Tokens.Create (Noun_Phrase, 6, ""); NP_9 : String_Tokens.Token := String_Tokens.Create (Noun_Phrase, 9, ""); Prep_5 : String_Tokens.Token := String_Tokens.Create (Preposition, 5, "in"); Prep_8 : String_Tokens.Token := String_Tokens.Create (Preposition, 8, "with"); PP_5 : String_Tokens.Token := String_Tokens.Create (Prepositional_Phrase, 5, ""); PP_8 : String_Tokens.Token := String_Tokens.Create (Prepositional_Phrase, 8, ""); Verb_2 : String_Tokens.Token := String_Tokens.Create (Verb, 2, "saw"); VP_2 : String_Tokens.Token := String_Tokens.Create (Verb_Phrase, 2, ""); Sen_1 : String_Tokens.Token := String_Tokens.Create (Sentence, 1, ""); -- This should be set up to be identical to the example parse in the paper -- on pages 168-169. Paper_Graph : Graphs.Parse_Graph; function Debug_String_Check return String is begin return Paper_Graph.Debug_String; end Debug_String_Check; function Assign_Check return Test_Result is begin -- to-do return Fail; end Assign_Check; function Copy_Check return Test_Result is begin -- to-do return Fail; end Copy_Check; function Move_Check return Test_Result is begin -- to-do return Fail; end Move_Check; function Is_Empty_Check return Test_Result is begin -- to-do return Fail; end Is_Empty_Check; function Clear_Check return Test_Result is begin -- to-do return Fail; end Clear_Check; function Contains_Check return Test_Result is begin -- to-do return Fail; end Contains_Check; function Reachable_Check return Test_Result is begin -- to-do return Fail; end Reachable_Check; function All_Reachable_Check return Test_Result is begin -- to-do return Fail; end All_Reachable_Check; function Valid_Starts_Finishes_Check return Test_Result is begin -- to-do return Fail; end Valid_Starts_Finishes_Check; function No_Loops_Introduced_Check return Test_Result is begin -- to-do return Fail; end No_Loops_Introduced_Check; function Is_Sorted_Check return Test_Result is begin -- to-do return Fail; end Is_Sorted_Check; function No_Duplicates_Check return Test_Result is begin -- to-do return Fail; end No_Duplicates_Check; function Include_Check return Test_Result is begin -- to-do return Fail; end Include_Check; function Connect_Check return Test_Result is begin -- to-do return Fail; end Connect_Check; function Prune_Check return Test_Result is begin -- to-do return Fail; end Prune_Check; function Delete_Unreachable_Check return Test_Result is begin -- to-do return Fail; end Delete_Unreachable_Check; function Has_Root_Check return Test_Result is begin -- to-do return Fail; end Has_Root_Check; function Set_Root_Check return Test_Result is begin -- to-do return Fail; end Set_Root_Check; function Clear_Root_Check return Test_Result is begin -- to-do return Fail; end Clear_Root_Check; function Root_Token_Check return Test_Result is begin -- to-do return Fail; end Root_Token_Check; function Root_Finish_List_Check return Test_Result is begin -- to-do return Fail; end Root_Finish_List_Check; function Root_Element_Check return Test_Result is begin -- to-do return Fail; end Root_Element_Check; function Finish_List_Check return Test_Result is begin -- to-do return Fail; end Finish_List_Check; function Is_Leaf_Check return Test_Result is begin -- to-do return Fail; end Is_Leaf_Check; function Is_Branch_Check return Test_Result is begin -- to-do return Fail; end Is_Branch_Check; function Subgroups_Check return Test_Result is begin -- to-do return Fail; end Subgroups_Check; function First_Index_Check return Test_Result is begin -- to-do return Fail; end First_Index_Check; function Last_Index_Check return Test_Result is begin -- to-do return Fail; end Last_Index_Check; function Length_Check return Test_Result is begin -- to-do return Fail; end Length_Check; function Element_Check return Test_Result is begin -- to-do return Fail; end Element_Check; function Elements_Check return Test_Result is begin -- to-do return Fail; end Elements_Check; function Parent_Check return Test_Result is begin -- to-do return Fail; end Parent_Check; function Finish_Check return Test_Result is begin -- to-do return Fail; end Finish_Check; function Is_Root_Ambiguous_Check return Test_Result is begin -- to-do return Fail; end Is_Root_Ambiguous_Check; function Is_Ambiguous_Check return Test_Result is begin -- to-do return Fail; end Is_Ambiguous_Check; function Ambiguities_Check return Test_Result is begin -- to-do return Fail; end Ambiguities_Check; function Isomorphic_Check return Test_Result is begin -- to-do return Fail; end Isomorphic_Check; function Isomorphic_Subgraph_Check return Test_Result is begin -- to-do return Fail; end Isomorphic_Subgraph_Check; begin -- Constructing the various test graphs Paper_Graph.Connect ((NP_1, 2), (1 => Graphs.Finished_Token'(Noun_1, 2))); Paper_Graph.Connect ((NP_3, 5), ((Det_3, 4), (Noun_4, 5))); Paper_Graph.Connect ((NP_3, 8), ((NP_3, 5), (PP_5, 8))); Paper_Graph.Connect ((NP_3, 11), ((NP_3, 5), (PP_5, 11))); Paper_Graph.Connect ((NP_3, 11), ((NP_3, 8), (PP_8, 11))); Paper_Graph.Connect ((NP_6, 8), ((Det_6, 7), (Noun_7, 8))); Paper_Graph.Connect ((NP_6, 11), ((NP_6, 8), (PP_8, 11))); Paper_Graph.Connect ((NP_9, 11), ((Det_9, 10), (Noun_10, 11))); Paper_Graph.Connect ((PP_5, 8), ((Prep_5, 6), (NP_6, 8))); Paper_Graph.Connect ((PP_5, 11), ((Prep_5, 6), (NP_6, 11))); Paper_Graph.Connect ((PP_8, 11), ((Prep_8, 9), (NP_9, 11))); Paper_Graph.Connect ((VP_2, 5), ((Verb_2, 3), (NP_3, 5))); Paper_Graph.Connect ((VP_2, 8), ((Verb_2, 3), (NP_3, 8))); Paper_Graph.Connect ((VP_2, 11), ((Verb_2, 3), (NP_3, 11))); Paper_Graph.Connect ((Sen_1, 5), ((NP_1, 2), (VP_2, 5))); Paper_Graph.Connect ((Sen_1, 8), ((NP_1, 2), (VP_2, 8))); Paper_Graph.Connect ((Sen_1, 8), ((Sen_1, 5), (PP_5, 8))); Paper_Graph.Connect ((Sen_1, 11), ((NP_1, 2), (VP_2, 11))); Paper_Graph.Connect ((Sen_1, 11), ((Sen_1, 5), (PP_5, 11))); Paper_Graph.Connect ((Sen_1, 11), ((Sen_1, 8), (PP_8, 11))); Paper_Graph.Set_Root (Sen_1, (5, 8, 11)); end Rat_Tests.Parse_Graphs;