  public static FixedData[] parse( RDFReader rdr ) throws Exception
  {
    java.util.List< FixedData > work = new ArrayList< FixedData >();
    java.util.List< Short > temp = new ArrayList< Short >();
    String line;
    int address = -1;
    int value = -1;
    while ( true )
    {
      line = rdr.readLine();
      if ( ( line == null ) || ( line.length() == 0 ) )
        break;
      StringTokenizer st = new StringTokenizer( line, ",; \t" );
      String token = st.nextToken();
      while ( true )
      {
        if ( token.charAt( 0 ) == '=' ) 
        {
          token = token.substring( 1 );
          if ( address != -1 ) 
          {
            short[] b = new short[ temp.size() ];
            int i = 0;
            for ( Short val : temp )
            {
              b[ i++ ] = val.shortValue();
            }
            work.add( new FixedData( address, b ) );
            temp.clear();
          }
          address = value;
          value = -1;
          if ( token.length() != 0 )
            continue;
        }
        else
        {
          int equal = token.indexOf( '=' );
          String saved = token;
          if ( equal != -1 )
          {
            token = token.substring( 0, equal );
          }
          if ( value != -1 )
          {
            temp.add( new Short( ( short )value ) );
          }
          value = RDFReader.parseNumber( token );
          if ( equal != -1 )
          {
            token = saved.substring( equal );
            continue;
          }
        }
        if ( !st.hasMoreTokens() )
          break;
        token = st.nextToken();
      }
    }
    temp.add( new Short( ( short )value ) );
    short[] b = new short[ temp.size() ];
    int j = 0;
    for ( Short by : temp )
    {
      b[ j++ ] = by.shortValue();
    }
    work.add( new FixedData( address, b ) );
    return work.toArray( new FixedData[ work.size() ] );
  }

  public static FixedData[] parse( RDFReader rdr ) throws Exception
  {
    java.util.List< FixedData > work = new ArrayList< FixedData >();
    java.util.List< Short > temp = new ArrayList< Short >();
    String line;
    int address = -1;
    int value = -1;
    while ( true )
    {
      line = rdr.readLine();
      if ( ( line == null ) || ( line.length() == 0 ) )
        break;
      StringTokenizer st = new StringTokenizer( line, ",; \t" );
      String token = st.nextToken();
      while ( true )
      {
        if ( token.charAt( 0 ) == '=' ) 
        {
          token = token.substring( 1 );
          if ( address != -1 ) 
          {
            short[] b = new short[ temp.size() ];
            int i = 0;
            for ( Short val : temp )
            {
              b[ i++ ] = val.shortValue();
            }
            work.add( new FixedData( address, b ) );
            temp.clear();
          }
          address = value;
          value = -1;
          if ( token.length() != 0 )
            continue;
        }
        else
        {
          int equal = token.indexOf( '=' );
          String saved = token;
          if ( equal != -1 )
          {
            token = token.substring( 0, equal );
          }
          if ( value != -1 )
          {
            temp.add( new Short( ( short )value ) );
          }
          value = RDFReader.parseNumber( token );
          if ( equal != -1 )
          {
            token = saved.substring( equal );
            continue;
          }
        }
        if ( !st.hasMoreTokens() )
          break;
        token = st.nextToken();
      }
    }
    temp.add( new Short( ( short )value ) );
    short[] b = new short[ temp.size() ];
    int j = 0;
    for ( Short by : temp )
    {
      b[ j++ ] = by.shortValue();
    }
    if ( address != -1 )
    {
      work.add( new FixedData( address, b ) );
    }
    return work.toArray( new FixedData[ work.size() ] );
  }
