Changeset 2934


Ignore:
Timestamp:
Mar 18, 2013, 2:40:51 PM (5 years ago)
Author:
lindanl
Message:

Calculate token lenght

Location:
proto/PDF
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • proto/PDF/cb_pablo.py

    r2915 r2934  
    327327        keywords_starts = (lex.Regular &~ pablo.Advance(lex.Regular)) &~ out_Callouts.mask
    328328        keywords_follows = pablo.ScanThru(keywords_starts, lex.Regular)
    329         marker.starts |= keywords_starts
     329        marker.starts |= keywords_starts       
     330        marker.ends |= keywords_follows
    330331       
    331332       
  • proto/PDF/cb_template.cpp

    r2915 r2934  
    286286static inline void Postprocessing(char* cb, int cb_blocks, Marker * marker, int * del_sum){   
    287287     
     288  int pos = 0;
     289  int at_start = 1;
    288290  for(int i=0; i<cb_blocks; i++){
    289291    if(bitblock::any(marker[i].starts)){
    290       BitBlockForwardIterator iter;
    291       iter.init(&(marker[i].starts));
     292      BitBlockForwardIterator iter_start;
    292293      BitBlockForwardIterator iter_end;
    293       while(iter != iter_end) {
    294         int pos = i*BLOCK_SIZE + (*iter);
    295         pos = pos - del_sum[pos/16];
    296         if (cb[pos]== 0x2f){
    297           tokenArray[token_idx].type = name_token;
    298           tokenArray[token_idx].token.char_ptr = &cb[pos];
    299         }
    300         else if(pos>0 && cb[pos-1]== 0x28){
    301           tokenArray[token_idx].type = str_token;
    302           tokenArray[token_idx].token.char_ptr = &cb[pos];
    303         }
    304         else if (cb[pos]== 0x0c){
    305           tokenArray[token_idx].type = hex_token;
    306           tokenArray[token_idx].token.char_ptr = &cb[pos];
    307         }
    308         else if (cb[pos]== '-' || cb[pos]== '+' || (cb[pos]>='0'&&cb[pos]<='9')){
    309           Digit_postprocessing(cb, pos);
    310         }
    311         else {
    312           tokenArray[token_idx].type = kw_token;
    313           tokenArray[token_idx].token.char_ptr = &cb[pos];       
    314         }
    315         iter++;
    316         token_idx++;
     294      iter_start.init(&(marker[i].starts));
     295      iter_end.init(&(marker[i].ends));
     296      BitBlockForwardIterator end;
     297      while(iter_start != end || iter_end != end) {
     298        if(at_start){
     299          pos = i*BLOCK_SIZE + (*iter_start);
     300          pos = pos - del_sum[pos/16];
     301          if (cb[pos]== 0x2f){
     302            tokenArray[token_idx].type = name_token;
     303            tokenArray[token_idx].token.char_ptr = &cb[pos];
     304          }
     305          else if(pos>0 && cb[pos-1]== 0x28){
     306            tokenArray[token_idx].type = str_token;
     307            tokenArray[token_idx].token.char_ptr = &cb[pos];
     308          }
     309          else if (cb[pos]== 0x0c){
     310            tokenArray[token_idx].type = hex_token;
     311            tokenArray[token_idx].token.char_ptr = &cb[pos];
     312          }
     313          else if (cb[pos]== '-' || cb[pos]== '+' || (cb[pos]>='0'&&cb[pos]<='9')){
     314            Digit_postprocessing(cb, pos);
     315          }
     316          else {
     317            tokenArray[token_idx].type = kw_token;
     318            tokenArray[token_idx].token.char_ptr = &cb[pos];     
     319          }
     320          iter_start++;
     321          at_start = 0;
     322        }
     323        else{     
     324          tokenArray[token_idx].len =  i*BLOCK_SIZE + (*iter_end) - pos;
     325          iter_end++;
     326          token_idx++;   
     327          at_start = 1;
     328        }
    317329      }
    318330    }
     
    444456//       printf("%i,%i\n",numbers[i],dec_pl[i]);
    445457   
    446 //     for(int i=0; i<10;i++){
    447 //       if(tokenArray[i].type==str_token)
    448 //      printf("String: %s\n",tokenArray[i].token.char_ptr);
    449 //   
    450 //       if(tokenArray[i].type==hex_token)
    451 //      printf("Hex: %s\n",tokenArray[i].token.char_ptr);
    452 //       
    453 //       if(tokenArray[i].type==name_token)
    454 //      printf("Name: %s\n",tokenArray[i].token.char_ptr);
    455 //       
    456 //       if(tokenArray[i].type==int_token)
    457 //      printf("Number: %i\n",numbers[tokenArray[i].token.idx]);
    458 //       
    459 //       if(tokenArray[i].type==flt_token)
    460 //      printf("Number: %i\n",numbers[tokenArray[i].token.idx]);
    461 //       
    462 //       if(tokenArray[i].type==kw_token)
    463 //      printf("Keyword: %s\n",tokenArray[i].token.char_ptr);
    464 //
    465 //     }
     458    for(int i=0; i<10;i++){
     459//         cout << tokenArray[i].len<<endl;
     460      if(tokenArray[i].type==str_token){
     461        printf("String: ");
     462        for(int j=0; j<tokenArray[i].len; j++)
     463          printf("%c",tokenArray[i].token.char_ptr[j]);
     464        printf("\n");
     465      }
     466 
     467      if(tokenArray[i].type==hex_token)
     468        printf("Hex: %s\n",tokenArray[i].token.char_ptr);
     469     
     470      if(tokenArray[i].type==name_token){
     471        printf("Name: ");
     472        for(int j=0; j<tokenArray[i].len; j++)
     473          printf("%c",tokenArray[i].token.char_ptr[j]);
     474        printf("\n");
     475      }
     476     
     477      if(tokenArray[i].type==int_token)
     478        printf("Number: %i\n",numbers[tokenArray[i].token.idx]);
     479     
     480      if(tokenArray[i].type==flt_token)
     481        printf("Number: %i\n",numbers[tokenArray[i].token.idx]);
     482     
     483      if(tokenArray[i].type==kw_token){
     484        printf("Key Word: ");
     485        for(int j=0; j<tokenArray[i].len; j++)
     486          printf("%c",tokenArray[i].token.char_ptr[j]);
     487        printf("\n");
     488      }
     489
     490    }
    466491     
    467492 
Note: See TracChangeset for help on using the changeset viewer.