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_c 31.03.2008 0.0.A.
11 *
12 * Author: Generated with 'operlist' program
13 *
14 * Summary:
15 *
16 ******************************************************************************/
17
18
19 #include "operlist.h"
20
21 //Таблица приоритетов и типов операций
22 const soper opers[] = {
23 { 14, 3, OPF_NOP | OPF_BINARY | OPF_LVALUE },// '' OpAs
24 { 18, 18, OPF_NOP | OPF_UNARY },// '' OpFunc
25 { 0, 0, OPF_NOP },// '' OpLine
26 { 18, 18, OPF_BINARY | OPF_LVALUE },// '+=' OpStrappend
27 { 18, 18, OPF_UNARY },// '@' OpStrtext
28 { 16, 15, OPF_NOP | OPF_UNARY | OPF_UNDEF },// '+' OpPlus
29 { 12, 12, OPF_BINARY },// '+' OpAdd
30 { 16, 15, OPF_UNARY | OPF_UNDEF },// '-' OpMinus
31 { 12, 12, OPF_BINARY },// '-' OpSub
32 { 16, 15, OPF_UNARY | OPF_UNDEF },// '*' OpLen
33 { 13, 13, OPF_BINARY },// '*' OpMul
34 { 13, 13, OPF_BINARY },// '/' OpDiv
35 { 13, 13, OPF_BINARY },// '%' OpMod
36 { 16, 15, OPF_UNARY | OPF_UNDEF },// '~' OpBinnot
37 { 17, 17, OPF_NOP | OPF_BINARY },// '~' OpLate
38 { 16, 15, OPF_NOP | OPF_UNARY | OPF_UNDEF | OPF_RETUINT | OPF_LVALUE },// '&' OpAddr
39 { 8, 8, OPF_BINARY },// '&' OpBinand
40 { 7, 7, OPF_BINARY },// '^' OpBinxor
41 { 6, 6, OPF_BINARY },// '|' OpBinor
42 { 16, 15, OPF_UNARY },// '!' OpLognot
43 { 5, 5, OPF_NOP | OPF_BINARY | OPF_RETUINT },// '&&' OpLogand
44 { 4, 4, OPF_NOP | OPF_BINARY | OPF_RETUINT },// '||' OpLogor
45 { 11, 11, OPF_BINARY },// '<<' OpLeft
46 { 11, 11, OPF_BINARY },// '>>' OpRight
47 { 16, 15, OPF_UNARY | OPF_UNDEF | OPF_LVALUE },// '++' OpIncleft
48 { 16, 15, OPF_POST | OPF_LVALUE },// '_++' OpIncright
49 { 16, 15, OPF_UNARY | OPF_UNDEF | OPF_LVALUE },// '--' OpDecleft
50 { 16, 15, OPF_POST | OPF_LVALUE },// '_--' OpDecright
51 { 14, 3, OPF_BINARY | OPF_LVALUE },// '=' OpSet
52 { 14, 3, OPF_BINARY | OPF_LVALUE },// '+=' OpAddset
53 { 14, 3, OPF_BINARY | OPF_LVALUE },// '-=' OpSubset
54 { 14, 3, OPF_BINARY | OPF_LVALUE },// '*=' OpMulset
55 { 14, 3, OPF_BINARY | OPF_LVALUE },// '/=' OpDivset
56 { 14, 3, OPF_BINARY | OPF_LVALUE },// '%=' OpModset
57 { 14, 3, OPF_BINARY | OPF_LVALUE },// '&=' OpAndset
58 { 14, 3, OPF_BINARY | OPF_LVALUE },// '|=' OpOrset
59 { 14, 3, OPF_BINARY | OPF_LVALUE },// '^=' OpXorset
60 { 14, 3, OPF_BINARY | OPF_LVALUE },// '<<=' OpLeftset
61 { 14, 3, OPF_BINARY | OPF_LVALUE },// '>>=' OpRightset
62 { 2, 2, OPF_NOP | OPF_BINARY },// ',' OpComma
63 { 16, 15, OPF_UNARY | OPF_UNDEF },// '.' OpWith
64 { 17, 17, OPF_BINARY },// '.' OpPoint
65 { 17, 17, OPF_NOP | OPF_BINARY },// '->' OpPtr
66 { 18, 18, OPF_NOP | OPF_UNARY },// '?' OpQuest
67 { 16, 15, OPF_NOP | OPF_UNARY | OPF_UNDEF },// '@' OpStrout
68 { 12, 12, OPF_BINARY },// '@' OpStradd
69 { 19, 1, OPF_NOP | OPF_OPEN },// '(' OpLbrack
70 { 1, 20, OPF_NOP | OPF_CLOSE },// ')' OpRbrack
71 { 18, 1, OPF_NOP | OPF_OPEN },// '[' OpLsqbrack
72 { 1, 20, OPF_NOP | OPF_CLOSE },// ']' OpRsqbrack
73 { 19, 1, OPF_NOP | OPF_OPEN },// '{' OpLcrbrack
74 { 1, 20, OPF_NOP | OPF_CLOSE },// '}' OpRcrbrack
75 { 19, 1, OPF_NOP | OPF_OPEN },// '%{' OpCollect
76 { 9, 9, OPF_BINARY },// '==' OpEq
77 { 9, 9, OPF_BINARY | OPF_ADDNOT },// '!=' OpNoteq
78 { 10, 10, OPF_BINARY },// '>' OpGreater
79 { 10, 10, OPF_BINARY | OPF_ADDNOT },// '<=' OpLesseq
80 { 10, 10, OPF_BINARY },// '<' OpLess
81 { 10, 10, OPF_BINARY | OPF_ADDNOT },// '>=' OpGreateq
82 { 9, 9, OPF_BINARY },// '%==' OpIgneq
83 { 9, 9, OPF_BINARY | OPF_ADDNOT },// '%!=' OpIgnnoteq
84 { 10, 10, OPF_BINARY },// '%>' OpIgngreater
85 { 10, 10, OPF_BINARY | OPF_ADDNOT },// '%<=' OpIgnlesseq
86 { 10, 10, OPF_BINARY },// '%<' OpIgnless
87 { 10, 10, OPF_BINARY | OPF_ADDNOT },// '%>=' OpIgngreateq
88
89 };
90
91 //Список строк операций
92 const ubyte operlexlist[] = { 0, 0, 0, '+', '=', 0, '@', 0, '+', 0, 0, '-',
93 0, 0, '*', 0, 0, '/', 0, '%', 0, '~', 0, 0, '&', 0, 0, '^', 0, '|', 0, '!',
94 0, '&', '&', 0, '|', '|', 0, '<', '<', 0, '>', '>', 0, '+', '+', 0, '_', '+',
95 '+', 0, '-', '-', 0, '_', '-', '-', 0, '=', 0, '+', '=', 0, '-', '=', 0, '*',
96 '=', 0, '/', '=', 0, '%', '=', 0, '&', '=', 0, '|', '=', 0, '^', '=', 0, '<',
97 '<', '=', 0, '>', '>', '=', 0, ',', 0, '.', 0, 0, '-', '>', 0, '?', 0, '@',
98 0, 0, '(', 0, ')', 0, '[', 0, ']', 0, '{', 0, '}', 0, '%', '{', 0, '=', '=',
99 0, '!', '=', 0, '>', 0, '<', '=', 0, '<', 0, '>', '=', 0, '%', '=', '=', 0,
100 '%', '!', '=', 0, '%', '>', 0, '%', '<', '=', 0, '%', '<', 0, '%', '>', '=',
101 0, };
102
103
104