Example #1
0
        public CompleteNode <TExtension> GetOrCreateCompleteNode(SppfNodeKey <TExtension> key)
        {
            var exists = myComplete.TryGetValue(key, out var node);

            if (!exists)
            {
                node = new CompleteNode <TExtension>(key);
                myComplete.Add(key, node);
            }

            return(node);
        }
Example #2
0
        public IntermediateNode <TExtension> GetOrCreateIntermediateNode(SppfNodeKey <TExtension> key)
        {
            var exists = myIntermediates.TryGetValue(key, out var node);

            if (!exists)
            {
                node = new IntermediateNode <TExtension>(key);
                myIntermediates.Add(key, node);
            }

            return(node);
        }
Example #3
0
        public TerminalNode <TExtension, TTransition> GetOrCreateTerminalNode(SppfNodeKey <TExtension> key, TTransition token)
        {
            var fullKey = (key, token);
            var exists  = myTerminals.TryGetValue(fullKey, out var node);

            if (!exists)
            {
                node = new TerminalNode <TExtension, TTransition>(key, token);
                myTerminals.Add(fullKey, node);
            }

            return(node);
        }
Example #4
0
 public IntermediateNode(SppfNodeKey <TExtension> key)
     : base(key)
 {
 }
Example #5
0
 public ProducingNode(SppfNodeKey <TExtension> key)
     : base(key)
 {
     myChildren = new HashSet <PackedNode <TExtension> >();
 }
Example #6
0
 public NonPackedNode(SppfNodeKey <TExtension> key)
 {
     Key = key;
 }
Example #7
0
 public SppfNodeKey <TExtension> Concat(
     SppfNodeKey <TExtension> right)
 {
     return(new SppfNodeKey <TExtension>(LeftExtension, right.RightExtension));
 }
Example #8
0
 public TerminalNode(SppfNodeKey <TExtension> key, TTransition token) : base(key)
 {
     Token = token;
 }
Example #9
0
 public CompleteNode(SppfNodeKey <TExtension> key)
     : base(key)
 {
 }