From 1340606c2ccd2ad874eb20bb60c9ef674504b38a Mon Sep 17 00:00:00 2001 From: paladin-t Date: Tue, 1 Mar 2016 19:26:46 +0800 Subject: [PATCH] *fixed a class type detection bug with the IS statement. --- HISTORY | 1 + MY-BASIC Quick Reference.pdf | Bin 228121 -> 228108 bytes README.md | 2 +- core/my_basic.c | 24 ++++++++++++++++++------ 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/HISTORY b/HISTORY index e7af3c9..491fda4 100755 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,6 @@ Mar. 1 2016 Added an OS statement +Fixed a class type detection bug with the IS statement Refactored platform dependent macros Feb. 29 2016 diff --git a/MY-BASIC Quick Reference.pdf b/MY-BASIC Quick Reference.pdf index f0412674511ea3d7c21adfc38b32375cbdd5a9db..cfda98e0226605de81033cd450d4899f91644952 100644 GIT binary patch delta 29460 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 NkBW*a>!>gv{XgDaEL#8o delta 28725 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%0AVqkb za5#Z4=j}=0ZIQDNKx&cC7x{ia@VvzJ=mh;pxPbiPV|4Vznc139y*ThLU#k5KaTGGQ23t9Quo2<6X<^6hX>Io(L?Cd zz!#rEpS>dYQ#Ah(^m)*ukI`$Ngq$x>h+KUE{XIGZ8uV%O48`RzU`@n`jF%l0hf{!q zqtL@!mb6&b6Ee1Lguau$9hZ7~2=Z@Ua>oG)kEG-+P*SW#qyvAcC2>{!{}*4naSd8WB(Sz|+eU2RQuRXTrFQXG#)3d5m*%Vy?H2Ax); zRw)%=U0_t)7H;1r%tg1&anW!`M+r%Xhah8UNyfH00kYaJFEb}>qs4^FOJ<X5AZ#$;Q?Xp5{0`d%tdL!0Eu7_?hx8syIO@g zyiI7EYd?Rm>v-F?R;cfUPTLZ08P%2)qZ3*kfI5KY;^Cg(2$9nq3w1BpIPohjZIWWg; zBUjGJSL_?em1FXi{O#MqK|-pwZPNdNU9P!f+l7*1z&`ztz&~6U=Gf@A?Zdmsd1&-_ zxV3*(#M}D*xlAhnnIWmKZ6`|8P=06|bYhI4p{IW?9iE!Ag;$6LAVVND80+h&w@A0m z*;?knxR>slOSiR>b_s3Ax3!85Bz1**`kzG=xz|rr3f@!1{u?0em~*rMQKD_f`$u-n z1-5xdfIoK#{odeQW&qGP5bhrxAXEzTbBTY~;c-FwM0ywW?TXTJVbXI|L@o3)UUq;` z3o?Xu_zJIRgbO^7izW$0S2PO!*o)+1@D!;8fi9~D5^SWUgIr?Ctt}ni;6PCP`zuZI zN^Md^=G05-;vpm7Ch<8R+BC5=X;4CF8*N?Ez{@ICNDY)~yLLMnf(z-vaEF?ZvqOKr z#701JA&-G-XcnQOOPE9Jg#PeocpwZslv&qL`bKa~>ASiwyt-#|Kc%+BCF?IsiPvkz z)Eo-JWjVpL01vh&y)s#8dL>QglO0!F?vyVJ$JOE0eaA`VVW~nSfCNFOmC??jyJ{_! zAe!x<-NNldVSyLgj}Oh~j%`1FB9nhPKGn8uS3RjC+&OYQ+}GderETr)|A_Yn@+b>h zjaRQX?gFn8HA3}s~pXs>EU^dXr5Zm!)SP(5%YLCkAXZ+%*)U`@&_$Ma_s^X zgSu@KMhJP14(vLE3%|YVLq2z-ygi-y)+O6R@(x{=KeWN5_G>JvI@$rB*!+$UO9Jcc!;zEZRjWW zsv@1k1HiU&g;1n(P6IV)q#B?^JH3anBiu9$v;hLr`;S3l?%2TGK$1MPe{6uVGe3tq z!u3FQu}(#lJSaVI+!8LQvVRGpppD!?P8w(%>gyMCypV*44Twlm>7nJrVYoEBO#p0j zXt)npUDTyoub49mDv^th(nIT&E+Wz`Hlj0V=QJs(5dI0QOA(P&L{tLp*rgEU-tqs;9lfF_4v#g zduyw@MD=al0)imm^?yi>FmB11IL2_+<7p0`ty12@nmgxl$?0a*Jq&}I7k;_$a(dyH zmn?PZOE~?DH-7mB|IW+ix^%@G7vCr=#pa-y9yTMRQrVQ@P>QLFMXM_+%A1&~%4j%b zWN2PxbxjjnQSN70o1D|ckThn0{J~~+?ShiIG2FbdLgDwAY<~u&f+=uWN*W`4-*u73 zluyN~l&nInir1_NtsZX+{Y+){*&RNMT5a(;>^`$<;a?TT_kOQ1zTd))zyBbsY}nFV z$bMR@W;msC-tTf3H3U01nyfshv+`z#T4gcoj3ZnqbZItuJ|v95(~Kub9H9(SX{ zhC(QcKKCpt%zwRkTF>LI@Vo>>=X1Y1tph+O16lww9s)&p@@=5sditG-;|RH2ti#=f z;b`O!dY#@C@`beq?BMiB&+D0|!!L&aDa?lTVZFuIYuTXKfSQ||Ep>J2^x&Y`S!V{& zT)|%|H&+10lY>e6hmy&N!=a=okFi14$c97FXmt%1@qg@8h1nptUyb=lAP})?xXFe8 z+|6pO;R0X8gw^;YXK=^-LXpSF9l`&Gzq8EYHFB&qDDc-#%=-<>i^X9GR|>6D(H z-#n!wXP4jl0wgMr&gC?uU1cd{Al?($Afu?+0?4Uo#_5a6Hz-a3Lwp`G*DXs|R1lmE zMwc!70yjxrLTRB(gAXe3?K)2&>fUSeTJ;{aUZqf|^lEPB`wyzLDwb1emB5q_=kp&c zD%5-8-VZjhkNJz-I*rw52h93&@3G$lt}8+Vm#zB(7!B*^0bP11q>uD^m6l$Y()$7{ z0l%02`vMz(IUAOHg@3{P%n7{2sSMie-Bq&%B zQ4-an?`J##!a@PULIJ`;0T-YrAOLOx^Gqre_t-OkaNVAP>vp@Ym=rE1g^NkyVp6!6 z6fS;_DJT4Ph9EUsAu)1=g#HQ%{S^}WDu;fRJEloo?YB zh&s`)o<+++`I$hSEthaX&%AWj(=)}%@_D9zIFl^TSZ%ngJYxo(S6*1I_qxcvUV?Nl z&yz2>#Y-gJ`y5k7Fn`KR+4|fmw{*6N=Vwf2+=cY1=Wz_xAT5q&bY`Ij*JN~h++`*_ zuO(28xyI~hoX7ez%e{(3pJN^;PAE1K0)XzkWG1RKnH=OV@t26QNG9`Cpcj^qfrtlx zCy!0yAeK@}X{B8fA2O=hZGI&?+;Z@XgUcs3H8^#gTCX-%tlPJ$cCe+eymxG3S8qkb z*eBK}H+45!l^nw=bt+xDb+EpAU8SeIZ}-IRz6!kOx{m|tgpex|fYD49iiiC*>ndv2 zG?Y~|t>3q{=cbJ%CU?N9GrO#o0;{HfAnfy%u835xX)Lc;*0)d8$G9J~h8?Xt+w5HH zeA>yP`TvFT(B{sawG;K*OEoGe3mF$nbf$z2JMLH8f^JvHrq_r(vM z-eMPuyhf|XVgqW#(y_MNUpjh! zKj^PRq5w@>>G^en7l(uwhlB^m^UOX}fb1gO?9yF!>8hPr9Ymb$^Y|~%XahvI1?F+n zX*b`g=mH|XdMPO(=%R?GYg5xotTn23%N@8$Z4pN`l~r)L1&i8R+)$r?B!?T2!x0Rz zw-P!7o2zhXeNmzg4npgm+$H8^_J^P)Ue4&#tD9G^U47H)r&lYMD2hKx3W9cWIT3E_ z6$*qZ4*c^>K-3mgPY`23QWiu{5UuTf4*!Xo1zN(_`ixE*_M%W?m6DKjf7g?}X)VU^>5O-1)*>OfKkU`$W@LwU&EhnROd_GO0|N`h;D@vMex{CRE*-F3KeA@l5ZAzDx`o+s0Q#O-{G1 zFktoYDzD(RgsUUb%6K4@Y}(jZHPl(Gx7c~T$-$f5yvpHrSi_}%1+l8Q5Grb1kAVBO zfW~eHT2z3uFqaWbD*`LhD_EVzS*ZtPRuZ&U5~W+o6aIlw>dzS?ip5L_>k+{(s+Y8R zy~MHg63>w{<+=KKMxC*lo!>>3d?nLxt`eh4Tv?e~UNn!r8Ph8v913y1w^FN?{aoJ- zL%cKs4qh^o?|oZ;2W8nkpWHfFmlln+^18Cpt-ztgmW@WMs+5cJTv1giVpz)IDC??3 zoI5JYt83V1zQF4V7#lv(vvQ`Vq-pkRV@DljYwDH_b(ZPXdJU)YuGqMva_G+W(XZUo zI4!8p0Lkayy3?6=ba_Z ziT1t~t-$FIgKRe`_JM3?sIHx)y7t<-RhCf%GJ0Cew^PBCx_)ildX)s`1y50{76lJ< zD~qbK53nC&zmJ;0v%4O>lCfJ#RubB+RKxRE3cM9}t*mIC&;5n8r&$s@IKTc3xzwy$ z3t+}zvf!>!wO-Ct%2udUk{a?7Q8EBfQlavCRTU*1B4sN{fBMNI`UM_t>o1CAba0NC zN>yy_s-Nlm-n84d)v~{C>?jge{7dbs>;6SpE15pclay_ens11SL#mk0v`9Dm2G zrjLdT$_J0FsTuZKoXe~Kt7WP;Rk`P}eS06?Ud#u}gtBybBv4qn<)dARl>y9~&Dree zVCl-VbM(5hjE=pYWR;l7Dl?N+;xenmbyi@mjMJ|pno>uETStUjM}=EQu4z$* zFeP{y{5)2kEm>9A?(U+j*i5K{)6#G+iecU5j7j89sWM;1sb$A3~zb)`B> zn~t_#$-pb`>)d>#E12hF#?-yFwXlD~!d+K$_QHRx?p(IxV?zWF!Q5||z1%lZJ=$_Q zfz06&iHS?3ZkI@CD3Q#H5(!Twq|17zq2yAy!)LhU>?oVZ+zAy``gXXD_jPMKR z%c33D` zJ;kl;3#bkK@>wvx&t;ZDr)!B=Cu(sGIY&}B8pKfnM*}$O$59`S6@TD3hZ8KWZ@>-p zxS<3$k`*Q}>3B)1$vLA1wDAJez?-COa;EO0iDa9WchYhK(G~n!ev-e5=lG1p(ZN@A zMmp>7E5^m-S}{=(yw%aMv-n^!(+0WDE)C(QpA5o4I(WXh`9g9qNqx>_TGVxD5dQF> z{6}UlK*m+F8_vd5tbgp0%K}ZDQm5#TUIr>|5q-)2zXh@CRa$ z%D$`M)K+Cj&b*K%sCFf!eNdpNdG*#%JtSZpqzubmq?6GR9PF3u~G55krfBRHVW~4K%SLu{2phj1{abITg z@#*@;eUA?B{^Yij$JoOMmu+bZF$@z6u0FIeW%t-sMz_UaHR*M3m$m7J`5R`R{b*b3 z%xC(oH$Rx_8m%E5zZoznus;9;|6?Z#sMja@Ew4*s>VKQ3$=DN<{^Fd*ulYMN{$;{mQ%M=Lw>& zj8_?oSUrG+MQM-@^mRp4KXtM#)$VrdZ>K`hzzGGlPwF8=I4Q zG70o0vwz!ca7TQW%#l<3Z+r2E2Hq2L8Lci$ED($b&px&3mi}a6GOV`xq>+GmoZ4~2 zr>ClL)Ff#chL!H;v>b;hl2KFTB zaFTR5NoQb^q}xe?84a>)tE+;XqI4cBo{6sVcJgcM0F*jT>;q!5U0h-xlrLqL*oQGn z9t$e7L$tnrQZao0)_CjkOyLrqvDv*ARidlAr)2x_P4TDf6&o``Q>H!EdP7UoK!1$~ z|N6iSx2)ttmEmlYY$I^L2F77oV4=fBO$mF~txxZ7`{+ocHPKR*eWb6yapWkGoe0Rz z?TSOF5sjR5@I;wVCE}GZ=9Mw!l~CuEFy;lVe6qACGM{@TW8uwU-)b*auk=JOm39bS zdS`HulS6-&N2^j5}eAr7>akUq+j$+DP>d{6b__9Yf&-qa+*WtD`>Du1a~YH9lY z4kBm%a&exX&e+q*dS2u_{O;LxMER_1ib>Tj(a^uULW5Ic#Gc200dtqf%9E>CfwER+ z49izFwU^X(mUQI}RjRU@^K(9RlDlrMljo`kTOtDdHRJWetXaD>3oi1mUGa)&)LPZH z;?`8%OdBDKGiX&gid#~3vwy8uYQ3&|J8K78OZk$X)hi1(9q0@!TD#%8E3DnCa~AdC z!3}FY>E-dV)*>sI!CgSX5J>$|um%fJ@3Y98`(36A5Lx5J2`_e0Qo3-|SZ!ot8tfqx zA@v^Yu7z`h8wWbwT5G3vHMbV6mQdIXI0DlPQwwY`8DvEtyT%%gf`8prDIoz@SgAwh zu&J1eL&~ypk6>n$M>RZ~eNoL9`u!oBMu9Q=7o|BQ6cn13*)zOZp|=@v9cR(9TkI~Q zf>oOg3n}JRt4;xStp$3L0KaB6^dyZwnlTGyIIV_erU*|qq_7KE;TbX|;lfVhwCcp^ zFq-AS8nSX$MC6y;(|?F?Z5UVUuucGG(hbcS_iU#D4O7{V`R3l=RML~PGw zlKzvgh{GnYm@O`tEm;f6FM?pUMQx1*{9(I}`{`?(&K@f8Ma)=(UD-dYu{9?6!Zs~; z;T2A64tRYL3!}-tTWqxI6<{5y@M!ikaAFmDs}Y~Yj~lH9j(=5ZRoN4Gt&%JW>1?L# z*1XRLa$1fa%$P(uC0~;Jccm;!Uf-263$p3;>&R4@=mnCYPIL;XKM2>)N{%3L12fu^ zRYmT?PIn$(M7U&O;xCh_zrh`}|4;5Svx>bait5l^ znLu*`)_LnlH-GC$59>&;>qv*|NMGxo$L}J9(xOR_mQ01Tgu%2lyOowOmnH+D)*5Wr z)y2G=u?U90lde^j;5D8yc2neBqQjs(aU;*CmS5&6FP*L`cR2HiVWZKd#y}1GS(O=v zy#jEIAHHt*?oILX?Vq@Q?JXIVEkMwwd939lt&mtkMyE26nRbI}p{;LIE-srS|LNLWo7$S#@*)L@`i0MU$7mgB#W~?)=zxCL{~p!XMUN z-xBHH!0eZEh=zI!A@&OjCrY9J$P^a(aiI?v7T~ZK7kY4^8l3|;VvPeEJ5M|jD8on$)zLTIx{iu;TAYwJOy={B_DA~ z{y9>GnT!(}xZ_bXHd`(8xcOALHv!sCbwWv&VauBrF3`Dt@^^ulZq$TJewUc@Nt9fi zpAbV8mrW4a1p1sxGaEd z`yuLAe~-1Kjv6g}^A$ zCPc7bl>H^1L9Zh((w@{g3lM+t0(DUtl}em7sj=n*X=ap0r}<+FgVk*{JGGd*P3J1~ zxC?)sx_bkasS@|gDy^DMWMJztufQvnyg)QY2R!k6iXeDiNw5{&SGZjf+3hMJWQ`EA zmf$506|o3yL{@BsUN*9zZhM{~kw}6_bU`AzAX$=vM07a6`3#&31uV=nB^ixYK&2>y zSQ<;CA=+BIR?8q_j%#Ru2s|6n^N@h_}sB0aGo=Ila1Y_8+I>q_?M4%)NWW7cWId8 zpZwE_p-o@^^P>;`nVz2W?0KQLzUB|_9C%W)Iwrp6RG_O48)+Tb9R8qQtf-lUX@p`#hk5-Qj(cWdXF zij0P!lk6Y7hQIuqYx>L2GZlbVH%1}RJ+d{1& z-L+=@-OulwK6h95`g>o1{ys?~VvMK&CD5T0g-WR-N~t4CNsTBaj#5e;Q4%%cH2Vm8 zd;~o{UT?r%KEj~Bd8Yg%G82wDrBv#no4Ql>9z9w5mIBa zayD-{ylL(3O5?)2@s-0gx(amdYK0AXP{*^#E_T;0b=N-sVavgc`83j)dhLW}RNKK= zazUn*q|TyCMh+5R!mj2t2F-uMd1pe5^|7h(D`Dg803FPwO;n$@ICA& zL6*`ec%l$=)>^PI5p(2>Hjpe;m{9rxs9IqCi*Nk>)eLXGwgSFKU7>>Ayh)nB@5kDMgOB(tK!H62R7$bwCE!o z1)HuCeKMnOuEvQnT$X>a;O;Wejnu>_lcvDRh>q3MGo3sxd!C5_z4VeLqL-+mm#Ctb zsG=wKpT|*Bf=DQV=qWftIz_y*pxwO03#ZeDb!ncGsr>c)Y?y4M#PBs1i==2oJDKvw z4hMTwZ4G(6VV6mnz4gikBfMU1aRWDo>>7h9`y8Gy=sd)PBXfW8`1e`E)yqa7{1_k5 z8o*dl=`?y5pM5SHG24NRxu0Yoz$1z@c+aKi_ET%iNem_(f8hLk()oxyu^y4^v&cL% zbuy_(Qn@87y7Ee{ytE5;oYw6|BY+0amA8ac8)sn#0I7J~&W z427+vqm%u{)j=8lX|5Er7JEhT&VbKqIQMSct)u;sE#$XMZEdfKu zjAJ~GD{v?d8OuVrFoc5yY!2eWAQot@fWZohnec%i4pMu=Z0`sPR@@D#H!~VgY(cV~ zLsEn#f~0?bJ=_?KcLsHyPF>exq-B!C#buRV@ zW>_YBfirmGet+C;Fk5x?})R>w`aWIA_jkSN#gP(wR+k0qb^U9_|iqFLNpVW z#6rF$#X`z4l5#90_|o=Br*2s?!0{>KOM6z;5?`9{CUS9YU-~i^vC1r>C6AJ-5BH@t zWU?V(Qzce)bjHXOa{2Hlu8+63tt=wp+_nO<>MDOadsNRT? z{zINF;GT*Fq|xtrutvqvFNVA)5EzU{&T4=CVRx6p)By%5F-a@lD8Kf&cUkQIRU_V& z>8nS&cu>p;21|f7Jtaf~;Owtht>W9rj?^c31xlyON}bZ^DvckiuW<&O&+ZOdI3+X4 z8LWOgj2N8a9fL{DsSH+w@`%Bt0q@3UKsfhq_5lv%T*!b-XOK$!YmVsUtAmXl9O8e? zA1pIlEN1racyspEu;34eLS)Px1+VBKpm`H|DPxG$;8-dgMFy|*opDR@%7avr2_PbPNgkcIo8oK)su?#9NoCAKU&}l_?TsClU8A~ zWPRbz(#gjr>+qwyzBE~HcDsyvv&Ulgn$>QfM`+!-s_FXXfZh{fOhG|oDX@PQ#X{0MGS$b|ffUMf0%9y+nwmBQXBUX;NKJnc zdHBld0HUC;2uM>_$kEy=Dx!a%RcK6_g({=nq++!u{rj87>MR9S>ndqDno6hQ7=_x^ zFtDd#>pg=h$I9C$FEABqlTNXU#P_Orzr*HtIt^I6<^Dt4lgaM-P$(W!Tl{vDgE!g> z!>+0=H?%b!x%cVmS2bkxWPyDQ%0r42nxbzG*nMi>EiQ0x_GZdbdRKo*Ejr@b;M#!N zhiBgi!~GZ@?kNtdl{EN-8G@=Q(Rc7E-ZFV&iZUzAjrm7sCw->AVU> zpn~dmPKwv6!OBDCXw!e@gWZYt>WC`7x}zuc*7C4JQ`PJ$uWgRL{{f3zKYshc%@u#v!n#Pju8=neOB*|i zl9LDa4b+%~(qO;Q$f>ldY~`lDMEl^*@$yZdJGioPVD^@e-82=OoWFgQ*=kmqoMxlN zq}SSP#{RGT=f^AWc=!vSzGJk0?S21rF4LM=-n+3Uuxgz-To+?Wr2Sp&4qT_$5Bg7Y zQo*kT6}&|Eva)}djYBGv%L08?Ikonn(-pL9FnfD`O#3HlDr-oTAcJ~Ae?10LRf<-i zZ)L2B6fRQW1dS9bisGmiw-V_Rh;+5$GBt4?M74B78LlhqEE_9hli+5MV15lU8UK@I8v_`Boja z7XS`{mtw`m81dK7k{I%WREnR^eUR}%37)7&o(wKLvE+DS$?;^yntvWfq!{AF*;5XT zTRFHWqb1QrTxmMy1zSy*(Q?Tk&ufFdT5;bHXvK<4<>k^sT2hLfBipJjNcM`XA+Pwu zmoIQjOfEua z7ooF@(Ah=k>>_k_kvT5|dNGEDSSGeD#>Pz2uxOGxZjz?`OwzR9Vki+)emY%=D?v21 zr$eE-bkp-#ixfzIixVg7`oOI%K9QyZ3pg;#GAm684xZ0%X1XF0LSCH+O3@ENam_-C zxRm6UJ4E`auibjf<~>gwXl}dV>!XcFslzU@QeX{WT5pf_2DQAmmtWkg znRjeJH1e?sWOe;-m=yVo$`;Q_L>joBej>t&VrB%RnJ69;P;tOi$SC7Dlu5I3}`Enb@i$e-P<;R~!}HY8i7 zHq+UK0Z`7bv1d^dH9U)W7^oa%po-GbE)CZ!HLV&(6EV+Y=9Ig`6r;gktEqiRCM5?i z3=(?g8!zgz%h;M)f0*uFd`+n~suy0hdx;~C@5$c8Tgf~t!|BXG63EN$$B#ijlt`Pu%|WiK9D-M5yT?#} z%*PYHPqnqK=C_y}nq$XU6ru>hdxdX2=AN+d%^3Z3Py!&Q~5|Ua$K| zL&rm_KKSpv96u2cX`P9{!uKnOw+*J(eq$~3Z8>OM#@ag2VQDmfy15L8^%C0j61hKo zju&uJ;4IX+csW3XhKekS5@Gm^6J_jw)B`17BnD2L40e)LR=7aU&%iZjQEwsfOHJqW z_!T|YU%qP{#QzeV3tO_!vV2huEZJfZyoPFAoO0yWfi84;1e8A4@OLrhL zO$*<-dN<<2dyI1F&cq^iKb}z>LSC@6b>O= zskG4b)H~UOY>Gai1{qE(LymHIO2q{-n{wG67U^{es%zxZ_^Zcs&alfBa_E!>Cx3@R zZ*g0AhZZZc&TCw->o{)ZjZ!N-{)$wI`vP4{fNp0meaHpU+9Z3B`BA>Lx|p*f-`YG@ zqS4Alv?#8LEapd~F?VtXi;FaWhP_qm47;6Shc5fbk_*s$j$R?HSHuF)8rKE2jx2cq z7R`V~vr=gmJRf#JTodGUpbx82EBZvn&!@~aBuJx%aC8mT={1DIYY0o%%rg~d6J-B) zqS-73Q<)_>F-vk{mgK~opF3vECkw!`#_DILGB}fQE(7cMOt8l(@wd2to2@QC*e}^U zDCrOyT$W<5S~PS>yO>mX|jM@QN*ULS;$ZHfvO87h2c3n=3x?wbtPk0lG-SX+Qy%Rc>kyFZ@eh4xWky6s)0k z<7CV7oonlD#$@A~vh4qVDfF?ob&WYy%4}D#VI4>X@m>BzwMuEmmq=r97sa@am;=WV zPV|xhyI%7WV+Z&{3YW;gf&$}f1k_=?7*O}`28AUN5( zYB3p1suoz>wuE^G@=>X5x4W(^w_#6m>RwIqBg(j|&HZJ9Xm8_NZ;qppFt?0w#8>AX zO{jv)j6joRd`3_>9@(AFp$9q40N` zBGnbVdxh16M_qVVc9Ul{pS&xbSNP3jRD{u_NGYd=Up@ymP42=o$j9#(=Z5S!=~87g z2KNbrk1bkYNqM>lc?Q{c_ZQw-0*@r4E7OKJ_Rs;hLD#1?{eT8vaRFKK?F+1tUApl6 zXlb0k_VFji%PZXhZ0@g`21xss4osF(?@Pwffy1BFeWjDX+@S_I^5}d^tN%4<|C#JD zs$5|4V|L_~>8@5}pLLuXMor(T*iS?N8)kf)q0!J;u$K>8VR&6^(uC=)h)fCYlC}5r z6!U`ZJ?jAf%g0|yvt_vBPGC}w z>ekV!*PY^*Z?XqoM%SvQ`~2u>iMO$8DW*X@b^OWv)O&L0wtgM>MmTk@rVLiRzUm$j;$jhb>cO4lR;cnpqlo(3 z<@DR6!4$a~LgwJ2K$W5iU2Uc8c{|(3Sqw!*=?@S}*W9)3Rjb?Ao$|Hp-^M)?^Et}A zS|%&RS4PVG%lGXSwz(Hwn6UH*&8OLEf3GwSu0M&~E{nOZwlE+O<@-*7C(=Zy)=!Y zKlAU!jN8FNIni|v3;Z6O06<-IwGFLG{FL2D`IH_h;wX)j2h(8ek6jST8z9Num5Hx_ zhO?}1J4|)$Vs358nqBRg)PuZkWi+!aK!2PD)X%6r2krz8{!naeaCB zX(`u-Q?Vc7?>o%LD#seDN&V};P|+Ayx9hb)!@o;)(|tJ7ciWR%>lY(U9uMb`I$9Uq z|93x0o4&{^9u&M3QAt|8 zIiUr4sAEtll%lJpf7wlUrdEdZEq}QCN?@ z{hj0RzXq2vSJRhVk;>OdMaOo3Bfs#*!-N(dp9T{?uKT>QZz^3}?oL?x>SFoJf;uRo z)T~>S)!2NYmyXc|GqQQbD{1>%DY783cqpr2+(##UNOFc&Dw(fQFz}34 z;Xb^Px}vem*)Zmy5exyqcLz44QJgx-ALuG3AB)g5XnZ>;HAIYSzBSj<{_d) zJ(GIK{{xe#VXdTQ%t!Z?Z$=-ZM3^G-l9&0mpTE$g+VMJ}`E33unefVm;KP{PTr5~# zncf7A`+`Y#=>+v6`EgX<>mRNj!;0_%m4d;a^wucl`?K1==zFx-YFkGER}K{LCZAtK z41Pm2{jKX8aYu&_mAO;P+gIl5Bphma@CFXlR9 ziHc52hUO(!zG<4@>`RR$6aqT9U)Ib%5$-?_mp8+h?nXU})a0(s6!`4RpaMtETZ2_@ zF@HKoZx6Bz<6|o{ZmG*>E9kQy>RDYesIG;Y^c4w|z7c(CiY=CY%r@J_wz&z>3_)ZfL8OT(H!&A;QA ztAiWsZcIRJu`}P1He;Pm=0aMTPGXFzcJC`A-@EB~L57k(T|Fvfy#4h4qU;A}^XHSB z$|&WK8v4ATl@%K0uaPEw8Rj3t16y`GpM5JNBG;WtPMSDwhb5)&rbeQ3 z-E}c8Vi9sNag3Xa@w>ey{HvSfGNs`M(+T$><^@aXmbm#wg}j%Z46iF!cc8-~huaOR zbDByIHN)aXb253Q&`?C z)kX5GeEcZ&4aRd>3)sf%_gp(HnP0^0ycg=?nwfa+(py3C^nQs1 z=5X?E?k!Dwt!Fek>#%xjSND$j?`(|4Rxb`ZE6R__vLB+0kfmY8ws!lMUcX0J)gXTF zV3FPnPFCJyhr6Zr-@U%>xqr7GO%@gl{A63@;ZZ$gzbUr=ON76}Rb3b{}jfEcWr?iiPzcP^kjHi4SrC->ND2}^w&Km0Z z%+jV;zuxd6t@f!dnb4j(q4l9y)mil&c;L5Rp7XJ?JN3@ZW|C!g^=uvZ%OsML!Z(-& zS!t&FnTM_^e9GQ$W8186m7za~>GXdo1Wh-(H9Q(D90NvCrQIkp#;JcxDDJTyiPNRJ zpULy1urBd%#Y!Dcc?ydc(YO#h^xoFEr{L9dq2)9sbZAIV3bWjb*m7%Dyzo}Ih0=1_ za2^_F{oW}_&B^VX&^g4>^84S_)m17YlqOZjPVOR& z>OH*3amlVKKi?(+(Rt;~Ow3>g>~4DeHATUsA*zb9hb7TWd1~uabwjt76iQ=(jR6$t zddmAa+oB{vrE8x74%9Eo3woP%wz5&SM*BY`P`k1Q&S zaHm?(W_xG#PSjS!_37MYJDXx^EzFnNoxIVF<=z1QH%#drat#OgIc#fqi_3{gwDD8h zKR29<)&~>C|C%WNjY~5LcdhbKOG+OSm-C$^14Ks7Ef$ZH}$%~ajlft@a zXq(!x{8gQ%kc=mPul!D79qn`=JA7@;*N(ecrvnT6OIhg2G}}q0PJeu*igX?mI<=P{ zUUZip`Vg1(m{YraJ210~!@<%wjB~|y$kNk+D_lS^Ym-?mOd^btmp;pyzeCdMkap0S7E==zgUoqPc z{M_L5SAcy)=Nq zx6Zda0;iG4C88OGzw-InRSkQ^_MOjz?d5FIB~DeX;GRwS_pQ$W;^sHm+x-IReyDW# zss&W8$)gbQP2fzq>b{qsZJkx`qK!%TY61e1$@?(CXp@VHI{rLA5waTw7=LeMc&Hl{ z&n!6wYYPzaAv$&)9dx+O{UoH)6)9VDlc6G0v3r+Bc7W@~5`V9&QqYGv#r%2SAn%7f zOBhm|^fjERpe)XnBDk5htCxaFR_w=Rb}2c5Be|f*qTE-v6$KcA0UJuP5*-NCgX;;5 zmzCsZl&Kd`QEIHZmKNVBFo}aaTDy0G3b{*xJrnG*`O*FWkBZhnwH#`k#e9oM;40jQ z7H7G(>MX_Hby+_y05DvVNHIx^bMx5hQ3w*7*Gp$(&?hyl+i(ohk@G2{Z`t(Uf`()Vcf?uWlW$N$?kQ zq;eVI+%G1|ac+MD(N_JHA@3I))7||_Wt>mGhBDflO7@?~1VmXIy1E-j_iAH4_0}sH z@wU=v*f_?TUaNy~C1UVkGi0DA<4#@W?c*{ihqcP{SIDusTyzM$%xsup>XcJkeby@ z_ntkfUGYL4S5C7pg4#W9R3J?e_mkw1)Blx-(;O;citdHE+T+M1wg7X{QMhdH18G~b zAN*_Z-BYl&|Ans032cEtI=KyQ>B=2p|I?;XH@_}ivGmLbt}RYnvq^RQI7Dzvj2gqY zuQbTZcWG^r*JnlGBwc72`(S#4BNloWBW07iFPpW>Gp+o?u$-&iDKB~a19l~H1Q>cj z@p03ighsVNRL5k(Xb)xglyauf`28bvLoVskOU)|LAKP{>C$G&s$beC@TwW7Z{+_GL zlGDs5@0(+n^yXfS)!xs`&-f+fvm7!pu}ARx&l=K`4DEM^IT?yMvJYN1egUjsT@K9~ zjU1ZZ9|qECif>{Cny=0UJ%0RG(dPL6U-^0!O-F94-Iqb*7e~Q~+fkF9=^81l_hz}r zB&i!O3%YPW%;V{~As5?lP~rROvp9_iYxW>lQbuMrdqezixM7_>*+%JxtB1S2V z)5LFVSq|6g_Cd=vtkZ3JLXV(Y^kMGQRrGiH6$KTehOEL^rXOr4mQRo!e!CbY@a0b9 zQnS53UFREUYoEswk&lV`=|~7`yHiUY&1R`kZUEs#oDAYXEb{t@7wsn zh*lXS?RkA)e)I@3@o-f!mZ4DYX8vuCBYZ}<2WLIa+Z@IN6G6bGqM*I~kvod{lGhtq z`zPd-qBYa^Cj@@}Rl0r6;=0HQ0<#_qW6TpMd4tE5QZMJ_jmaKN?)+TpTZ-1hSvY&z zI(u5X**jn76XxP#_Uv-oN=;|*RJ2lfOCK4Xs~^(YRr4^0(j3|rTjuUec$ZQ(nKd<; zVg6{6&a4anrF^%&t+jm0sIBkxd*xzI+s~!bmvQAU)1hs=SJOFWsoft$QefKSN3P_I zKm~Enbtb`Lum+5$i$XFd2avhba)GrS+R@hcg~z&e2Y5R?o{5FGa%p zG<|ErC8i3=sTo0T@s@Jm7Z>BngN^V`X7<~o_?==9f~W75uXOMHH8XGfiy81bxk<^I zcpYI$Yqy_x;m_hVRxrMMvzW+!3a?OpI_mag+}`5`EBDqtMS7|cIXre9yoUIUs(Lgj zCC>?fZv~~Ll(S_WZt}XUU05HEb#k)yEIkwsSXnTV8^Mjl7^5?TvYN zGq+%xLLlG)rA5K;559aZ(m!qHAz7#C=D8d>__B3e+)$(3h*!{kXN<*t=dNl>m7$A` zQy?&c`rx3Su0PyIMUFK7CrP_>!_<2DP>R;X>B1piMV5t?N$0`Cwy~+Hf+Lrs`PRUK zM(5>%g-?y^Q|+4Zcix7+apQPEKe&~gmYg0J&gju~*~OGz5DBW|QuETCl!8)4`Q47| zZM&@I?BcmSDQtt^Z^u-vUG%>mJj_;uDh5cg>@4pnS9l0O~ z0t%<2=SF3wat2;(SF?3_jNt1Y%t*Ts5*EW3G}JirNi{-SwL7?U>bibf87vD!hKCCO zFgjhoTB>10TSc-9_Mj@0lsSPh#KwIJys{WCr_4p=z{zMp6^0qqGpW7SSN1-&0u46zx?qx_P5NK1YE+%-ob`Q z!T;bE+-aL_4z=4wf$!{U-z*e{+ydUVtHtClWQR}#2kcO97m7omK;QA5_>d9c1Diwj zc6#6gTNG}gHe?&_{dOTaBnQ|uwi6Xn3TGeMNepQR(%Bqpv@-)GCw5Xo9>Tq|7tCq7 zY*6_Naq(qh1DUd1UI-QK3{1Rq0ZnTFzXZ1*D${G{r)7hS7nucySiy=X z${w`q)7rs`$IF!3m1u9lgeP{YLf*oJN6NI?t*N%eLm# zHe3yA@QKq}%wVK=3898I&@2$taYku%jz6(wgvX_t@>Pd+8r-+Rqiltl=5+-P__V-x zx^(YzMB@MAwMvFY1JfYko_;_ZKDPh`we|utEe80g(k8|1pbif_2&h7vO{M|JzxeLk z;JA;Llu%|*j&nhi7FSO$#yQ`<5IGjHao<8cMT@@hPNIx!0EP%^Xb^_23>s%IVNV6XXR%5QydBqhQ7?pIr^IJ8tzV&GX*oXy(L<=3i*%? z!M3fg{RNg#i{_4m7VOS9&0qNf(efIOZVGC*h0@F)2t^k5mWydQ6ecmvT`9EbI0&#+qjQ^{ zV(ifoDabx8%(#xJ_(lHf&M&quUyEwT?flX?oj~6a8#c;FrjqW?a*oXf=~(J!Um@>L&W- zJ~+|hNlE7Jqy)M7~V5enEw!G?dH$Dn{j9)DqNgD~YJ{ruh}S%z80u#gg86 zMPP%(mKPoX9B^&Vzur`dGxU|x?oN@*Zyn{f<%atS&4+Fcy1Q|W#c+vb8m#UH6XMIe z!RJtx-~AJ=qTq{`=&fn`Usc(1rLh+Bp-qj@k~LN}`djrF^k}*!B;Qd7wsCR2M~Ar( zdS|3$O;GLTEzfJCL*W@zd3r<3YUD-6Vxt*9G{5J2m3ST=7;Tw-bG#))Z>wBgo-I2E zbXS+WRR|rO4(|!xs>=R>yMuDOKs--dMUFgt{ z17xxE$jNK|D)2PC+(8<*>7vPy5J9!7a?>iLyz;hoXrb!Z*S^#=y})$39>Q?2_o$AX zjpx*v9(?M;48(B%rSks8LCz==`7&JxgXC zkS#OdVXTx}9+1mFa9%DF-Me53qBwTSe27 z^#T3Yq-|QB@o~5MxzOC}^_z6?@0M0-VKBD6_L{Ht@rcgn%GwXL*|iEY;a|-=+ziTt zd@=W3y~>ejiJ!-a_z0u8b@RTV6}i@-l|VVglp8xWA;;l;X06ws=a=F?NapKTxnMpF*SvCbZb+r;Zxv$!z*@O?kR>F%CP-$C6P{~(RUlXP5PAf_4~Glxo`Qa z4?v8Ys6pn$buW75+~Yjl08RMzql ztcOnG*lYRGXsVGJbnkdsC%mt>=&F}K;h)7^6iU5otOnBUls974;}X*C(BsATH)65s z>YP2k7}s}H7Hn^p@~$OZQqs^=rryy~(@51n2~N5sTQaI6ZeUvgkoFblqf)GNSk^PyAKz02gxBEVebOdcOf~4ws7@GQhP9(*P-J@-5N> zzXlltJlSVb?<{!jmCq!OkZL-Xlc@zM1F8UxJZEwM1p{)RMq1 z2)11K#7)V2QS{!0U2eLM0W9+*Ls^pf$`={EF zJ29qR=xRNfzvD#1PC6Ixv}I!cKXs-BJ5RlXKBV!ck|f~@jA@bC;W@nUf&L3%JHWkV zW?p26-vjW0j?QnQrN~rjl6*hlQ48k|#Dj8^tfA$>&UFux%?mUBq(U;JlVlm>gZ?Gl z6g7VRrdK8@GDz84pr&FHy5!>la8tN0sZIcsDcS=lPMYMOH-EqEk}z3Bi|o!N-3u#$ zFHCPI131ZJ{1sd6LDb?GEvKnwuvoAHfFCQV03Zh_gIloC3IHywqXGbq{LP$(X(e2I zTBrW)^0#4o0dsg`d)pWAcSrHF-^H2c3-0tC*W(!yn6SSU0JH!&8vUM95g>m9fB=E9 z>b8I@OfVQX=wp&$|(1O|c8#1vo<1dJl01%qHv>=1!M5P9wq6aqR&0fj-ZJPv>>B(Q&O z5{Pp@g+L;S4GsZ;QAB0}K?vX2X9Ok*FtHOLP$cRc1r$XbVIT+$1i`kRQ6Pvd13|!1 z#3q3tkmpPSK@p;f!I3}#A@&&rbR1IR)l~N&ci>WKoBbeg@WMcmP0|r{suvz z5EQoji~>b$PAD9DE)<|}IF#5iP=an)lBfSF1qw_Y(;yfj(uubsUj-nb|P8blmTC_-2H z7wrG_Z@T}ER3JjKA+QSsnIz6NJTwRlCQ2<38U%$A2Q?Z>Xo6rj0>!yjgN8zo#BM?p zMzDXuU|9cuD2Sy-BOvE@MEnaa0*1y8olzi(4T(k(x*$;wpiyw*t_D6E%dkA|1PU-w zu_HV>H$D;O8-kVpm-cMtAO;CQ1kbh9VyG&iWJ>yZet6M5W@)X2h-g zY`Q;ZTtXj3VP!l4S1iwsHiVBU#GMfWhM|ZhBVb5kI}*%;L=c6{8Ace&>pcOA)Mx}P N6(67cLj_u@{{sUexK{uG diff --git a/README.md b/README.md index 4a039ed..1718852 100755 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Why are existing script interpreters so complex? Why is it so difficult to integ ## Introduction -MY-BASIC is a lightweight cross-platform easy extendable BASIC interpreter written in pure C with about 16,000 lines of source code. It supports structured grammar, and implements a style of OOP called [prototype-based programming](https://en.wikipedia.org/wiki/Prototype-based_programming) paradigm, furthermore it offers a functional programming ability with [lambda abstraction](https://en.wikipedia.org/wiki/Anonymous_function). Most advanced features are easily cuttable by modifying macros. It is aimed to be either an embeddable scripting language or a standalone interpreter. The core is pretty light; all in a C source file and an associated header file; simpleness of source file layout and tightness dependency make it feels extraordinarily tough. It's able to easily combine MY-BASIC with an existing project in C, C++, Objective-C, C#, etc. Script driven can make your projects more powerful, elegant and neat. It's also able to learn how to build an interpreter from scratch with MY-BASIC, or build your own dialect easily based on it. +MY-BASIC is a lightweight cross-platform easy extendable BASIC interpreter written in pure C with less than twenty thousand lines of source code. It supports structured grammar, and implements a style of OOP called [prototype-based programming](https://en.wikipedia.org/wiki/Prototype-based_programming) paradigm, furthermore it offers a functional programming ability with [lambda abstraction](https://en.wikipedia.org/wiki/Anonymous_function). Most advanced features are easily cuttable by modifying macros. It is aimed to be either an embeddable scripting language or a standalone interpreter. The core is pretty light; all in a C source file and an associated header file; simpleness of source file layout and tightness dependency make it feels extraordinarily tough. It's able to easily combine MY-BASIC with an existing project in C, C++, Objective-C, C#, etc. Script driven can make your projects more powerful, elegant and neat. It's also able to learn how to build an interpreter from scratch with MY-BASIC, or build your own dialect easily based on it. ## Compatibility diff --git a/core/my_basic.c b/core/my_basic.c index 24910c6..9beadd9 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -1556,7 +1556,7 @@ static int _unlink_meta_instance(void* data, void* extra, _class_t* derived); static int _clone_clsss_field(void* data, void* extra, void* n); static bool_t _clone_class_meta_link(_class_t* meta, void* n, void* ret); static int _search_class_meta_function(mb_interpreter_t* s, _class_t* instance, const char* n, _routine_t** f); -static bool_t _is_class(_class_t* instance, void* m, void* ret); +static bool_t _is_a_class(_class_t* instance, void* m, void* ret); static bool_t _add_class_meta_reachable(_class_t* meta, void* ht, void* ret); #ifdef MB_ENABLE_COLLECTION_LIB static int _reflect_class_field(void* data, void* extra, void* d); @@ -7106,14 +7106,26 @@ static int _search_class_meta_function(mb_interpreter_t* s, _class_t* instance, return 0; } -static bool_t _is_class(_class_t* instance, void* m, void* ret) { +static bool_t _is_a_class(_class_t* instance, void* m, void* ret) { /* Detect whether a class instance is inherited from another */ _class_t* meta = (_class_t*)m; bool_t* r = (bool_t*)ret; + bool_t is_a = false; mb_assert(instance && meta && ret); - *r = instance == meta; + do { + if(instance == meta) { + is_a = true; + + break; + } + if(instance == instance->created_from) + break; + instance = instance->created_from; + } while(1); + + *r = is_a; return !(*r); } @@ -12483,7 +12495,7 @@ static int _core_is(mb_interpreter_t* s, void** l) { if(!_IS_CLASS(fst) || !_IS_CLASS(scd)) { _handle_error_on_obj(s, SE_RN_CLASS_EXPECTED, s->source_file, TON(l), MB_FUNC_ERR, _exit, result); } - _traverse_class(fst->data.instance, 0, _is_class, _META_LIST_MAX_DEPTH, true, scd->data.instance, &is_a); + _traverse_class(fst->data.instance, 0, _is_a_class, _META_LIST_MAX_DEPTH, true, scd->data.instance, &is_a); val->type = _DT_INT; val->data.integer = (int_t)is_a; #else /* MB_ENABLE_CLASS */ @@ -13397,8 +13409,8 @@ _retry: bool_t is_a0 = false; bool_t is_a1 = false; if(s->last_instance && routine->instance) { - _traverse_class(s->last_instance->created_from, 0, _is_class, _META_LIST_MAX_DEPTH, true, routine->instance->created_from, &is_a0); - _traverse_class(routine->instance->created_from, 0, _is_class, _META_LIST_MAX_DEPTH, true, s->last_instance->created_from, &is_a1); + _traverse_class(s->last_instance->created_from, 0, _is_a_class, _META_LIST_MAX_DEPTH, true, routine->instance->created_from, &is_a0); + _traverse_class(routine->instance->created_from, 0, _is_a_class, _META_LIST_MAX_DEPTH, true, s->last_instance->created_from, &is_a1); } if(routine->instance && (!s->last_instance ||