package edu.montana.cs.fafnir.cs550.hw2;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
final class Rule {
private Nonterminal leftside;
private ArrayList rightside;
Rule(Nonterminal leftside, List rightside) {
this.leftside = leftside;
this.rightside = new ArrayList(rightside);
}
Nonterminal getLeftSide() {
return leftside;
}
int rightSideSize() {
return rightside.size();
}
Symbol getRightSide(int index) {
return (Symbol)rightside.get(index);
}
Iterator getRightSideIterator() {
return rightside.iterator();
}
public String toString() {
StringBuffer result = new StringBuffer(leftside.toString() + " --> ");
for (Iterator i = rightside.iterator(); i.hasNext(); ) {
result.append(((Symbol)i.next()).toString() + ' ');
}
return result.toString();
}
}