private int CompareSymbol(SymbolDatum x, SymbolDatum y) { if (!x.IsInterned) { if (!y.IsInterned) { return(Comparer <int> .Default.Compare(x.ID, y.ID)); } else { return(-1); } } else { if (!y.IsInterned) { return(1); } else { return(string.Compare(x.Name, y.Name, StringComparison.Ordinal)); } } }
public string VisitSymbol(SymbolDatum d) { if (d.IsInterned) { return("y" + d.Name); } else { return("u" + d.ID); } }
public bool VisitSymbol(SymbolDatum d) { bw.Write(B_SYMBOL); BigInteger index = ((IntDatum)(symbolMap[d])).Value; if (index >= (BigInteger)(int.MinValue) && index <= (BigInteger)(int.MaxValue)) { bw.Write(unchecked ((int)index)); } else { throw new IndexOutOfRangeException("Index doesn't fit in a 32-bit integer"); } return(true); }
public string VisitSymbol(SymbolDatum d) { if (d.IsInterned) { var result = CharParserContext.TryParse(Parser.ParseUnquotedSymbolThenEof, d.Name); if (result is ParseSuccess <string> ) { return(d.Name); } else { return(d.Name.SymbolQuoted()); } } else { return("g$" + d.ID); } }
private bool EqualSymbol(SymbolDatum x, SymbolDatum y) { if (x.IsInterned != y.IsInterned) { return(false); } if (x.IsInterned) { return(string.Compare ( x.Name, y.Name, StringComparison.Ordinal ) == 0); } else { return(x.ID == y.ID); } }
public State VisitSymbol(State state, SymbolDatum d) => state;
public SetDatum VisitSymbol(SymbolDatum d) => SetDatum.Empty;
public SetDatum VisitSymbol(SymbolDatum d) { return(SetDatum.Singleton(d)); }