/*
* Copyright (c) 2013-2017 Cinchapi Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.cinchapi.concourse.lang.ast;
import javax.annotation.concurrent.Immutable;
import com.cinchapi.concourse.lang.ConjunctionSymbol;
import com.google.common.collect.Iterables;
/**
* A {@link ConjunctionTree} is an {@link AST} that holds a
* {@link ConjunctionSymbol} and is flanked on the left and right, by exactly
* two other {@link AST} nodes. The {@link ConjunctionTree} is used to represent
* an expression that connects two other expressions in a logical manner (e.g
* AND/OR)
*
* @author Jeff Nelson
*/
@Immutable
public class ConjunctionTree extends AST {
/**
* Construct a new instance.
*
* @param symbol
* @param children
*/
protected ConjunctionTree(ConjunctionSymbol symbol, AST left, AST right) {
super(symbol, left, right);
}
/**
* Return the left child of this {@link ConjunctionTree}.
*
* @return the left child
*/
public AST getLeftChild() {
return Iterables.get(children(), 0);
}
/**
* Return the right child of this {@link ConjunctionTree}.
*
* @return the right child
*/
public AST getRightChild() {
return Iterables.get(children(), 1);
}
}