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 * ID: msglist 26.10.06 0.0.A.
11 *
12 * Author: Alexander Krivonogov ( algen )
13 *
14 * Summary: The list of the operations
15 *
16 ******************************************************************************/-->
17 <--Флаги операций-->
18 <flags>
19 <nop comment="Не имеет кода операции"/>
20 <binary comment="Бинарная операция"/>
21 <unary comment="Унарная операция стоящая перед операндом"/>
22 <post comment="Унарная операция стоящая после операнда"/>
23 <undef comment="Операция не определена, следующая операция, для данного типа всегда должен стоять unary"/>
24 <retuint comment="Операция будет возвращать uint"/>
25 <addnot comment="Данная операция разбивается на две - предыдущая операция и логическое НЕТ"/>
26 <open comment="Открывающая скобка"/>
27 <close comment="Закрывающая скобка"/>
28 <lvalue comment="LValue операция"/>
29 </flags>
30
31 <--Описание списка-->
32 <desc>
33
34 </desc>
35
36 <--Список операций, не изменять взаимное расположение!
37 формат списка:
38 <идентификатор>="<лексема>" prin=<приоритет вх> prout=<приоритет вых> <флаги>
39
40 <идентификатор> - Идентификатор лексемы, соответсвует индексу в таблице
41 <лексема> - Символьное предсавление системной лексемы
42 <приоритет вх> - приоритет при первом получении лексемы
43 <приоритет вых> - приоритет в стэке операций
44 <флаги> - комбинация флагов операций
45 -->
46 <--space ="" nop /-->
47 <--file ="" nop /-->
48 <tbl>
49 <as ="" prin=14 prout=3 binary lvalue nop />
50 <func ="" prin=18 prout=18 unary nop />
51 <line ="" prin=0 prout=0 nop />
52 <strappend ="+=" prin=18 prout=18 binary lvalue />
53 <strtext ="@" prin=18 prout=18 unary />
54 <plus ="+" prin=16 prout=15 undef unary nop />
55 <add ="+" prin=12 prout=12 binary />
56 <minus ="-" prin=16 prout=15 undef unary />
57 <sub ="-" prin=12 prout=12 binary />
58 <len ="*" prin=16 prout=15 undef unary />
59 <mul ="*" prin=13 prout=13 binary />
60 <div ="/" prin=13 prout=13 binary />
61 <mod ="%" prin=13 prout=13 binary />
62 <binnot ="~" prin=16 prout=15 undef unary />
63 <late ="~" prin=17 prout=17 binary nop />
64 <addr ="&" prin=16 prout=15 undef unary nop lvalue retuint />
65 <binand ="&" prin=8 prout=8 binary />
66 <binxor ="^" prin=7 prout=7 binary />
67 <binor ="|" prin=6 prout=6 binary />
68 <lognot ="!" prin=16 prout=15 unary />
69 <logand ="&&" prin=5 prout=5 binary nop retuint />
70 <logor ="||" prin=4 prout=4 binary nop retuint />
71 <left ="<<" prin=11 prout=11 binary />
72 <right =">>" prin=11 prout=11 binary />
73
74 <incleft ="++" prin=16 prout=15 undef unary lvalue />
75 <incright ="_++" prin=16 prout=15 post lvalue />
76 <decleft ="--" prin=16 prout=15 undef unary lvalue />
77 <decright ="_--" prin=16 prout=15 post lvalue />
78
79 <set ="=" prin=14 prout=3 binary lvalue />
80 <addset ="+=" prin=14 prout=3 binary lvalue />
81 <subset ="-=" prin=14 prout=3 binary lvalue />
82 <mulset ="*=" prin=14 prout=3 binary lvalue />
83 <divset ="/=" prin=14 prout=3 binary lvalue />
84 <modset ="%=" prin=14 prout=3 binary lvalue />
85 <andset ="&=" prin=14 prout=3 binary lvalue />
86 <orset ="|=" prin=14 prout=3 binary lvalue />
87 <xorset ="^=" prin=14 prout=3 binary lvalue />
88 <leftset ="<<=" prin=14 prout=3 binary lvalue />
89 <rightset =">>=" prin=14 prout=3 binary lvalue />
90
91 <comma ="," prin=2 prout=2 binary nop />
92 <with ="." prin=16 prout=15 undef unary />
93 <point ="." prin=17 prout=17 binary />
94 <ptr ="->" prin=17 prout=17 binary nop />
95 <quest ="?" prin=18 prout=18 unary nop />
96 <strout ="@" prin=16 prout=15 undef unary nop />
97 <stradd ="@" prin=12 prout=12 binary />
98
99 <lbrack ="(" prin=19 prout=1 open nop />
100 <rbrack =")" prin=1 prout=20 close nop />
101 <lsqbrack ="[" prin=18 prout=1 open nop />
102 <rsqbrack ="]" prin=1 prout=20 close nop />
103 <lcrbrack ="{" prin=19 prout=1 open nop />
104 <rcrbrack ="}" prin=1 prout=20 close nop />
105 <collect ="%{" prin=19 prout=1 open nop />
106
107 <eq ="==" prin=9 prout=9 binary />
108 <noteq ="!=" prin=9 prout=9 binary addnot />
109 <greater =">" prin=10 prout=10 binary />
110 <lesseq ="<=" prin=10 prout=10 binary addnot />
111 <less ="<" prin=10 prout=10 binary />
112 <greateq =">=" prin=10 prout=10 binary addnot />
113
114 <igneq ="%==" prin=9 prout=9 binary />
115 <ignnoteq ="%!=" prin=9 prout=9 binary addnot />
116 <igngreater ="%>" prin=10 prout=10 binary />
117 <ignlesseq ="%<=" prin=10 prout=10 binary addnot />
118 <ignless ="%<" prin=10 prout=10 binary />
119 <igngreateq ="%>=" prin=10 prout=10 binary addnot />
120
121 </tbl>
122
123
124
125
126
127