Пример #1
0
        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));
        }
Пример #2
0
 public DogeSymbolTable GetOrAddSymbolTable(string key, DogeSymbolTableType symbolTableType) =>
 SymbolTables.TryGetValue(key, out var newSymbolTable)
         ? newSymbolTable
         : (SymbolTables[key]
                = new DogeSymbolTable(
                      key,
                      FullName.With(key),
                      symbolTableType,
                      this));
Пример #3
0
        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);
        }