Advertisement
tinyevil

Untitled

Aug 6th, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.00 KB | None | 0 0
  1.     switch ( peek() ){
  2.     case '{':{
  3.         ADVANCE_AND_ACCEPT(TokenID::OpLBrace);
  4.     }break;
  5.     case '}': {
  6.         ADVANCE_AND_ACCEPT(TokenID::OpRBrace);
  7.     }break;
  8.     case '(': {
  9.         ADVANCE_AND_ACCEPT(TokenID::OpLParen);
  10.     }break;
  11.     case ')': {
  12.         ADVANCE_AND_ACCEPT(TokenID::OpRParen);
  13.     }break;
  14.     case '[': {
  15.         ADVANCE_AND_ACCEPT(TokenID::OpLBracket);
  16.     }break;
  17.     case ']': {
  18.         ADVANCE_AND_ACCEPT(TokenID::OpRBracket);
  19.     }break;
  20.     case '.': {
  21.         ADVANCE_AND_ACCEPT(TokenID::OpDot);
  22.     }break;
  23.     case ',': {
  24.         ADVANCE_AND_ACCEPT(TokenID::OpComma);
  25.     }break;
  26.     case ':': {
  27.         ADVANCE_AND_ACCEPT(TokenID::OpColon);
  28.     }break;
  29.     case '+':{
  30.         ADVANCE_AND_ACCEPT(TokenID::OpPlus);
  31.     }break;
  32.     case '/': {
  33.         advance();
  34.         switch (peek()) {
  35.         case '/': {
  36.             advance();
  37.             scanLineComment();
  38.             return;
  39.         }break;
  40.         default: {
  41.             ACCEPT(TokenID::OpDiv);
  42.         }break;
  43.         }
  44.     }break;
  45.     case '*': {
  46.         ADVANCE_AND_ACCEPT(TokenID::OpMult);
  47.     }break;
  48.     case '&': {
  49.         ADVANCE_AND_ACCEPT(TokenID::OpAmpersand);
  50.     }break;
  51.     case ';': {
  52.         ADVANCE_AND_ACCEPT(TokenID::OpSemicolon);
  53.     }break;
  54.     case '?': {
  55.         ADVANCE_AND_ACCEPT(TokenID::OpQuestion);
  56.     }break;
  57.     case '=': {
  58.         advance();
  59.         switch (peek()) {
  60.         case '=': {
  61.             ADVANCE_AND_ACCEPT(TokenID::OpEQ);
  62.         }break;
  63.         default: {
  64.             ACCEPT(TokenID::OpAssign);
  65.         }break;
  66.         }
  67.     }break;
  68.     case '<': {
  69.         advance();
  70.         switch (peek()) {
  71.         case '=': {
  72.             ADVANCE_AND_ACCEPT(TokenID::OpLE);
  73.         }break;
  74.         case '>': {
  75.             ADVANCE_AND_ACCEPT(TokenID::OpNEQ);
  76.         }break;
  77.         default: {
  78.             ACCEPT(TokenID::OpLT);
  79.         }break;
  80.         }
  81.     }break;
  82.     case '>': {
  83.         advance();
  84.         switch (peek()) {
  85.         case '=': {
  86.             ADVANCE_AND_ACCEPT(TokenID::OpGE);
  87.         }break;
  88.         default: {
  89.             ACCEPT(TokenID::OpGT);
  90.         }break;
  91.         }
  92.     }break;
  93.     case '-': {
  94.         advance();
  95.         switch ( peek() ){
  96.         case '>':{
  97.             ADVANCE_AND_ACCEPT(TokenID::OpArrow);
  98.         }break;
  99.         default:{
  100.             ACCEPT(TokenID::OpMinus);
  101.         }break;
  102.         }
  103.     }break;
  104.     default:{      
  105.         report(LexerError::Code::UnexpectedCharacter);
  106.         advance();
  107.         scanBadCharacters();
  108.     }break;
  109.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement