1. /* static */
  2. void
  3. nsCSSScanner::BuildLexTable()
  4. {
  5. gLexTableSetup = PR_TRUE;
  6. PRUint8* lt = gLexTable;
  7. int i;
  8. lt[CSS_ESCAPE] = START_IDENT;
  9. lt['-'] |= IS_IDENT;
  10. lt['_'] |= IS_IDENT | START_IDENT;
  11. // XXX add in other whitespace chars
  12. lt[' '] |= IS_WHITESPACE; // space
  13. lt['\t'] |= IS_WHITESPACE; // horizontal tab
  14. lt['\v'] |= IS_WHITESPACE; // vertical tab
  15. lt['\r'] |= IS_WHITESPACE; // carriage return
  16. lt['\n'] |= IS_WHITESPACE; // line feed
  17. lt['\f'] |= IS_WHITESPACE; // form feed
  18. for (i = 161; i <= 255; i++) {
  19. lt[i] |= IS_IDENT | START_IDENT;
  20. }
  21. for (i = '0'; i <= '9'; i++) {
  22. lt[i] |= IS_DIGIT | IS_HEX_DIGIT | IS_IDENT;
  23. }
  24. for (i = 'A'; i <= 'Z'; i++) {
  25. if ((i >= 'A') && (i <= 'F')) {
  26. lt[i] |= IS_HEX_DIGIT;
  27. lt[i+32] |= IS_HEX_DIGIT;
  28. }
  29. lt[i] |= IS_IDENT | START_IDENT;
  30. lt[i+32] |= IS_IDENT | START_IDENT;
  31. }
  32. }