Advertisement
Guest User

Untitled

a guest
Nov 16th, 2011
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.31 KB | None | 0 0
  1.  
  2. static std::array<Wide::Lexer::TokenType, 256> single_character_punctuation(
  3. []() -> std::array<Wide::Lexer::TokenType, 256> {
  4. std::array<Wide::Lexer::TokenType, 256> result = {};
  5.  
  6. result[L'{'] = Wide::Lexer::TokenType::OpenCurlyBracket;
  7. result[L'}'] = Wide::Lexer::TokenType::CloseCurlyBracket;
  8. result[L'('] = Wide::Lexer::TokenType::OpenBracket;
  9. result[L')'] = Wide::Lexer::TokenType::CloseBracket;
  10. result[L'['] = Wide::Lexer::TokenType::OpenSquareBracket;
  11. result[L']'] = Wide::Lexer::TokenType::CloseSquareBracket;
  12. result[L','] = Wide::Lexer::TokenType::Comma;
  13. result[L':'] = Wide::Lexer::TokenType::Colon;
  14. result[L'.'] = Wide::Lexer::TokenType::Dot;
  15. result[L'~'] = Wide::Lexer::TokenType::BinaryNOT;
  16. result[L';'] = Wide::Lexer::TokenType::Semicolon;
  17.  
  18. result[L'-'] = Wide::Lexer::TokenType::Minus;
  19. result[L'*'] = Wide::Lexer::TokenType::Multiply;
  20. result[L'&'] = Wide::Lexer::TokenType::BinaryAND;
  21. result[L'^'] = Wide::Lexer::TokenType::BinaryXOR;
  22. result[L'%'] = Wide::Lexer::TokenType::Modulus;
  23. result[L'!'] = Wide::Lexer::TokenType::LogicalNOT;
  24. result[L'/'] = Wide::Lexer::TokenType::Divide;
  25. result[L'>'] = Wide::Lexer::TokenType::GreaterThan;
  26. result[L'<'] = Wide::Lexer::TokenType::LessThan;
  27. result[L'|'] = Wide::Lexer::TokenType::BinaryOR;
  28. result[L'='] = Wide::Lexer::TokenType::Equals;
  29. result[L'+'] = Wide::Lexer::TokenType::Plus;
  30.  
  31. return result;
  32. }()
  33. );
  34.  
  35. static std::array<std::array<Wide::Lexer::TokenType, 256>, 256> double_character_punctuation(
  36. []() -> std::array<std::array<Wide::Lexer::TokenType, 256>, 256> {
  37. std::array<std::array<Wide::Lexer::TokenType, 256>, 256> result = {};
  38. result[L'-'][L'>'] = Wide::Lexer::TokenType::PointerAccess;
  39. result[L'-'][L'-'] = Wide::Lexer::TokenType::Decrement;
  40. result[L'-'][L'='] = Wide::Lexer::TokenType::MinusEquals;
  41. result[L'+'][L'+'] = Wide::Lexer::TokenType::Increment;
  42. result[L'+'][L'='] = Wide::Lexer::TokenType::PlusEquals;
  43. result[L'*'][L'='] = Wide::Lexer::TokenType::MulEquals;
  44. result[L'&'][L'='] = Wide::Lexer::TokenType::BinaryANDEquals;
  45. result[L'&'][L'&'] = Wide::Lexer::TokenType::LogicalAnd;
  46. result[L'^'][L'='] = Wide::Lexer::TokenType::BinaryXOREquals;
  47. result[L'%'][L'='] = Wide::Lexer::TokenType::ModulusEquals;
  48. result[L'!'][L'='] = Wide::Lexer::TokenType::NotEquals;
  49. result[L'/'][L'='] = Wide::Lexer::TokenType::DivEquals;
  50. result[L'>'][L'='] = Wide::Lexer::TokenType::GreaterThanOrEqualTo;
  51. result[L'>'][L'>'] = Wide::Lexer::TokenType::RightShift;
  52. result[L'<'][L'='] = Wide::Lexer::TokenType::LessThanOrEqualTo;
  53. result[L'<'][L'<'] = Wide::Lexer::TokenType::LeftShift;
  54. result[L'|'][L'|'] = Wide::Lexer::TokenType::LogicalOr;
  55. result[L'|'][L'='] = Wide::Lexer::TokenType::BinaryOREquals;
  56. result[L'='][L'='] = Wide::Lexer::TokenType::EqualTo;
  57. return result;
  58. }()
  59. );
  60.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement