/* This file was generated by SableCC (http://www.sablecc.org/). */

package analysis;

import java.util.*;
import node.*;

public class DepthFirstAdapter extends AnalysisAdapter
{
    public void inStart(Start node)
    {
        defaultIn(node);
    }

    public void outStart(Start node)
    {
        defaultOut(node);
    }

    public void defaultIn(@SuppressWarnings("unused") Node node)
    {
        // Do nothing
    }

    public void defaultOut(@SuppressWarnings("unused") Node node)
    {
        // Do nothing
    }

    @Override
    public void caseStart(Start node)
    {
        inStart(node);
        node.getPExpr().apply(this);
        node.getEOF().apply(this);
        outStart(node);
    }

    public void inAExpr(AExpr node)
    {
        defaultIn(node);
    }

    public void outAExpr(AExpr node)
    {
        defaultOut(node);
    }

    @Override
    public void caseAExpr(AExpr node)
    {
        inAExpr(node);
        if(node.getNumber() != null)
        {
            node.getNumber().apply(this);
        }
        if(node.getTail() != null)
        {
            node.getTail().apply(this);
        }
        outAExpr(node);
    }

    public void inAOneTail(AOneTail node)
    {
        defaultIn(node);
    }

    public void outAOneTail(AOneTail node)
    {
        defaultOut(node);
    }

    @Override
    public void caseAOneTail(AOneTail node)
    {
        inAOneTail(node);
        if(node.getQuestion() != null)
        {
            node.getQuestion().apply(this);
        }
        if(node.getL() != null)
        {
            node.getL().apply(this);
        }
        if(node.getColon() != null)
        {
            node.getColon().apply(this);
        }
        if(node.getR() != null)
        {
            node.getR().apply(this);
        }
        outAOneTail(node);
    }

    public void inATwoTail(ATwoTail node)
    {
        defaultIn(node);
    }

    public void outATwoTail(ATwoTail node)
    {
        defaultOut(node);
    }

    @Override
    public void caseATwoTail(ATwoTail node)
    {
        inATwoTail(node);
        outATwoTail(node);
    }
}
