public string this[ILanguageSymbol symbol] { get { var symbolAccessName = symbol.SymbolAccessName; string mathName; return (_namesDictionary.TryGetValue(symbolAccessName, out mathName) ? mathName : String.Empty); } set { var symbolAccessName = symbol.SymbolAccessName; var mathName = value.Trim(); if (String.IsNullOrEmpty(mathName)) { _namesDictionary.Remove(symbolAccessName); return; } if (_namesDictionary.ContainsKey(symbolAccessName)) { _namesDictionary[symbolAccessName] = mathName; } else { _namesDictionary.Add(symbolAccessName, mathName); } } }
internal static AstSymbol ToAstSymbol(this ILanguageSymbol symbol) { var s1 = symbol as GMacNamespace; if (ReferenceEquals(s1, null) == false) { return(new AstNamespace(s1)); } var s2 = symbol as GMacFrame; if (ReferenceEquals(s2, null) == false) { return(new AstFrame(s2)); } var s3 = symbol as GMacFrameMultivector; if (ReferenceEquals(s3, null) == false) { return(new AstFrameMultivector(s3)); } var s4 = symbol as GMacFrameBasisVector; if (ReferenceEquals(s4, null) == false) { return(new AstFrameBasisVector(s4)); } var s5 = symbol as GMacFrameSubspace; if (ReferenceEquals(s5, null) == false) { return(new AstFrameSubspace(s5)); } var s6 = symbol as GMacConstant; if (ReferenceEquals(s6, null) == false) { return(new AstConstant(s6)); } var s7 = symbol as GMacStructure; if (ReferenceEquals(s7, null) == false) { return(new AstStructure(s7)); } var s8 = symbol as SymbolStructureDataMember; if (ReferenceEquals(s8, null) == false) { return(new AstStructureDataMember(s8)); } var s9 = symbol as GMacMacro; if (ReferenceEquals(s9, null) == false) { return(new AstMacro(s9)); } var s10 = symbol as SymbolProcedureParameter; if (ReferenceEquals(s10, null) == false) { return(new AstMacroParameter(s10)); } var s11 = symbol as SymbolLocalVariable; if (ReferenceEquals(s11, null) == false) { return(new AstLocalVariable(s11)); } var s12 = symbol as GMacMultivectorTransform; if (ReferenceEquals(s12, null) == false) { return(new AstTransform(s12)); } return(null); }
/// <summary> /// Get the qualified access name of this symbol relative to the access name of the given symbol /// </summary> /// <param name="symbol"></param> /// <returns></returns> internal string RelativeAccessName(ILanguageSymbol symbol) { return(RelativeAccessName(symbol.SymbolAccessName)); }