/[jscoverage]/trunk/highlight.c
ViewVC logotype

Diff of /trunk/highlight.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 457 by siliconforks, Wed Feb 18 16:08:33 2009 UTC revision 458 by siliconforks, Tue Sep 22 20:12:30 2009 UTC
# Line 43  Line 43 
43    CLASS_CBRACKET    CLASS_CBRACKET
44  };  };
45    
46  static const char * get_class_name(enum Class class) {  static const char * get_class_name(enum Class c) {
47    switch (class) {    switch (c) {
48    case CLASS_NONE:    case CLASS_NONE:
49      abort();      abort();
50      break;      break;
# Line 90  Line 90 
90  static uint16_t column_num;  static uint16_t column_num;
91  static enum Class current_class;  static enum Class current_class;
92    
93  static void output_character(jschar c, enum Class class) {  static void output_character(jschar c, enum Class class_) {
94    if (c == '\r' || c == '\n' || c == 0x2028 || c == 0x2029) {    if (c == '\r' || c == '\n' || c == 0x2028 || c == 0x2029) {
95      class = CLASS_NONE;      class_ = CLASS_NONE;
96    }    }
97    
98    if (class != current_class) {    if (class_ != current_class) {
99      /* output the end tag */      /* output the end tag */
100      if (current_class != CLASS_NONE) {      if (current_class != CLASS_NONE) {
101        Stream_write_string(g_output, "</span>");        Stream_write_string(g_output, "</span>");
102      }      }
103    
104      current_class = class;      current_class = class_;
105    
106      /* output the start tag */      /* output the start tag */
107      if (current_class != CLASS_NONE) {      if (current_class != CLASS_NONE) {
108        Stream_printf(g_output, "<span class=\"%s\">", get_class_name(class));        Stream_printf(g_output, "<span class=\"%s\">", get_class_name(class_));
109      }      }
110    }    }
111    
# Line 243  Line 243 
243      mark_nontoken_chars(t.pos.begin.lineno, t.pos.begin.index);      mark_nontoken_chars(t.pos.begin.lineno, t.pos.begin.index);
244    
245      /* mark the token */      /* mark the token */
246      enum Class class;      enum Class class_;
247      switch (tt) {      switch (tt) {
248      case TOK_ERROR:      case TOK_ERROR:
249      case TOK_EOF:      case TOK_EOF:
250        abort();        abort();
251      case TOK_EOL:      case TOK_EOL:
252        class = CLASS_NONE;        class_ = CLASS_NONE;
253        token_stream.flags |= TSF_OPERAND;        token_stream.flags |= TSF_OPERAND;
254        break;        break;
255      case TOK_SEMI:      case TOK_SEMI:
# Line 269  Line 269 
269      case TOK_MINUS:      case TOK_MINUS:
270      case TOK_STAR:      case TOK_STAR:
271      case TOK_DIVOP:      case TOK_DIVOP:
272        class = CLASS_SYMBOL;        class_ = CLASS_SYMBOL;
273        token_stream.flags |= TSF_OPERAND;        token_stream.flags |= TSF_OPERAND;
274        break;        break;
275      case TOK_UNARYOP:      case TOK_UNARYOP:
# Line 278  Line 278 
278        case JSOP_POS:        case JSOP_POS:
279        case JSOP_NOT:        case JSOP_NOT:
280        case JSOP_BITNOT:        case JSOP_BITNOT:
281          class = CLASS_SYMBOL;          class_ = CLASS_SYMBOL;
282          token_stream.flags |= TSF_OPERAND;          token_stream.flags |= TSF_OPERAND;
283          break;          break;
284        case JSOP_TYPEOF:        case JSOP_TYPEOF:
285          class = CLASS_KEYWORD;          class_ = CLASS_KEYWORD;
286          token_stream.flags |= TSF_OPERAND;          token_stream.flags |= TSF_OPERAND;
287          break;          break;
288        case JSOP_VOID:        case JSOP_VOID:
289          class = CLASS_TYPE;          class_ = CLASS_TYPE;
290          token_stream.flags |= TSF_OPERAND;          token_stream.flags |= TSF_OPERAND;
291          break;          break;
292        default:        default:
# Line 295  Line 295 
295        break;        break;
296      case TOK_INC:      case TOK_INC:
297      case TOK_DEC:      case TOK_DEC:
298        class = CLASS_SYMBOL;        class_ = CLASS_SYMBOL;
299        /* token_stream.flags does not change w.r.t. TSF_OPERAND */        /* token_stream.flags does not change w.r.t. TSF_OPERAND */
300        break;        break;
301      case TOK_DOT:      case TOK_DOT:
302      case TOK_LB:      case TOK_LB:
303        class = CLASS_SYMBOL;        class_ = CLASS_SYMBOL;
304        token_stream.flags |= TSF_OPERAND;        token_stream.flags |= TSF_OPERAND;
305        break;        break;
306      case TOK_RB:      case TOK_RB:
307        class = CLASS_SYMBOL;        class_ = CLASS_SYMBOL;
308        token_stream.flags &= ~TSF_OPERAND;        token_stream.flags &= ~TSF_OPERAND;
309        break;        break;
310      case TOK_LC:      case TOK_LC:
311        class = CLASS_CBRACKET;        class_ = CLASS_CBRACKET;
312        token_stream.flags |= TSF_OPERAND;        token_stream.flags |= TSF_OPERAND;
313        break;        break;
314      case TOK_RC:      case TOK_RC:
315        class = CLASS_CBRACKET;        class_ = CLASS_CBRACKET;
316        token_stream.flags &= ~TSF_OPERAND;        token_stream.flags &= ~TSF_OPERAND;
317        break;        break;
318      case TOK_LP:      case TOK_LP:
319        class = CLASS_SYMBOL;        class_ = CLASS_SYMBOL;
320        token_stream.flags |= TSF_OPERAND;        token_stream.flags |= TSF_OPERAND;
321        break;        break;
322      case TOK_RP:      case TOK_RP:
323        class = CLASS_SYMBOL;        class_ = CLASS_SYMBOL;
324        token_stream.flags &= ~TSF_OPERAND;        token_stream.flags &= ~TSF_OPERAND;
325        break;        break;
326      case TOK_NAME:      case TOK_NAME:
327        class = CLASS_NONE;        class_ = CLASS_NONE;
328        token_stream.flags &= ~TSF_OPERAND;        token_stream.flags &= ~TSF_OPERAND;
329        if (js_PeekToken(context, &token_stream) == TOK_LP) {        if (js_PeekToken(context, &token_stream) == TOK_LP) {
330          /* function */          /* function */
331          class = CLASS_NONE;          class_ = CLASS_NONE;
332        }        }
333        break;        break;
334      case TOK_NUMBER:      case TOK_NUMBER:
335        class = CLASS_NUMBER;        class_ = CLASS_NUMBER;
336        token_stream.flags &= ~TSF_OPERAND;        token_stream.flags &= ~TSF_OPERAND;
337        break;        break;
338      case TOK_STRING:      case TOK_STRING:
339        class = CLASS_STRING;        class_ = CLASS_STRING;
340        token_stream.flags &= ~TSF_OPERAND;        token_stream.flags &= ~TSF_OPERAND;
341        break;        break;
342      case TOK_REGEXP:      case TOK_REGEXP:
343        class = CLASS_REGEXP;        class_ = CLASS_REGEXP;
344        token_stream.flags &= ~TSF_OPERAND;        token_stream.flags &= ~TSF_OPERAND;
345        break;        break;
346      case TOK_PRIMARY:      case TOK_PRIMARY:
# Line 349  Line 349 
349        case JSOP_FALSE:        case JSOP_FALSE:
350        case JSOP_NULL:        case JSOP_NULL:
351        case JSOP_THIS:        case JSOP_THIS:
352          class = CLASS_KEYWORD;          class_ = CLASS_KEYWORD;
353          token_stream.flags &= ~TSF_OPERAND;          token_stream.flags &= ~TSF_OPERAND;
354          break;          break;
355        default:        default:
# Line 357  Line 357 
357        }        }
358        break;        break;
359      case TOK_FUNCTION:      case TOK_FUNCTION:
360        class = CLASS_KEYWORD;        class_ = CLASS_KEYWORD;
361        token_stream.flags |= TSF_OPERAND;        token_stream.flags |= TSF_OPERAND;
362        break;        break;
363      case TOK_IF:      case TOK_IF:
# Line 377  Line 377 
377      case TOK_NEW:      case TOK_NEW:
378      case TOK_DELETE:      case TOK_DELETE:
379        token_stream.flags |= TSF_OPERAND;        token_stream.flags |= TSF_OPERAND;
380        class = CLASS_KEYWORD;        class_ = CLASS_KEYWORD;
381        break;        break;
382      case TOK_DEFSHARP:      case TOK_DEFSHARP:
383      case TOK_USESHARP:      case TOK_USESHARP:
# Line 390  Line 390 
390      case TOK_INSTANCEOF:      case TOK_INSTANCEOF:
391      case TOK_DEBUGGER:      case TOK_DEBUGGER:
392        token_stream.flags |= TSF_OPERAND;        token_stream.flags |= TSF_OPERAND;
393        class = CLASS_KEYWORD;        class_ = CLASS_KEYWORD;
394        break;        break;
395      case TOK_XMLSTAGO:      case TOK_XMLSTAGO:
396      case TOK_XMLETAGO:      case TOK_XMLETAGO:
# Line 414  Line 414 
414        break;        break;
415      case TOK_YIELD:      case TOK_YIELD:
416        token_stream.flags |= TSF_OPERAND;        token_stream.flags |= TSF_OPERAND;
417        class = CLASS_KEYWORD;        class_ = CLASS_KEYWORD;
418        break;        break;
419      case TOK_ARRAYCOMP:      case TOK_ARRAYCOMP:
420      case TOK_ARRAYPUSH:      case TOK_ARRAYPUSH:
# Line 423  Line 423 
423        break;        break;
424      case TOK_LET:      case TOK_LET:
425        token_stream.flags |= TSF_OPERAND;        token_stream.flags |= TSF_OPERAND;
426        class = CLASS_KEYWORD;        class_ = CLASS_KEYWORD;
427        break;        break;
428      case TOK_SEQ:      case TOK_SEQ:
429      case TOK_FORHEAD:      case TOK_FORHEAD:
# Line 455  Line 455 
455          output_character(c, CLASS_SPECIALCHAR);          output_character(c, CLASS_SPECIALCHAR);
456        }        }
457        else {        else {
458          output_character(c, class);          output_character(c, class_);
459        }        }
460    
461        if (line_num > end_line) {        if (line_num > end_line) {

Legend:
Removed from v.457  
changed lines
  Added in v.458

  ViewVC Help
Powered by ViewVC 1.1.24