home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / program / assembler / as / src / c / lexAcorn < prev    next >
Encoding:
Text File  |  1993-03-07  |  3.7 KB  |  118 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 'n': case 'N':
  14.       switch(inputGet()) {
  15.         case 'o': case 'O':
  16.           switch(inputGet()) {
  17.             case 't': case 'T':
  18.               if(inputGet()==':') { lex->LexOperator.op = Op_not; lex->LexOperator.pri = 10; return 1;}
  19.           } break;
  20.       } break;
  21.     case 'l': case 'L':
  22.       switch(inputGet()) {
  23.         case 'n': case 'N':
  24.           switch(inputGet()) {
  25.             case 'o': case 'O':
  26.               switch(inputGet()) {
  27.                 case 't': case 'T':
  28.                   if(inputGet()==':') { lex->LexOperator.op = Op_lnot; lex->LexOperator.pri = 10; return 1;}
  29.               } break;
  30.           } break;
  31.       } break;
  32.   }
  33.   lex->tag = LexNone;
  34.   return 0;
  35. }
  36.  
  37. int lexAcornBinop(Lex *lex)
  38. {
  39.   lex->tag = LexOperator;
  40.   switch(inputGet()) {
  41.     case 'a': case 'A':
  42.       switch(inputGet()) {
  43.         case 'n': case 'N':
  44.           switch(inputGet()) {
  45.             case 'd': case 'D':
  46.               if(inputGet()==':') { lex->LexOperator.op = Op_and; lex->LexOperator.pri = 8; return 1;}
  47.           } break;
  48.       } break;
  49.     case 'e': case 'E':
  50.       switch(inputGet()) {
  51.         case 'o': case 'O':
  52.           switch(inputGet()) {
  53.             case 'r': case 'R':
  54.               if(inputGet()==':') { lex->LexOperator.op = Op_xor; lex->LexOperator.pri = 6; return 1;}
  55.           } break;
  56.        } break;
  57.     case 'l': case 'L':
  58.       switch(inputGet()) {
  59.         case 'a': case 'A':
  60.           switch(inputGet()) {
  61.             case 'n': case 'N':
  62.               switch(inputGet()) {
  63.                 case 'd': case 'D':
  64.                   if(inputGet()==':') { lex->LexOperator.op = Op_land; lex->LexOperator.pri = 2; return 1;}
  65.               } break;
  66.           } break;
  67.         case 'e': case 'E':
  68.           switch(inputGet()) {
  69.             case 'o': case 'O':
  70.               switch(inputGet()) {
  71.                 case 'r': case 'R':
  72.                   if(inputGet()==':') { lex->LexOperator.op = Op_ne; lex->LexOperator.pri = 1; return 1;}
  73.               } break;
  74.            } break;
  75.         case 'o': case 'O':
  76.           switch(inputGet()) {
  77.             case 'r': case 'R':
  78.               if(inputGet()==':') { lex->LexOperator.op = Op_lor; lex->LexOperator.pri = 1; return 1;}
  79.           } break;
  80.       } break;
  81.     case 'm': case 'M':
  82.       switch(inputGet()) {
  83.         case 'o': case 'O':
  84.           switch(inputGet()) {
  85.             case 'd': case 'D':
  86.               if(inputGet()==':') { lex->LexOperator.op = Op_mod; lex->LexOperator.pri = 10; return 1;}
  87.           } break;
  88.       } break;
  89.     case 'o': case 'O':
  90.       switch(inputGet()) {
  91.         case 'r': case 'R':
  92.           if(inputGet()==':') { lex->LexOperator.op = Op_or; lex->LexOperator.pri = 7; return 1;}
  93.       } break;
  94.     case 'r': case 'R':
  95.       switch(inputGet()) {
  96.         case 'o': case 'O':
  97.           switch(inputGet()) {
  98.             case 'l': case 'L':
  99.               if(inputGet()==':') { lex->LexOperator.op = Op_rol; lex->LexOperator.pri = 5; return 1;}
  100.             case 'r': case 'R':
  101.               if(inputGet()==':') { lex->LexOperator.op = Op_ror; lex->LexOperator.pri = 5; return 1;}
  102.           } break;
  103.       } break;
  104.     case 's': case 'S':
  105.       switch(inputGet()) {
  106.         case 'h': case 'H':
  107.           switch(inputGet()) {
  108.             case 'l': case 'L':
  109.               if(inputGet()==':') { lex->LexOperator.op = Op_sl; lex->LexOperator.pri = 5; return 1;}
  110.             case 'r': case 'R':
  111.               if(inputGet()==':') { lex->LexOperator.op = Op_sr; lex->LexOperator.pri = 5; return 1;}
  112.           } break;
  113.       } break;
  114.   }
  115.   lex->tag = LexNone;
  116.   return 0;
  117. }
  118.