EnglishРусский  

   ..

   alias.c

   alias.h

   bcodes.c

   bcodes.h

   body.c

   compile.c

   compile.h

   define.c

   define.h

   desc.c

   expr.c

   extern.c

   for.c

   foreach.c

   func.c

   func.h

   global.c

   global.h

   goto.c

   if.c

   ifdef.c

   ifdef.h

   import.c

   import.h

   include.c

   include.h

   jump.c

   lexem.c

   lexem.h

   macro.c

   macro.h

   operlist.h

   operlist.txt

   out.c

   out.h

   subfunc.c

   switch.c

   type.c

   type.h

   vars.c

   while.c

   with.c

Реклама

Инсталлятор CreateInstall
Бесплатные и коммерческие инсталляторы

source\src\compiler\operlist.h
  1 /******************************************************************************
  2 *
  3 * Copyright (C) 2006, The Gentee Group. All rights reserved.
  4 * This file is part of the Gentee open source project <http://www.gentee.com>.
  5 *
  6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT").
  7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS
  8 * ACCEPTANCE OF THE AGREEMENT.
  9 *
 10 * operlist_h 31.03.2008 0.0.A.
 11 *
 12 * Author: Generated with 'operlist' program
 13 *
 14 * Summary: This file contains a list of the compiler's or VM's messages.
 15 *
 16 ******************************************************************************/
 17 
 18 #ifndef _OPERLIST_
 19 #define _OPERLIST_
 20 
 21    #ifdef __cplusplus               
 22       extern "C" {                 
 23    #endif // __cplusplus      
 24 
 25 #include "../common/types.h"
 26 
 27 //Флаги операций для таблицы операций
 28 #define OPF_NOP		0x1		//Не имеет кода операции
 29 #define OPF_BINARY		0x2		//Бинарная операция
 30 #define OPF_UNARY		0x4		//Унарная операция стоящая перед операндом
 31 #define OPF_POST		0x8		//Унарная операция стоящая после операнда
 32 #define OPF_UNDEF		0x10		//Операция не определена, следующая операция, для данного типа всегда должен стоять unary
 33 #define OPF_RETUINT		0x20		//Операция будет возвращать uint
 34 #define OPF_ADDNOT		0x40		//Данная операция разбивается на две - предыдущая операция и логическое НЕТ
 35 #define OPF_OPEN		0x80		//Открывающая скобка
 36 #define OPF_CLOSE		0x100		//Закрывающая скобка
 37 #define OPF_LVALUE		0x200		//LValue операция
 38 
 39 
 40 #define  OPERCOUNT  65 //Количество операций
 41 
 42 //Идентификаторы операций
 43 enum {
 44    OpAs,		  // 0x0 ""
 45    OpFunc,		  // 0x1 ""
 46    OpLine,		  // 0x2 ""
 47    OpStrappend,		  // 0x3 "+="
 48    OpStrtext,		  // 0x4 "@"
 49    OpPlus,		  // 0x5 "+"
 50    OpAdd,		  // 0x6 "+"
 51    OpMinus,		  // 0x7 "-"
 52    OpSub,		  // 0x8 "-"
 53    OpLen,		  // 0x9 "*"
 54    OpMul,		  // 0xA "*"
 55    OpDiv,		  // 0xB "/"
 56    OpMod,		  // 0xC "%"
 57    OpBinnot,		  // 0xD "~"
 58    OpLate,		  // 0xE "~"
 59    OpAddr,		  // 0xF "&"
 60    OpBinand,		  // 0x10 "&"
 61    OpBinxor,		  // 0x11 "^"
 62    OpBinor,		  // 0x12 "|"
 63    OpLognot,		  // 0x13 "!"
 64    OpLogand,		  // 0x14 "&&"
 65    OpLogor,		  // 0x15 "||"
 66    OpLeft,		  // 0x16 "<<"
 67    OpRight,		  // 0x17 ">>"
 68    OpIncleft,		  // 0x18 "++"
 69    OpIncright,		  // 0x19 "_++"
 70    OpDecleft,		  // 0x1A "--"
 71    OpDecright,		  // 0x1B "_--"
 72    OpSet,		  // 0x1C "="
 73    OpAddset,		  // 0x1D "+="
 74    OpSubset,		  // 0x1E "-="
 75    OpMulset,		  // 0x1F "*="
 76    OpDivset,		  // 0x20 "/="
 77    OpModset,		  // 0x21 "%="
 78    OpAndset,		  // 0x22 "&="
 79    OpOrset,		  // 0x23 "|="
 80    OpXorset,		  // 0x24 "^="
 81    OpLeftset,		  // 0x25 "<<="
 82    OpRightset,		  // 0x26 ">>="
 83    OpComma,		  // 0x27 ","
 84    OpWith,		  // 0x28 "."
 85    OpPoint,		  // 0x29 "."
 86    OpPtr,		  // 0x2A "->"
 87    OpQuest,		  // 0x2B "?"
 88    OpStrout,		  // 0x2C "@"
 89    OpStradd,		  // 0x2D "@"
 90    OpLbrack,		  // 0x2E "("
 91    OpRbrack,		  // 0x2F ")"
 92    OpLsqbrack,		  // 0x30 "["
 93    OpRsqbrack,		  // 0x31 "]"
 94    OpLcrbrack,		  // 0x32 "{"
 95    OpRcrbrack,		  // 0x33 "}"
 96    OpCollect,		  // 0x34 "%{"
 97    OpEq,		  // 0x35 "=="
 98    OpNoteq,		  // 0x36 "!="
 99    OpGreater,		  // 0x37 ">"
100    OpLesseq,		  // 0x38 "<="
101    OpLess,		  // 0x39 "<"
102    OpGreateq,		  // 0x3A ">="
103    OpIgneq,		  // 0x3B "%=="
104    OpIgnnoteq,		  // 0x3C "%!="
105    OpIgngreater,		  // 0x3D "%>"
106    OpIgnlesseq,		  // 0x3E "%<="
107    OpIgnless,		  // 0x3F "%<"
108    OpIgngreateq,		  // 0x40 "%>="
109 
110 };
111 
112 //Структура для описания операций
113 typedef struct {
114    ubyte     before; // Приоритет на входе в стэк операций
115    ubyte     after;  // Приоритет после вставки в стэк операций
116    ushort    flgs;   // Тип операции OPER_   
117 } soper, * psoper;
118 
119 extern const soper opers[];
120 extern const ubyte operlexlist[];
121    #ifdef __cplusplus              
122       }                            
123    #endif // __cplusplus
124 
125 #endif // _OPERLIST_
126 
Редактировать