Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 public object Visit(ASTExplicitAtom node, object data)
 {
     System.Console.Out.WriteLine(IndentString() + node + " " + node.Symbol);
     ++indent;
     data = node.ChildrenAccept(this, data);
     --indent;
     return(data);
 }
Exemplo n.º 3
0
 public object Visit(ASTExplicitAtom node, object data)
 {
     data = data + node.Symbol; // TODO: ring handling!
     return(data);
 }