import java.util.*; import Jakarta.util.*; public class order implements GVisitor { int Counter; public void outln(String s) { System.out.println(s); } public void out(String s) { System.out.print(s); } public void action( grammar n ) { // count number of primitive tokens in grammar Counter = 0; Iterator i = variable.Vtable.values().iterator(); while ( i.hasNext() ) { variable v = ( variable ) i.next(); if (v.type == variable.Prim) Counter++; } //outln("---------Variable Rankings---------------------------"); n.traverse(this); //outln("---------End Var Rankings---------------------------"); } public void action( optprim n ) { n.var.rank = Counter--; //outln(n.var.rank + "\t " + n.name); } public void action( optprod n ) { (n.prod).traverse(this); } public void action( pattern n ) { n.traverse(this); } public void action( plus n ) { (n.prod).traverse(this); } public void action( prim n ) { n.var.rank = Counter--; //outln(n.var.rank + "\t " + n.name); } public void action( prod n ) { (n.prod).traverse(this); } public void action( star n ) { (n.prod).traverse(this); } public void action( production n ) { n.traverse(this); } public void action( term n ) { Util.fatalError("should never call ordergs.action(term)"); } public void action( variable n ) { Util.fatalError("should never call ordergs.action(variable)"); } }