protected String action_translate(String act_string,int act_pos,Hashtable label_map,Hashtable label_types){
  int id_start;
  int pos;
  int len;
  String id_str;
  boolean in_id;
  StringBuffer result;
  char buffer[];
  if (act_string == null || act_string.length() == 0)   return act_string;
  len=act_string.length();
  result=new StringBuffer(len + 50);
  buffer=new char[len + 1];
  act_string.getChars(0,len,buffer,0);
  buffer[len]='\0';
  in_id=false;
  for (pos=id_start=0; pos <= len; pos++) {
    if (in_id) {
      if (!is_id_char(buffer[pos])) {
        id_str=new String(buffer,id_start,pos - id_start);
        result.append(label_translate(id_str,act_pos,label_map,label_types));
        if (buffer[pos] != '\0')         result.append(buffer,pos,1);
        in_id=false;
      }
 else {
      }
    }
 else {
      if (is_id_start(buffer[pos])) {
        in_id=true;
        id_start=pos;
      }
 else {
        if (buffer[pos] != '\0')         result.append(buffer,pos,1);
      }
    }
  }
  return result.toString();
}

protected String action_translate ( String act_string , int act_pos , Hashtable label_map , Hashtable label_types ) { int id_start ; int pos ; int len ; String id_str ; boolean in_id ; StringBuffer result ; char buffer [ ] ; if ( act_string == null || act_string . length ( ) == 0 ) return act_string ; len = act_string . length ( ) ; result = new StringBuffer ( len + 50 ) ; buffer = new char [ len + 1 ] ; act_string . getChars ( 0 , len , buffer , 0 ) ; buffer [ len ] = '\0' ; in_id = false ; for ( pos = id_start = 0 ; pos <= len ; pos ++ ) { if ( in_id ) { if ( ! is_id_char ( buffer [ pos ] ) ) { id_str = new String ( buffer , id_start , pos - id_start ) ; result . append ( label_translate ( id_str , act_pos , label_map , label_types ) ) ; if ( buffer [ pos ] != '\0' ) result . append ( buffer , pos , 1 ) ; in_id = false ; } else { } } else { if ( is_id_start ( buffer [ pos ] ) ) { in_id = true ; id_start = pos ; } else { if ( buffer [ pos ] != '\0' ) result . append ( buffer , pos , 1 ) ; } } } return result . toString ( ) ; }
translate all the label names within an action string to appropriate code .
