/*
 * Tape.java  
 *
 * Copyright 2001
 * College of Computer Science
 * Northeastern University
 * Boston, MA  02115
 *
 * This software may be used for educational purposes as long as
 * this copyright notice is retained intact at the top of all files.
 *
 * Should this software be modified, the words "Modified from 
 * Original" must be included as a comment below this notice.
 *
 * All publication rights are retained.  This software or its 
 * documentation may not be published in any media either in whole
 * or in part without explicit permission.
 *
 * Contact information:
 *   Richard Rasala    rasala@ccs.neu.edu
 *   Viera Proulx      vkp@ccs.neu.edu
 *   Jeff Raab         jmr@ccs.neu.edu
 *   Jennifer McDonald jenimac@ccs.neu.edu
 * 
 * Telephone:          617-373-2462
 *
 * This software was created with support from Northeastern 
 * University and from NSF grant DUE-9950829.
 */

import edu.neu.ccs.*;
import java.text.ParseException;

public class Tape {

	// tape is an array of Symbols
	Stringable[] tape;

	public Tape(String s) {

		tape = new Stringable[s.length()];
	
		for(int i = 0; i < s.length(); i++)
			tape[i] = new Symbol(s.charAt(i));
	}

	public Symbol read(int position) {
	
		if (atEnd(position)) 
			return Symbol.epsilon();
		else
			return (Symbol) tape[position];
	}

	public int length() {
		return tape.length;
	}
	
	public boolean atEnd(int position) {
		return !(position < tape.length); 
	}
	
	public String toStringData() {
		
		String s = "";
		
		for(int i = 0; i < tape.length; i++) {
			s = s + tape[i].toStringData();
		}
		return s;
	}
}
