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); }
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); }
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); }
public IntermediateNode(SppfNodeKey <TExtension> key) : base(key) { }
public ProducingNode(SppfNodeKey <TExtension> key) : base(key) { myChildren = new HashSet <PackedNode <TExtension> >(); }
public NonPackedNode(SppfNodeKey <TExtension> key) { Key = key; }
public SppfNodeKey <TExtension> Concat( SppfNodeKey <TExtension> right) { return(new SppfNodeKey <TExtension>(LeftExtension, right.RightExtension)); }
public TerminalNode(SppfNodeKey <TExtension> key, TTransition token) : base(key) { Token = token; }
public CompleteNode(SppfNodeKey <TExtension> key) : base(key) { }