import java.util.*;
import Jakarta.util.FixDosOutputStream;
import java.io.*;
public abstract class AstNode {
public int getFirstLineNum() {
boolean order[];
int t, n, i, line;
order = printorder();
t = 0;
n = 0;
for ( i=0; i<order.length; i++ ) {
// if order[i] is true; visit token else visit nonterminal
Object o = order[i] ? ( Object ) tok[t] : ( Object ) arg[n];
if ( o == null )
continue;
line = order[i] ? tok[t++].lineNum() : arg[n++].getFirstLineNum();
if ( line != -1 )
return line;
}
return -1;
}
public int getLastLineNum() {
boolean order[];
int t, n, i, line;
order = printorder();
t = ( tok != null ) ? tok.length-1 : -1;
n = ( arg != null ) ? arg.length-1 : -1;
for ( i=order.length-1; i>=0; i-- ) {
// if order[i] is true; visit token else visit nonterminal
Object o = order[i] ? ( Object ) tok[t] : ( Object ) arg[n];
if ( o == null )
continue;
line = order[i] ? tok[t--].lineNum() : arg[n--].getLastLineNum();
if ( line != -1 )
return line;
}
return -1;
}
}