Esempio n. 1
0
 public Node Optional <T>(T category, SingleNodeCallback onSuccess, bool expect = false)
 {
     if (Has(category))
     {
         if (expect)
         {
             Expect(category);
         }
         return(onSuccess());
     }
     return(null);
 }
Esempio n. 2
0
 // Rename to the actual name of this concept when I remember what was it
 public Node LeftJoin<T>(Node leftmostNode, T category, SingleNodeCallback nextNodeCallback)
 {
     var lastNode = leftmostNode;
     while (Has(category))
     {
         var node = Node.fromToken(Expect(category));
         node.Add(lastNode);
         node.Add(nextNodeCallback());
         lastNode = node;
     }
     return lastNode;
 }
Esempio n. 3
0
 public List<Node> ZeroOrMore<T>(T category, SingleNodeCallback onSuccess, bool expect = false)
 {
     var result_nodes = new List<Node>();
     while (Has(category))
     {
         if (expect)
         {
             Expect(category);
         }
         result_nodes.Add(onSuccess());
     }
     return result_nodes;
 }