From d89948c9b729bc9c4100deed44a9f7dc832a2953 Mon Sep 17 00:00:00 2001 From: AntKrotov Date: Mon, 25 Jan 2021 23:21:42 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B5=D0=B4=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=BD=D1=8B=D0=B5=20=D0=B8?= =?UTF-8?q?=D0=B4=D0=B5=D0=BD=D1=82=D0=B8=D1=84=D0=B8=D0=BA=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D1=8B=20=D1=83=D1=81=D0=BB=D0=BE=D0=B2=D0=BD=D0=BE?= =?UTF-8?q?=D0=B9=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=B8=D0=BB=D1=8F=D1=86=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Compiler | Bin 306760 -> 307032 bytes Compiler.exe | Bin 308736 -> 308736 bytes doc/CC.txt | 33 +++++++++++++++++++++++++++++---- source/Compiler.ob07 | 26 ++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 4 deletions(-) diff --git a/Compiler b/Compiler index 0aed3b67b6506dbe343390beefb8cba88391ae60..7afceaa6692fd6dd823d3dbd68acf17eae832583 100644 GIT binary patch delta 24344 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 delta 24092 zcmZWx2V7Lg^JnMX(R(in2Z9tEsB}=&5J3^J8+#YA7qFpcS43>9uDwQ$9YuY1P*m*Q zXf(!H5+6YmO`@^ie|Fy;>hF)AWOu$ZJKJYx%eyt{~>NGQgE|BbC_j$Tj3V|8t={YG1+MlOHGY%e|qj{Qk z_KVMH%u;5Q=2&F6sVMkF7i!(<10UN(T7RGB$l-q}1<9T%b$BsTrYVkTg>G@@XoA)& z+<~VoFiXt`l;F5K0-VbKHD%h97nxWLESGjY7AU1a`|>QEp$*dCJ*&zTYVTky69q1d zDrgOnB?u_jKN$=teFWpE@o1HFwo!VMNqQld{+>%0YTFx`g@S2eh#bwCvs7l1kvWDl z&9gD1j%R5-^U#K_$iSM9cEkKE)i}1o@QVLF7z~E1-O4JK*kP3mwK|~{ly5E7CS}9R zBu()N^CU~y$f)E{0~RnE;!q1lG1}fC7&lZ2v^Q3HJ@wdsGt4kota0U1`i-Lw?k=VM9d&-^jq=V)AeXn!+KQvA zLW6NESIJVk$uS+qEv2sbr&zE$MprwfK*>@1 z)Ts_EIEs`Pt>>HwF-Pf8=T30>2tDiE&UW?@wUY|8laA03mqSo?m_By#_gr?^*ul@b zoeVLncxfTpr!%G1TvH(BFzxS};$e<5X|Y!)=Hj4ufz3N<2xfoi5IyaB7U~_M^WFBt zt49)a zolgTi17Y3)n&KJfoP9uJmQDCTOLpX=EbahZ?AZ~l4$$YGTOezH@lvkjbw}TV!+u!$6UA5Z!v54@Y?0>RTs@2I(Y59(*%Lm1=N767b4Rfu7 ziY>r^kMu%qBaHD;{BjP4+2)4G90Zi#)S(w@WZo4_9G9Iq^Q_8rH8M}l(dgBr@tnI| z4$*BZ#noPQRJ6J`|2KbvCUbp6lti8p{iXqArt(DJ4p<|YsSCZ{Y+z40z( zA?C($bx7P25@;UypFZWY$R(pl{#9;KJTcK@L~yY2(q0u&C$q{9NR+9#w&m)oL0Ghl zuF=(ocdO_{-KHkncVa1Kolm*(EB-&Nz-^_8euH$kla^-fQ}TaHDQM-$>sR2GXJQ-0 z2k)eN{R_jZb6AYfBRi@JVum0e_!X9DMzAbHW{6Rs^nPYw4;`QZ&D1;4JprXQgQs(b zxzfH;WfbqOp(DhdUJVR{k5h|Z2TroFUNnZwSSW3Np^lsC)1vSn;6N_z98n#X=hATz z;hqC?xj=++7267}=`yXzb9!#^iHKSR#;z*hG#mv^mdiweE3~+}VbOjW zUOXf^-W*OXq}vj8uwh~G#l)@P_1`>I>Yl3X(g2=?wbJymC_`zIIqaHOd^V|v7Fy-g z&~M|t9B~X`J5*c<5NeQ;@#iYAvT$_G-ify%rj#aecF7Yy)sj6u>KAm zwY78T$dtOUVm zl+OxEhtXeJ)r8C`s36sO^)R&q&|JOXmT1W^+AF;;L=U6o>3*oatW6+(5^dIc4b&P;AGh`g$HB$sZCabd>D=P)I{l`Fp*?6)_l3~12ffj~hNf;0 zjTyB~udbFfAQN5cx)uN1LpFznS;ag1-y`sEe>x|tDHQdmmoXUJpE?hWBAzsL zVDrYe8}atBQXI>%({gmm7!0vx&IuTlw`VvUqV!bZeFB!0M+l?T4~^)Rfz|sg7O0(4 zh(dgw5aYE_J4e8_%4(s*QPHS6Iv7>Y6tJiAT-DXYsCpPD3zBt}e0Jy6);nQ7X^m(` zwg+@+M67K!TJmNpmnG8s*L5LVMh^{vhy>aTgMb8DFf@c{>As=<@Ft$#M(jyECBt-ZGoIEM76M1& zX)C1m#M5C&mB!QM7;KBDWf-iEr_YhMD4seD4}o#A4f-w(80AhN|Cx0OOGM7CXPNps%9Lu8W{qe z;%Ea5+QrdsBX!Uvj_Q$W6-T!sl^RDcAXPVxz8a|`UetY5D13;eO-6-4MJyeJL8lnH zWRwoJ$5I)oU9t2bQtM->G&%&P$I?2Zv4vu322wp@={OA1V(CT<)smmB_&S;uA2K7bL9!SlJruj%sh^E_-8Wl}% zA=M+A{)beHXzD*U1R6!tmKX#_)10w7QjIPh8;bs4=~#cL-+(?w&b26NH%k*#5ZXu4j!1QkqEja5^qEnr_vxir72sMr4OcmIK*#6h z>PMqND#Eo;s-;TUDo^L2zu6br6Y>t}J&f!SqXIkSEN3SpJ1;M$itS#--pbiEkv%cb ztBOrD)ITo>UPjWCy!S&LB84T!x$T)&(B3h#NgJHmZyJi(im^XLOoOpoB4(rXT^d( zYsuZFax-i}&d;ynkEw7Le8;c&13ACgbM_|*a$6RA&ULVYAx(=zmrMrur*ZLimO@}_ zqvBV~mTAB-j?Q1b2qwhR8f)4@%~(2i%^~|PF(Uub+}+8DDQ>(rjzC}xov?0mgF!e% z&R|)v3Vg>nBw9!|aaaN=<;icb+0b>w$|V{wrVqpPEu(0=^|gbJIGHw1Vg0ZUU&>B< z8JIcE*-I&eD_6^#eD_dK9YuRz*!kd(=c#| zq{BA&>tA43iGmbrWlWHn-9RbfPHv%gmmnJ|MJl;TkdexIm0T{!C}ojK&KG2~GEF6C z3Nl6+t&$T28LRYD$zg(wQ#yP!=y^{41Rbw5SJ_Lk`aPTQa<4R5;cbkvWfCsC94avsq%|TIys8HNHgV%N}CJzH%h5WesbXLk*w@d z$$td-t+GKSp9-?MLRIpfAXAj-DtS|osY;GYUJ+yqrN2s+3$mrs@q=CzvqaEoN{Y&s z1=&i8Rmq)#Ojp8Ga=jok6d#pjg3MHGRkBc!t(A}Oh34skY@__ClH&x~R(Zh5eB9U4 zx!<=2xjudHy{FUa`l|EzkLoV}YfmjV^>vA9fKzhWLX^ijXp3!HuL0F>ss-=r(;b^a z;dXs`d((FNFifiy7lb*uhY)$&-o_fG)Qop_Rpnpx8 zxi=MjYSNW^hr`w&YFDhYwLm+gZU!a>(b!^tmq)ctfPyhB;kDXyNO3inBUShz72i;s zt}3qXVpF9cU&Tk(rWcES9l0KC1u=gMwMPT#yJCM^o>a|kejp9r=Wn~X3g{h3+wJpr z8HNBF{A`^P*+z6q-9S1U@h(+3QSo;*=uyO*SK*ghqkMt(&sy}wz5tK(v)ex5;QXZA^utFP8jXJzqaGiufSDdbjALF+67;MrBPK!qx3gIl|~fZMmeeq)iN^ce;H=0LbeK1g+>{hGsGz5AvBqx zm_*MXw5}as#9fS`ri!n@^}ZD9#!L%3qDaL-6R zL=a<=mtnDv!ij~D?@yPU2!$X0Xz7V)2=b?IPXxgy9o3yofEYj8{bUF%4WYA7#yZ>h ziYetVy@0RSxJrl68z-BBMF{mMONP>5+Py3ZCI!=VW!c~yOl?oqfiBf){Hai@tZE|V z=x^w?Q!aG!soCIKlUkn+g6BcS5vOaDnif8yoNu^a!VjJcM0dXR7U&~^YVUc|X=mDb z6sq7$VPxAosy1h`H~sUBFJNF_PAvam;!A@M4e2dG=cWCPqSE1^4v6=x+=G!i! z{VJ;&ay$)@`H8k>idlQXJxC>N}n3+sk3F z+=T{R(ZLuO+Wbm3jEbklS6Vv{N3R9jJQlMuOGoV1b$eLdKu_uIE7uUU=NZ_Sq@sK+n0C&ub zXWsqM9Pp^T`@@6Mw+4xNJu0v`_(?KTDxRRS8m6*Vzopln)@nKyS*RRs@v_xI{je%vmJ0M&0mbR8;P)_+4NeKN(_7j| ziFP%-k$88VU&@;!`3)BA)*G6yM0@O08G2-39^t>J#d?{zN8c(<;1Qt-6|vUy zFK|oks8NcGk#>1i(IEy{$-N z7zAvi6`2W-39DsIVxfqz{?>>OAZ&{@;t$MNJsVO_|7feRo{!K$&*uK)Z4+{pBX)?K zGa<)0VvopC6S9LN4v6eBAuBk-XZd;)GMgiOvr0`!E=Txv+)TX*%EHQJ^L^}C6Vibr z5+d0q!uONe7Ko&q5FJM>5lJ#3_8hT7q`nFHz_YhTByg+VSo=RX#2eJz zBy@)({OH`ugq-0>HALS3U`(}-Bh?XkVL~==#21lACS(C3*td>1)vis+=4XayO#>@YS?8$(z#MCA{$Idf~vIk4dYO7&aR26N8SVspEVDb394L3^kT2n81xdW+Z1ziuw=RL_< z4ct2^52{Xri0zJNHe%5!&~A9fR{4@fF!CAu*_Xt%Si?C5W-0k6Di-qjbM%v(p+L+eU*Oh;Nm@nUA}PipILP)Y2+EtJuCL6+^3ZG%~k zT`aoxjWURj8drg3nXrx=^Ap&2Caf99bOLK(!s>C%O-!al6XwIQ+5)R1Fn!J&#e#$G z0`xTr{=+-FhQRDi*aMDv3(SC}M!WPzxxg_WfxR$cGVk{S?djv{SaZz|5Cyws;xmB}nd zD1irAt1Ku-3Q<4Ek5duKdix9Tq6|Dm?cq zSW^D`M@Ucn3>zZf9F!t)Pon&+@>a%Zn1VpzJe{4A60mj3S%)BVJxM9&knq!w!@3YijT*! zbElQ|JYz-_wjhi++DtFN36t%n)O_-ZI&F%erAZq3*D!L@&SvIB&T&@)fBejO6hlth z+sq!yIUY(t`6qtcTAw{^jz-h^6mv}>-@vId);WdLfR$xTpF#p5r%c|ILJEMGv51yr z5X>%RYg&?IizcNuW=i)4+>`cTB#r3d`w})ajU0lC<1DcinF!g(*-;G5E03Y1B`a-3 z+*$i{GQcy712e+;+{O)sr#MMBM0P$V-%KatEa2&WIimx)q=l3s*|#fcK;YgkxotNx znLz8E>{fSFeRl_I*MnRH%?=jOlY9^Tx3jZ7$tVcj&Juf(4^X+4#rG!5;JdBzt=?oO zc%0vCW7ev`In{6;--PHR)!oSb&1`u;5)NH9vkU#mczC)=Zr-2#Md0;D7L!GuK*~nu zJCO8-CmZCc1IaW<9EO!fSF#RHE3^;F;G6uU%y_TZ_G{jcS4=!LvxcRt>0lBN=lHc) zXRhM&ZNlFrUu7`u7B-T)+sMLpAB=|X-{WlR5OM`v*08oi$z8Bm&FT%qN@!Qhy@ru6 z0za*k3x|`o1Qs7=k4BJ0SGN_YGZai)CmdM~R>%!TlC1>p3}L^FA`PIy5#}>p{O2Jtsw+dW5HE1dep<@L=3q-%%k1AAQV)JQz=Co~5%gHXZs(F5 zDB91`$Dnn-yqIN;!FGSTk9mwGSuk-Qn=+R4f;N;r8Hd9@w~{j@hpqco`w+qqXbcmo0kODw=0EWj_wMkl`G26@XIa*c$1So=TX zqt=S(i*0%W&g}25$>5^r84B)!F&?d%5jCHzj?^bW&fkHv%k8LE_#vap&UG2wSEOi?R zaB`Y~K+ZbF|37Y7v@nC^Z6mea7x%)3PT$Y5hxf#J4p+8*qtreN#bCJ zCA+p0HwmMrFqd5<)2H>6s@jPQ%~+(d<**s1vPrwhK%e`QzZN)+v=DeUg~4tz&~M;p zfvN+^RwkjoQ`nr{WU}8~eU%o6>B4g?)E-AnXgWQag%*)qzx`hd)l-M;a+6T_Wchdz z2_$~?Cw-x6mO9ql5fiGOPhw;*$@7^tu}Wz4cx>2VNDF}uli0GoWSHOcyea{Q>04AS z*ANpzXD70n#blLV?=OXnXRY6wgzP4=hs9X68xy|JWE7GS6PkwRvB~>TX!Mst8`bPO znS`!PV1E0_GQa2JzR>hht^YN|geK1k@{jw;-=x~bF<(f1kE#rjdpJ~}wI0Ww$XIOG zv0q5+Q!{&mB0^8bShn^c+3L6IOEqs*p~)tpS!39ML*!4tVYy#uQdFU~hzU*ObJ^&_ zg^kCI#) zoe9Vo&9)rHRHN`=byX^+rs{~8$m`Q6_Tng+>!*zTLg`)n=2$&6F=BLOU%h9Mz*>m_4Ym$ym>aJ7hs=OM+oKBPE*jz*dx3Td#?W{#e;Pd{mqEKwH5tAK=pxdbZ3LEWB>2&&gNf7+dRKJ+kG9qzrNks-Rs1=MM`&Z zOJZ`brGcihqvG0M^Ii=VYZX6--@rLv`L|}>ULtk-XS5N>BOvmA~j)gCszL_>>B9EZ10l3(5@pJc^6lRt{vE}yQBk{bztWANHUyg z&syCh=UiU5Q%7Eb_8G>o0MFa8(4W!!t=XQf`x(98cJ0{VpRt-T?bt6r<4~H>jy1VY zy1?+Z@|yc(wI$@YloNj^T5ZU?WIUt((%T*JEds*ZU5APvBO86quHVYpl_b&zB>#cI4K z17L3?oBN)`G%<_9L^#IqOm4JwRx7^E+@QXQ%#Gxy)k+cWP_X?wsniCQ>MbaQQzM!7 z1M&BYG6B_9xr-M>D!)j%@dpxN>C?52nhhTHSZ4*}kw(RTd^3yAR~=TMfg!fG;n<7f zp)iCqjTU}`8g*Hv7IZ-BGCOk^=2RLcTBCI>Tl9B)T3Ov?5&jxqw%r`&JAulh7#MjY zqKG%^X92D3`iE9cr~#p@!~zyUm!DW$O9*MRCq&J(JXyh22HPQ7!De^)352tSJ4F|M zAW(o(O1sTC@(syKaS%zIWJIE4Tw`w^qDc84w1;p|CO_4*|N>QM$f$X|1bc1d;uXr)~6=kC@)rG5aGtWeulz*=RWfL|y+D%@lX(>g$uyPaT5N+X1oK$Z7l zGi&Vto?bt0<{Gt1v`G3!S%V>JJhhokb%0nX+{}(SfEUc)%HZetR5t4+*v---pt{!xl`W}k+(oMF&b#I5 z5ikXy@eXFu5d6V)2McQm>2Ps}JiZ~cvxKNC^3?>m1RnBwFvHHLcpZfU&67_zJi}iv z?`sUbiASS#$hB6y?|sP)T_@LR0`0W$Y!I9FEe@^4r`V%!VHNzioK0>HO@J> zQyXc0moGzn<=oqak4hV5?kzrmw7Uce%0wg$k&l1E)%KyviEPChcYz7+UP8iJ`Tgcc zgR+V93baF~v#VX82o~Rwr*?&G0^zsiKf6H?fw#AqTMwMN@om{(Js=b6wvn6k#OYWo z{)W0Xlxq_)#{Y0d4>Lx&`%qEaSNJ54+p!P5aA+vk;LD^r>>sMJ+hg@Wo9h_oViQ?ETrE2s`vSiAlZ2A40(ll#Mb0?C(Tr!44h4!@mY zBZk7%rUTD#uPPI(-&4f+E`Q@JBw2fK+aWyfhYZx}>_{xmBehT|{dH1ik^4fS5e z^eEzpQFQb$W+7tXS=?7M!B&49Ve#!uGWQn`B4w0q^ozO-Mi#G`TKfJ*3a2|J>v@Vz8UdL-+<9_rbA;?vO-Y<>VHC!+ zND&hyO8CCa*kFS9%0vm?UnWXqQc=e0j09h}R>oS5#Ch~X8Ot3BvHAwz;G{vl{ZKEO z(B{~!{FL*R`o61&F*mi?Z%>M5#5H4HHQB*ApBtqwzV|ZK z=Hmwp1uM)#7M^y<-scO@wrKW?TjFkN3b=V5Ks(2Txcxi?0 ze^3j1r;5AlOKy?Mg{q7flrsAq_yz(_vUWMp%R0GkmR+0l=`r1``yfLO8Rb?t^ zc&&*A?TC=7(5*^LsuDwiZ>t18>k$XqVjMeGCHlR@r0D1gQ{Ud@Sey`CR|Q@+3YI6A z8r`!}%x2qhESiICI?Rv4)+sDy3v(ebz64qL1_k}J(#m3CTaft&HVHam1M7-fe9uKN zAJmEC8%I_$*BNu1y~qW3a4%(+V<1Go>I+5NQp#tf;K8I2FVr4rjBS?P1YHdd^7+yj zM^$FlWaKN(rNaBU@&9CeKFj=BB4l3tKbilqpHw~7l=G^PUDE$%cB7147z06iJ|2yk zE~$gJ*!S)S9K(y+NI*_}*Y(x`S-qB)9^99b`T9a1riC%XKD0BMq!+AP<=io?4s2y1dDJl_oPj;+0qf zxhx+tB-jxuyA}d&m46ClP3OTHV#yxPgKaP@m=(^4hcKfi8@>Scz@;F$#zMHJ@v0So zY7}-I&#?jDZ<;Cl)UB=^vs(%t-lue&J%F<%@t$_N%08}Rjh2GD_gcY^R{0uC-cIFD z)v=*V(UC9km)9(X;RNizXO7F@0Yq+OFPEWno4kQlEQg|iY3s!}#gy;yi3&F8cok3% zIEisQVLdyt0*!c^>g?VMs16y`<##JUC+VHnr~@4LX0E&?h;jw3F5Ys#U5#$fNk<$j zcyg=$!RQ0A-Y4{?F1ru5ES1E#;G3K=3daQ1AQ zc&=cgs^FO5nJXEpf^l4;>HjKNrV1G%d#`3U*I-MGTgCRT#XU~wDrUD1roxhyY~ea^ zcUrPiR7{!eAR1uaN_KD^1Uqy?SaHX+=|}vmPPWItxyW^+k6(g z11>}L`Lfkc=nQaZF6*}&ftLkxWD!gNn48b`?uEwH+U8^V9N&M$X7s`*At{C#nOL;S z^Z2GNpV<||_ckXqyec}ytqULF;?h@(?rNvm^6O&gL*Sp8a+m#Zz{0ng9$W15)kM!} zpFUq#2J7W|#{jPh&rf92kHbW0Igv>v(8KZ%Jl9nolzddr!X}qMGsw?lr%TW`o#xLP zl)?kcxCtmy@Aya7sE5Ye>CG85qqt!a_OU=~HGw6cfFlq%QHGOn44)W{WhcsD8C)38 zx}1UvupGm_J&mktQg@hR9xH*lA=!(irx8IRt|D7-oAG>9@J8&RH-($S79#90cez zqrPg)p<}QyKVRJbK9UVT2cEUNa;eXUQFwTO2f#`!J}OcgYfa5BCeDVD^1gF?%(%MB zy)OZNzI$s3v$_Hq-ZzJ#HRNZD`0~ZTSEn)r(B(fmjE%ekLt*q_HlmT_%3fbV`#O9u z8+sLLTP+&OW!wsevW-`v2J|1w&R&IS;9tmEU4u>#J&0|&22UY9TV8M-EO5IpP+oom z&bY#>wyc)|p>V#fJXZlXfa2Ej#y_AX3F)7S<@oY+>OKd=>C{0iRR&UcI(0Uaxj%!} z@H~SJdiOm^u(KDE-1>Y7d=5N5yQ&U;*zu^qjPGw>LAPuRk-9NaA z)u+g}|AD;{T=+&V_z&I!Tx}xHdl$eg)ccM#*5c2O$OqXNtrQN02iaC0_Bklu z(@H-99BeNiu$0zF;Mqp*U@P^sgafJUpsSPvaxkmsCV9ZpV3y)0Wx|IG@(MS}o!B46 zx+)De;%Zu;Ey`fW-K7?8eK~e-1KO1=<=QI2YMmih_mCPAxKWd}^^_JuQcd}HPpKn; zj^(Vew^S{_DGi5>`Z%EmUV~wi`IQsywJf4&2n>;11KC7xsaC+VGXm{jDA1vSnAJf1 zbPgS!7nPT=5O@G|9`!+^K&E(0-GhIrff9XPxH~Z81)iedwg?Xn43TFzo`yI#nultz zAwH6aN5o2kcE!pN$pqJ3I1!Ievz0#54A9hI0oA08V3*UP1OxeZN`=}wNU6>_$E&U( zKb>OBs!2nwH=p9dhDi4S=2%_Q`MmKrZi?{=RXN_rufEt0!V9dc z@;llIW53Ry&8#jpgn%-3w7S#*n))(VUnv5DQ&@9fDcOFR4(l_Bm$*Rt%}KVxSBeg7 z%dsIDXgl>dm2^0gH97c>zv??rLu7=Gz4Dc6INEZ_dqYq%2Gbun!9x6`uol<-5Dl7u z_2ei2I`K>elk+2I8Ch6NT%3dZi}GKtCIGR+ADkn0S-&mgt?92s{`En9X480yWG>(I zlL|dCIANU6_RrS~_yj3gp5iaHkl;iUb}3NuhD}XaMW9q2W;S7#K~f(F z|0dkEYw9PuDB&m@A0&MPmy=j&kmLo$N$g&b6ae#+m>~!U!-ynSy{6;|Pm|>6noVBc&9dJKC_}G169mq*^RJ9;aVL7~2$&p3uZF=9D0Hb?^)01zds4EUH@(#_|$S=twBL!Nb0x zEG$tv=6$-BT6O-Zr7(2+5I{q>vlb(bq@hqfgd4hiSQM-pJjcdTSNI{A4Q(vdwsOWC z(BRpGv5k$T8t{84JKI=l1J_enwIm!N8)~xANzy3@43XoSNcf1zAy^*PRO&>aRSkBo znY0^R1K9X)q)52$FYozAax#aoM)Ii^(lZHu_K^3cONAP^>l8qH?Bl45Jk^_O|X7a0kQeO=; z_`tekOQB%-L7tf{wE#H!R=z%1dQU=1{=?(TFYRp98w7-%U51102V|q2^?$=&4V5;+ zzpvSfVN!(qiPvAIQtj-{*Yd+*5}x)KyR!JvQZamTVJ}8Y9j$iyh{me>QqIhg&H>!> zWIki1fso}W&m1c`;N6EkW8=|$n!B?XLx#$ApJxj)uQ_(>iC-nY;YjbuQszhv?8hO7=P%-Y z_z-iJKSzp#SaWuIjuZxV=IrGhsU;L?I zPK`Zjl5VKtyS#+7`yDoXp5*QG?zXj=qFeV-n8)Xwn7u|E2|m2dHqDcgVC`-8be>et zbtvaqah{>oo609>J@7O?Y(7pEhudt}e4K>;{K)8h?C!O#*@OAGmW2PvIxLV<;kQhA z{Q@b1=zl~N!gVUt?#>WJf9or33Ncu#J5_BT6cHQXLTz7+;^7f`LEQQ7u2TFg7^zMw zg*}2I+H|BWR7Qr%z*`qCma0-l6~4_>(x^XCrHmS*u@Z}_NQs%gLX1J>F&qUyF{DT^hYeKjsNANvR!Ju8jnE|#JlZ(l=f;ZNxQ z#UtvU#*QtPsx_>|Q-5jqS8y>r?lf8UirRHW%Z#tVO?H5CYTRd&Z3m_AS^5$*pPS#a ztR=YSOnA>$E|I)-J>GxSC`~tiGj}#s#k~OuCbs}G|*1|Y+|VtZP)243g+VqP^i76V<$?bTCh&X{w$R|?aWoy zugIFFV=gC<)j`LSPDtslldfR?{IX2Eh~hq`t&VLtAG%ZeVplT;SzY{IO}pt8V;$)YjsE34E{&tS9hfSTIju>?f3;(s?+;e>j%;n(ClOH9!TS1U9p_|t3>g}Z!fcX zB>6&(y>hKb(p=n(6tP2(r8)ujMWTi|&9Fkcl!7EnT;TuStzz}C*BTXx^2^nqNRAro zdONJed9~jT7OmhyK6yJEsz}XY?RF+Bk`88Umw!?uKLTC1v3C^+G~LFk{UQBmoxN2} z*m*1a@P}02x~`G--O6Grr8Kzu1Djci@&|rkKU7M6AmTBzdnOIHey~MNcV!Ek^$a_G z+7@=<89H9ox5!SVKsHkhzwbzmnGYbXucUzAc`tPZnRL?YM`1UZ7pOhLyaM z@S1E5b9gOvhrd>{VXvj8VJ%my39Pcsl-*B181PGj!sOZ9MK5p*HuA7#wJxjKz1Pwa zIJ1f^`%hY8U2m0I0KZjo^cyUI+pgd7bGZUHKOPuw?p%JCi{D8P0Xi*ZBMg!k+x=0h zB)IW4NI|Uhlav4{OW3DR(g?C?$u*5Pn`6Mv7`2$)Fi0cd2P)Dm>7f|`wbl6kN=*cT zs|%SgXkNno1?vjRMtk+nm*QD2dXWeHjr7@(rkz3Sxl~_`QDmjsrbtQa=+S|4-QapMedWJdFKfa z#>qX}YxDr-3GCO7ns(M9396`P0&CPsv&?c*Jg#fk2Yg@)t7}}?%T5{{w2YTszSHO= z>(Cfg)+Ewr_H0uDicVg3WHBDf6C;3dSrXc|Mun%K39eh`Kt0VUtKKF6t zEi%##ao+#vEu-D)1h9BMJ3m3=uiuz}W}1Ht)e23Z`08)D3BdzM^>fDgCM1+2{7btT zCd7jy{E^uh6M|zb+}VWm;RtsvtP-4zwQr3OPUiL=*6dmr z@Mk^~H8%RI@kXvQPr$!_JZ(bEIKscIJYqs{SyVsc+-*XB=7KX(l9-Bc6yPnUF>t z;ooFNnvmKY@kS)ngm`nr2a)O~#F8WYk({#$d5wn@;ww$_4kqXchxlij@8gWEbe$u9 zi2P|nN;#rK}A_%VXB_?EL(9NRug6QF-O*OI$B=oPu4fO>p!uL`rO z!mdnRuxkURq}*N;(}74{lNJLO#ng`4-LNj zfNB$B%18sYQ{+e<9WVfG1b*MwqZg~tYm#gX^|86d2=`(QCu_=W>r?^FBbdb$&2-z< z5hf8ioUtirDr-eB!xS`l+rru8shTi2jPGrxYJ5Q7ot>MisphDkZOPBb^a+?(f%ZEm z_G+qTv-3j-;mlu+>VkG!j2Qh2My(TK(~> z#r7zo+}a?TRxPj#o+@LzoKUePBCVfN&as^;rnW_QE?i25PT(?usa<-6V7K@V4L_j>m7pALVJz{wu(=3!nyFa zP-A_KvfITSRgW+_5D+5v3u!3<4Au-rzz$VJ*9@sTCLokMT3}clcbtOID}Hyrhwzs0 z*0l>>7MEQmo8T8A$2&|nPkHy?F%Jg9sy&nZVPFcW&O=GUX5Sn#HTEw0`WJmrTJ)jr zFxvZ^)a#i;Fh&OTOd#ZL#|7{-VFqw9Y#=3?ct}7K z9|>#HL_TZMLX1HwXGvucmqI_e8pMZTn=~E776k8+wGei}`%=X<%qH+5U1tvfika<; zaLxP~O1OTw* z&$Ge4h(vGa@5WTMcw`|7$feZMp5J-eN0a2p7(IsKl+)iLH(!jYPC0#@>CMy_B#-^i zlu?Ea&O7Dob?ilaRl*UugK}!|>?Hu?Puj?kZhSqGizw*_@|{6#a;5Q&?E9f=7hGpd z6$;Te;v2z<($NuIzcb%$wV!afYkIlXhH{b;#amEc@rj2VpLRL3#;nP~o`;y;7jG8#TF%1sFK_Yzze1tgc`OW{_yrj}dR;$! z;um1OoHyCoKZUV$^9p}oMn?V3-vZ7uGGE0SloRfJIjx)W8X}*@wel3A<`?Un7#-&VOw@;5`V>VzsJ-v&K z*^qHz`yMvt?R(f*4%RX~6RcWbb3CB3ZK3d zL`6=&4Wgo_3w8pj*y-+_EOv~E)7v^(j2M%*@9bo;0EWW!Pu(m*jMKKe_ON)cPtTgd zqFw*+_5c4bRC<2@_vscrQNY09qj|xjv-QAspy=9pzyJR?ExyLd@Io5M^yp>Xpvk}x zkj438?pz?Z8>}iIE9Hel$?yLGFTR5Wds!3YKx&v?RHCYp0jlxnyb$o>4@6lW*eG`M z7ePS&f75xD3=A)}L8PJ~QZEF7mS!=$sOSdid=q>4h3$|3Ac4rb-~TroGM!?ao-mDt fW4psNmPpCzhu5>{ZU4TWg_CKr0i(gPO)M+`g&X0? diff --git a/doc/CC.txt b/doc/CC.txt index e54f67a..0df9442 100644 --- a/doc/CC.txt +++ b/doc/CC.txt @@ -13,6 +13,14 @@ где ident: - одно из возможных значений параметра в командной строке - пользовательский идентификатор, переданный с ключом -def при компиляции + - один из возможных предопределенных идентификаторов: + + WINDOWS - приложение Windows + LINUX - приложение Linux + KOLIBRIOS - приложение KolibriOS + CPU_X86 - приложение для процессора x86 (32-бит) + CPU_X8664 - приложение для процессора x86_64 + примеры: @@ -29,8 +37,25 @@ $END - $IF (CPUX86_64) (* -def CPUX86_64 *) - bit_depth := 64; - $ELSE - bit_depth := 32; + $IF (debug) (* -def debug *) + print("debug"); $END + + + $IF (WINDOWS) + $IF (CPU_X86) + (*windows 32*) + + $ELSIF (CPU_X8664) + (*windows 64*) + + $END + $ELSIF (LINUX) + $IF (CPU_X86) + (*linux 32*) + + $ELSIF (CPU_X8664) + (*linux 64*) + + $END + $END \ No newline at end of file diff --git a/source/Compiler.ob07 b/source/Compiler.ob07 index 0b0b8d6..01c7205 100644 --- a/source/Compiler.ob07 +++ b/source/Compiler.ob07 @@ -11,6 +11,15 @@ IMPORT ST := STATEMENTS, PARS, UTILS, PATHS, PROG, C := CONSOLE, ERRORS, STRINGS, WRITER, MSP430, THUMB, TARGETS, SCAN; +CONST + + DEF_WINDOWS = "WINDOWS"; + DEF_LINUX = "LINUX"; + DEF_KOLIBRIOS = "KOLIBRIOS"; + DEF_CPU_X86 = "CPU_X86"; + DEF_CPU_X8664 = "CPU_X8664"; + + PROCEDURE keys (VAR options: PROG.OPTIONS; VAR out: PARS.PATH); VAR param: PARS.PATH; @@ -287,6 +296,23 @@ BEGIN PARS.init(options); + CASE TARGETS.OS OF + |TARGETS.osNONE: + |TARGETS.osWIN32, + TARGETS.osWIN64: SCAN.NewDef(DEF_WINDOWS) + |TARGETS.osLINUX32, + TARGETS.osLINUX64: SCAN.NewDef(DEF_LINUX) + |TARGETS.osKOS: SCAN.NewDef(DEF_KOLIBRIOS) + END; + + CASE TARGETS.CPU OF + |TARGETS.cpuX86: SCAN.NewDef(DEF_CPU_X86) + |TARGETS.cpuAMD64: SCAN.NewDef(DEF_CPU_X8664) + |TARGETS.cpuMSP430: + |TARGETS.cpuTHUMB: + |TARGETS.cpuRVM32I: + END; + ST.compile(path, lib_path, modname, outname, target, options); time := UTILS.GetTickCount() - UTILS.time;