summaryrefslogtreecommitdiff
path: root/packrat_parser_lib_notes.txt
diff options
context:
space:
mode:
authorJed Barber <jjbarber@y7mail.com>2019-01-26 10:50:36 +1100
committerJed Barber <jjbarber@y7mail.com>2019-01-26 10:50:36 +1100
commitada2593ebd6037cb78ce1ba795f283105d5cff26 (patch)
treec4cba2630898a6dcc5bf0ddac14dfc793cc99f15 /packrat_parser_lib_notes.txt
parentab48847797761e0fec0f2c49b8576a646ca3acaa (diff)
Interfaces for Cursors and Graphs added
Diffstat (limited to 'packrat_parser_lib_notes.txt')
-rw-r--r--packrat_parser_lib_notes.txt64
1 files changed, 63 insertions, 1 deletions
diff --git a/packrat_parser_lib_notes.txt b/packrat_parser_lib_notes.txt
index 1ae9707..333b999 100644
--- a/packrat_parser_lib_notes.txt
+++ b/packrat_parser_lib_notes.txt
@@ -9,7 +9,8 @@ Packrat.Lexer (generic over stamp enum, input item type, array of input items, a
Packrat.Lexer.Combinators (merged into Packrat.Lexer)
Packrat.Util
Packrat.Errors (nested)
-Packrat.Graphs (nested, generic over leaf array type)
+Packrat.Interfaces (nested)
+Packrat.Graphs (generic over leaf array type)
Packrat.Tokens (nested, generic over contained array)
Packrat.Text
Packrat.Text.Std (nested, generic over parser/lexer label enums)
@@ -308,14 +309,75 @@ Finish
+Packrat.Interfaces
+ - nested package, defines interfaces and types that should be used to derive an abstract syntax graph
+ - some of these may be removed from Interfaces and just implemented in Graphs depending on what actually
+ ends up being necessary for parsing
+
+List of interfaces:
+Cursor
+ - Is_Nothing
+ - Depth
+ - Is_Root
+ - Is_Branch
+ - Is_Leaf
+ - Label
+ - Elements
+ - Start
+ - Finish
+ - Choices
+ - Parent
+ - Child_Count
+ - All_Child_Count
+ - First_Child
+ - Last_Child
+ - Next_Sibling
+ - Prev_Sibling
+ - Delete_Children
+ - Delete_All_Children
+ - Equal_Subgraph
+ - Subgraph_Node_Count
+ - Find_In_Subgraph
+
+Directed_Acyclic_Graph
+ - Contains
+ - Leaf
+ - Branch
+ - Is_Empty
+ - Is_Ambiguous
+ - Node_Count
+ - Root_Count
+ - Root
+ - Append
+ - Prepend
+ - Attach_Choice
+ - Clear
+ - Delete_Position
+ - Find
+
+
+
+
Packrat.Graphs
+ - builds on the interfaces in Packrat.Interfaces
+ - can be replaced with a user-supplied type, assuming proper care is taken to avoid exponential issues
List_of_datatypes:
+Graph_Cursor
+ - (implements all of Interfaces.Cursor)
Parse_Graph
+ - (implements all of Interfaces.Directed_Acyclic_Graph)
List of funcs:
Debug_String
+Iterate
+Reverse_Iterate
+Iterate_Choice
+Reverse_Iterate_Choice
+Iterate_SUbtree
+Iterate_Subtree_Choice
+