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

package analysis;

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

public class ReversedDepthFirstAdapter 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.getEOF().apply(this);
        node.getPAdditive().apply(this);
        outStart(node);
    }

    public void inAAddAdditive(AAddAdditive node)
    {
        defaultIn(node);
    }

    public void outAAddAdditive(AAddAdditive node)
    {
        defaultOut(node);
    }

    @Override
    public void caseAAddAdditive(AAddAdditive node)
    {
        inAAddAdditive(node);
        if(node.getRight() != null)
        {
            node.getRight().apply(this);
        }
        if(node.getAdd() != null)
        {
            node.getAdd().apply(this);
        }
        if(node.getLeft() != null)
        {
            node.getLeft().apply(this);
        }
        outAAddAdditive(node);
    }

    public void inASubAdditive(ASubAdditive node)
    {
        defaultIn(node);
    }

    public void outASubAdditive(ASubAdditive node)
    {
        defaultOut(node);
    }

    @Override
    public void caseASubAdditive(ASubAdditive node)
    {
        inASubAdditive(node);
        if(node.getRight() != null)
        {
            node.getRight().apply(this);
        }
        if(node.getSub() != null)
        {
            node.getSub().apply(this);
        }
        if(node.getLeft() != null)
        {
            node.getLeft().apply(this);
        }
        outASubAdditive(node);
    }

    public void inAOneAdditive(AOneAdditive node)
    {
        defaultIn(node);
    }

    public void outAOneAdditive(AOneAdditive node)
    {
        defaultOut(node);
    }

    @Override
    public void caseAOneAdditive(AOneAdditive node)
    {
        inAOneAdditive(node);
        if(node.getMultiplicative() != null)
        {
            node.getMultiplicative().apply(this);
        }
        outAOneAdditive(node);
    }

    public void inAMulMultiplicative(AMulMultiplicative node)
    {
        defaultIn(node);
    }

    public void outAMulMultiplicative(AMulMultiplicative node)
    {
        defaultOut(node);
    }

    @Override
    public void caseAMulMultiplicative(AMulMultiplicative node)
    {
        inAMulMultiplicative(node);
        if(node.getRight() != null)
        {
            node.getRight().apply(this);
        }
        if(node.getMul() != null)
        {
            node.getMul().apply(this);
        }
        if(node.getLeft() != null)
        {
            node.getLeft().apply(this);
        }
        outAMulMultiplicative(node);
    }

    public void inADivMultiplicative(ADivMultiplicative node)
    {
        defaultIn(node);
    }

    public void outADivMultiplicative(ADivMultiplicative node)
    {
        defaultOut(node);
    }

    @Override
    public void caseADivMultiplicative(ADivMultiplicative node)
    {
        inADivMultiplicative(node);
        if(node.getRight() != null)
        {
            node.getRight().apply(this);
        }
        if(node.getDiv() != null)
        {
            node.getDiv().apply(this);
        }
        if(node.getLeft() != null)
        {
            node.getLeft().apply(this);
        }
        outADivMultiplicative(node);
    }

    public void inAOneMultiplicative(AOneMultiplicative node)
    {
        defaultIn(node);
    }

    public void outAOneMultiplicative(AOneMultiplicative node)
    {
        defaultOut(node);
    }

    @Override
    public void caseAOneMultiplicative(AOneMultiplicative node)
    {
        inAOneMultiplicative(node);
        if(node.getPrimary() != null)
        {
            node.getPrimary().apply(this);
        }
        outAOneMultiplicative(node);
    }

    public void inAParPrimary(AParPrimary node)
    {
        defaultIn(node);
    }

    public void outAParPrimary(AParPrimary node)
    {
        defaultOut(node);
    }

    @Override
    public void caseAParPrimary(AParPrimary node)
    {
        inAParPrimary(node);
        if(node.getRpar() != null)
        {
            node.getRpar().apply(this);
        }
        if(node.getAdditive() != null)
        {
            node.getAdditive().apply(this);
        }
        if(node.getLpar() != null)
        {
            node.getLpar().apply(this);
        }
        outAParPrimary(node);
    }

    public void inANumPrimary(ANumPrimary node)
    {
        defaultIn(node);
    }

    public void outANumPrimary(ANumPrimary node)
    {
        defaultOut(node);
    }

    @Override
    public void caseANumPrimary(ANumPrimary node)
    {
        inANumPrimary(node);
        if(node.getNumber() != null)
        {
            node.getNumber().apply(this);
        }
        outANumPrimary(node);
    }
}
