package ppg.atoms;
import java.util.*;
public class SymbolList
{
public static final int TERMINAL = 0;
public static final int NONTERMINAL = 1;
private int variety;
private String type;
private Vector symbols;
public SymbolList(int which, String type, Vector syms) {
variety = which;
this.type = type;
symbols = syms;
}
public boolean dropSymbol (String gs) {
for (int i=0; i < symbols.size(); i++) {
if (gs.equals(symbols.elementAt(i))) {
symbols.removeElementAt(i);
// assume we do not have duplicates
return true;
}
}
return false;
}
public Object clone() {
String newType = (type == null) ? null : type.toString();
Vector newSyms = new Vector();
for (int i=0; i < symbols.size(); i++) {
newSyms.addElement( ((String)symbols.elementAt(i)).toString() );
}
return new SymbolList(variety, newType, newSyms);
}
public String toString() {
String result = "";
if (symbols.size() > 0) {
switch (variety) {
case (TERMINAL): result = "terminal "; break;
case (NONTERMINAL): result = "non terminal "; break;
}
if (type != null)
result += type + " ";
int size = symbols.size();
for (int i=0; i < size; i++) {
result += (String)symbols.elementAt(i);
if (i < size - 1)
result += ", ";
}
result += ";";
}
return result;
}
}