/**
 * Derived class that represents a subroutine declaration in the SILLY language.
 *   @author Dave Reed
 *   @version 2/20/12
 */
public class Sub extends Statement {

    /**
     * Reads in a subroutine declaration from the specified stream
     *   @param input the stream to be read from
     */
	public Sub(TokenStream input) throws Exception {

	}
	
	/**
	 * Executes the current subroutine declaration (i.e., stores it in the subroutine table).
	 *   @param bindings the current variable and subroutine bindings
	 */
	public void execute(Bindings bindings) {	    
	
	}
    
	/**
	 * Accesses the type of the current statement.
	 *   @return this statement's type, i.e., Statement.Type.SUB
	 */
	public Statement.Type getType() {
	    return null;
	}

	/**
	 * Converts the current subroutine declaration into a String.
	 *   @return the String representation of this statement
	 */
    public String toString() {
        return "";
    }
    
    /**
     * Calls the subroutine, executing the statements in a new scope.
     *   @param inputs values corresponding to the subroutine parameters
     *   @param bindings the current variable and subroutine bindings
	 */
    public void callSub(ArrayList<Value> inputs, Bindings bindings) throws Exception {

	}   
}
