public bool TryGetSymbolTable(string key, out DogeSymbolTable?symbolTable) { var split = key.Split('.'); return(split.Length > 1 ? TryGetSymbolTable(split, out symbolTable) : SymbolTables.TryGetValue(key, out symbolTable)); }
public DogeSymbolTable GetOrAddSymbolTable(string key, DogeSymbolTableType symbolTableType) => SymbolTables.TryGetValue(key, out var newSymbolTable) ? newSymbolTable : (SymbolTables[key] = new DogeSymbolTable( key, FullName.With(key), symbolTableType, this));
public bool TryGetSymbolTable(ICollection <string> key, out DogeSymbolTable?symbolTable) { var first = key.First(); if (key.Count == 1) { return(TryGetSymbolTable(first, out symbolTable)); } if (SymbolTables.TryGetValue(first, out var value)) { return(value.TryGetSymbolTable(key.Skip(1).ToArray(), out symbolTable)); } symbolTable = null; return(false); }