private ParseNode[] parseArgs(Entry inEntry,char close) throws ConfigurationException, IOException {
  List args=new ArrayList(1);
  int t=st.nextToken();
  boolean arrayArgs=close == '}';
  if (t != close) {
    if (t == ',' && arrayArgs) {
      t=st.nextToken();
      if (t != close) {
        syntax("'" + close + "'");
      }
    }
 else {
      st.pushBack();
      while (true) {
        args.add(parseExpr(inEntry));
        t=st.nextToken();
        if (t == close) {
          break;
        }
 else         if (t != ',') {
          syntax("',' or '" + close + "'");
        }
 else         if (arrayArgs) {
          t=st.nextToken();
          if (t == close) {
            break;
          }
 else {
            st.pushBack();
          }
        }
      }
    }
  }
  return (ParseNode[])args.toArray(new ParseNode[args.size()]);
}

private ParseNode [ ] parseArgs ( Entry inEntry , char close ) throws ConfigurationException , IOException { List args = new ArrayList ( 1 ) ; int t = st . nextToken ( ) ; boolean arrayArgs = close == '}' ; if ( t != close ) { if ( t == ',' && arrayArgs ) { t = st . nextToken ( ) ; if ( t != close ) { syntax ( "'" + close + "'" ) ; } } else { st . pushBack ( ) ; while ( true ) { args . add ( parseExpr ( inEntry ) ) ; t = st . nextToken ( ) ; if ( t == close ) { break ; } else if ( t != ',' ) { syntax ( "',' or '" + close + "'" ) ; } else if ( arrayArgs ) { t = st . nextToken ( ) ; if ( t == close ) { break ; } else { st . pushBack ( ) ; } } } } } return ( ParseNode [ ] ) args . toArray ( new ParseNode [ args . size ( ) ] ) ; }
parses an exprlist and the trailing token specified by close .
