home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / programming / as_1 / source_c_lexAcorn < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-28  |  5.4 KB  |  166 lines

  1. /*
  2.  *   lexAcorn.c
  3.  * Copyright © 1993 Niklas Röjemo
  4.  */
  5.  
  6. #include "lex.h"
  7. #include "input.h"
  8.  
  9. int lexAcornUnop(Lex *lex)
  10. {
  11.   lex->tag = LexOperator;
  12.   switch(inputGet()) {
  13.     case 'f': case 'F':
  14.       switch(inputGet()) {
  15.         case 'a': case 'A':
  16.           switch(inputGet()) {
  17.             case 't': case 'T':
  18.               switch(inputGet()) {
  19.                 case 't': case 'T':
  20.                   switch(inputGet()) {
  21.                     case 'r': case 'R':
  22.                       if(inputGet()==':') { lex->LexOperator.op = Op_fattr; lex->LexOperator.pri = 10; return 1;}
  23.                   } break;
  24.               } break;
  25.           } break;
  26.         case 'e': case 'E':
  27.           switch(inputGet()) {
  28.             case 'x': case 'X':
  29.               switch(inputGet()) {
  30.                 case 'e': case 'E':
  31.                   switch(inputGet()) {
  32.                     case 'c': case 'C':
  33.                       if(inputGet()==':') { lex->LexOperator.op = Op_fexec; lex->LexOperator.pri = 10; return 1;}
  34.                   } break;
  35.               } break;
  36.           } break;
  37.         case 'l': case 'L':
  38.           switch(inputGet()) {
  39.             case 'o': case 'O':
  40.               switch(inputGet()) {
  41.                 case 'a': case 'A':
  42.                   switch(inputGet()) {
  43.                     case 'd': case 'D':
  44.                       if(inputGet()==':') { lex->LexOperator.op = Op_fload; lex->LexOperator.pri = 10; return 1;}
  45.                   } break;
  46.               } break;
  47.           } break;
  48.         case 's': case 'S':
  49.           switch(inputGet()) {
  50.             case 'i': case 'I':
  51.               switch(inputGet()) {
  52.                 case 'z': case 'Z':
  53.                   switch(inputGet()) {
  54.                     case 'e': case 'E':
  55.                       if(inputGet()==':') { lex->LexOperator.op = Op_fsize; lex->LexOperator.pri = 10; return 1;}
  56.                   } break;
  57.               } break;
  58.           } break;
  59.       } break;
  60.     case 'l': case 'L':
  61.       switch(inputGet()) {
  62.         case 'n': case 'N':
  63.           switch(inputGet()) {
  64.             case 'o': case 'O':
  65.               switch(inputGet()) {
  66.                 case 't': case 'T':
  67.                   if(inputGet()==':') { lex->LexOperator.op = Op_lnot; lex->LexOperator.pri = 10; return 1;}
  68.               } break;
  69.           } break;
  70.       } break;
  71.     case 'n': case 'N':
  72.       switch(inputGet()) {
  73.         case 'o': case 'O':
  74.           switch(inputGet()) {
  75.             case 't': case 'T':
  76.               if(inputGet()==':') { lex->LexOperator.op = Op_not; lex->LexOperator.pri = 10; return 1;}
  77.           } break;
  78.       } break;
  79.  
  80.   }
  81.   lex->tag = LexNone;
  82.   return 0;
  83. }
  84.  
  85. int lexAcornBinop(Lex *lex)
  86. {
  87.   lex->tag = LexOperator;
  88.   switch(inputGet()) {
  89.     case 'a': case 'A':
  90.       switch(inputGet()) {
  91.         case 'n': case 'N':
  92.           switch(inputGet()) {
  93.             case 'd': case 'D':
  94.               if(inputGet()==':') { lex->LexOperator.op = Op_and; lex->LexOperator.pri = 8; return 1;}
  95.           } break;
  96.       } break;
  97.     case 'e': case 'E':
  98.       switch(inputGet()) {
  99.         case 'o': case 'O':
  100.           switch(inputGet()) {
  101.             case 'r': case 'R':
  102.               if(inputGet()==':') { lex->LexOperator.op = Op_xor; lex->LexOperator.pri = 6; return 1;}
  103.           } break;
  104.        } break;
  105.     case 'l': case 'L':
  106.       switch(inputGet()) {
  107.         case 'a': case 'A':
  108.           switch(inputGet()) {
  109.             case 'n': case 'N':
  110.               switch(inputGet()) {
  111.                 case 'd': case 'D':
  112.                   if(inputGet()==':') { lex->LexOperator.op = Op_land; lex->LexOperator.pri = 2; return 1;}
  113.               } break;
  114.           } break;
  115.         case 'e': case 'E':
  116.           switch(inputGet()) {
  117.             case 'o': case 'O':
  118.               switch(inputGet()) {
  119.                 case 'r': case 'R':
  120.                   if(inputGet()==':') { lex->LexOperator.op = Op_ne; lex->LexOperator.pri = 1; return 1;}
  121.               } break;
  122.            } break;
  123.         case 'o': case 'O':
  124.           switch(inputGet()) {
  125.             case 'r': case 'R':
  126.               if(inputGet()==':') { lex->LexOperator.op = Op_lor; lex->LexOperator.pri = 1; return 1;}
  127.           } break;
  128.       } break;
  129.     case 'm': case 'M':
  130.       switch(inputGet()) {
  131.         case 'o': case 'O':
  132.           switch(inputGet()) {
  133.             case 'd': case 'D':
  134.               if(inputGet()==':') { lex->LexOperator.op = Op_mod; lex->LexOperator.pri = 10; return 1;}
  135.           } break;
  136.       } break;
  137.     case 'o': case 'O':
  138.       switch(inputGet()) {
  139.         case 'r': case 'R':
  140.           if(inputGet()==':') { lex->LexOperator.op = Op_or; lex->LexOperator.pri = 7; return 1;}
  141.       } break;
  142.     case 'r': case 'R':
  143.       switch(inputGet()) {
  144.         case 'o': case 'O':
  145.           switch(inputGet()) {
  146.             case 'l': case 'L':
  147.               if(inputGet()==':') { lex->LexOperator.op = Op_rol; lex->LexOperator.pri = 5; return 1;}
  148.             case 'r': case 'R':
  149.               if(inputGet()==':') { lex->LexOperator.op = Op_ror; lex->LexOperator.pri = 5; return 1;}
  150.           } break;
  151.       } break;
  152.     case 's': case 'S':
  153.       switch(inputGet()) {
  154.         case 'h': case 'H':
  155.           switch(inputGet()) {
  156.             case 'l': case 'L':
  157.               if(inputGet()==':') { lex->LexOperator.op = Op_sl; lex->LexOperator.pri = 5; return 1;}
  158.             case 'r': case 'R':
  159.               if(inputGet()==':') { lex->LexOperator.op = Op_sr; lex->LexOperator.pri = 5; return 1;}
  160.           } break;
  161.       } break;
  162.   }
  163.   lex->tag = LexNone;
  164.   return 0;
  165. }
  166.