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); }
public IEnumerable <DogeSymbol> ResolveSymbolCandidates(IList <string> name, Predicate <DogeSymbol> symbolConditions, Predicate <DogeSymbolTableType> symbolTableTypeCondition) { var candidates = SymbolTables .Where(x => symbolTableTypeCondition(x.Value.SymbolTableType)) .SelectMany(x => x.Value.ResolveSymbolCandidates(name, symbolConditions, symbolTableTypeCondition)); if (symbolTableTypeCondition(SymbolTableType)) { candidates = candidates .Concat(Symbols .Select(x => x.Value) .Where(x => x.FullName.EndsWith(name) && symbolConditions(x))); } return(candidates); }
void ImplReadEndNest() { NestedBinXml nested = this.prevNameInfo; this.symbolTables = nested.symbolTables; this.docState = nested.docState; this.prevNameInfo = nested.next; }
public NestedBinXml(SymbolTables symbolTables, int docState, NestedBinXml next) { this.symbolTables = symbolTables; this.docState = docState; this.next = next; }
private void ImplReadEndNest() { NestedBinXml prevNameInfo = this.prevNameInfo; this.symbolTables = prevNameInfo.symbolTables; this.docState = prevNameInfo.docState; this.prevNameInfo = prevNameInfo.next; }
private void ImplReadEndNest() { NestedBinXml nested = _prevNameInfo; _symbolTables = nested.symbolTables; _docState = nested.docState; _prevNameInfo = nested.next; }
public SymbolTableManager(SymbolTables tables) { this.tables = tables; this.currentTable = null; }
public SymbolTableBuildingVisitor() { this.symbolTables = new SymbolTables(); this.currentTable = null; this.hook = new ErrorHook(); }