/* $Revision$ $Author$ $Date$
*
* Copyright (C) 2004-2007 The Chemistry Development Kit (CDK) project
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
* (or see http://www.gnu.org/copyleft/lesser.html)
*/
package org.openscience.cdk.smiles.smarts.parser.visitor;
import org.openscience.cdk.smiles.smarts.parser.*;
/**
* An AST Tree visitor. It dumps the whole AST tree into console
*
* @author Dazhi Jiao
* @cdk.created 2007-04-24
* @cdk.module smarts
* @cdk.githash
* @cdk.keyword SMARTS AST
*/
public class SmartsDumpVisitor implements SMARTSParserVisitor {
public Object visit(ASTRingIdentifier node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTAtom node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
private int indent = 0;
private String indentString() {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < indent; ++i) {
sb.append(" ");
}
return sb.toString();
}
public Object visit(SimpleNode node, Object data) {
System.out.println(indentString() + node +
": acceptor not unimplemented in subclass?");
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTStart node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTReaction node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTGroup node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTSmarts node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTNotBond node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTSimpleBond node, Object data) {
System.out.println(indentString() + node + " [" + node.getBondType() + "]");
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTImplicitHighAndBond node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTLowAndBond node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTOrBond node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTExplicitHighAndBond node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTElement node, Object data) {
System.out.println(indentString() + node + " " + node.getSymbol());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTRecursiveSmartsExpression node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTPrimitiveAtomExpression node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTTotalHCount node, Object data) {
System.out.println(indentString() + node + " " + node.getCount());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTImplicitHCount node, Object data){
System.out.println(indentString() + node + " " + node.getCount());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTExplicitConnectivity node, Object data){
System.out.println(indentString() + node + " " + node.getNumOfConnection());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTAtomicNumber node, Object data){
System.out.println(indentString() + node + " " + node.getNumber());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTHybrdizationNumber node, Object data) {
System.out.println(indentString() + node + " " + node.getHybridizationNumber());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTCharge node, Object data){
System.out.println(indentString() + node + " " + node.getCharge());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTRingConnectivity node, Object data){
System.out.println(indentString() + node + " " + node.getNumOfConnection());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTPeriodicGroupNumber node, Object data) {
System.out.println(indentString() + node + " " + node.getGroupNumber());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTTotalConnectivity node, Object data){
System.out.println(indentString() + node + " " + node.getNumOfConnection());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTValence node, Object data){
System.out.println(indentString() + node + " " + node.getOrder());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTRingMembership node, Object data){
System.out.println(indentString() + node + " " + node.getNumOfMembership());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTSmallestRingSize node, Object data){
System.out.println(indentString() + node + " " + node.getSize());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTAliphatic node, Object data){
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTNonCHHeavyAtom node, Object data) {
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTAromatic node, Object data){
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTAnyAtom node, Object data){
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTAtomicMass node, Object data){
System.out.println(indentString() + node + " " + node.getMass());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTChirality node, Object data){
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTLowAndExpression node, Object data){
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTOrExpression node, Object data){
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTNotExpression node, Object data){
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTExplicitHighAndExpression node, Object data){
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTImplicitHighAndExpression node, Object data){
System.out.println(indentString() + node);
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
public Object visit(ASTExplicitAtom node, Object data){
System.out.println(indentString() + node + " " + node.getSymbol());
++indent;
data = node.childrenAccept(this, data);
--indent;
return data;
}
}