public object Visit(ASTExplicitAtom node, object data) { IQueryAtom atom = null; var symbol = node.Symbol; switch (symbol) { case "*": atom = new AnyAtom(builder); break; case "A": atom = new AliphaticAtom(builder); break; case "a": atom = new AromaticAtom(builder); break; case "o": case "n": case "c": case "s": case "p": case "as": case "se": var atomSymbol = symbol.Substring(0, 1).ToUpperInvariant() + symbol.Substring(1); atom = new AromaticSymbolAtom(atomSymbol, builder); break; case "H": atom = new HydrogenAtom(builder) { Symbol = symbol.ToUpperInvariant(), MassNumber = 1 }; break; case "D": atom = new HydrogenAtom(builder) { Symbol = symbol.ToUpperInvariant(), MassNumber = 2 }; break; case "T": atom = new HydrogenAtom(builder) { Symbol = symbol.ToUpperInvariant(), MassNumber = 3 }; break; default: atom = new AliphaticSymbolAtom(symbol, builder); break; } return(atom); }
public object Visit(ASTElement node, object data) { string symbol = node.Symbol; SMARTSAtom atom; switch (symbol) { case "o": case "n": case "c": case "s": case "p": case "as": case "se": string atomSymbol = symbol.Substring(0, 1).ToUpperInvariant() + symbol.Substring(1); atom = new AromaticSymbolAtom(atomSymbol, builder); break; default: atom = new AliphaticSymbolAtom(symbol, builder); break; } return(atom); }