Rev 344 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download
ъръ ЇюЁтрЁфшЄ№ яхЁхьхээ√х: шуэюЁшЁютрЄ№ юфшэръют√х - ёютьхёЄшью ё ╤шъръ ЇюЁтрЁфшЄ№ ъюэёЄрэЄ√??? сЁрЄ№ яюёыхфэ■■ (ьюцэю ш ъръ ьхЄъє, ш ъръ яхЁхьхээє■). эх ёЁрсюЄрхЄ, хёыш рёёхьсышЁєхь яю ўрёЄ ь, ёЁрсюЄрхЄ, хёыш рёёхьсышЁєхь тё╕ т ъєўєрёёхьсыхЁ фюыцхэ ёъыхшЄ№:1. ьюфєы№ эх тэ√ї ьрЄхьрЄшўхёъшї ЇєэъЎшщ (ъюьяшы ЄюЁє эх эєцэю, эю ъюфюухэхЁрЄюЁ яюфъыхштрхЄ эєцэ√щ? шыш ёъЁшяЄ ъюьяшы Ўшш ьхэ хЄё т чртшёшьюёЄш юЄ ЄрЁухЄр?) - яюфъы■ўрЄ№ т ъюэЎх, ўЄюс√ с√ыш Єюы№ъю шёяюы№чєхь√х яЁюЎхфєЁ√2. чруюыютюўэ√щ Їрщы ╬╤ (ъюьяшы ЄюЁє эх эєцэю, яЁю ¤ЄюЄ Їрщы чэрхЄ Єюы№ъю ёъЁшяЄ ъюьяшы Ўшш яюф фрээ√щ ЄрЁухЄ!!!)3. ьюфєы№ чряєёър? шыш фтр - эрўрыю ш ъюэхЎ? (ъюьяшы ЄюЁє эх эєцэю, Єю цх!!!)4. ъюф + ъюф + ъюф...5. яхЁхьхээ√х + яхЁхьхээ√х + яхЁхьхээ√х...6. ёЄЁюъш + ёЄЁюъш + ёЄЁюъш...ьюцэю т эхфюрёьх шёъы■ўшЄ№ эхшёяюы№чєхь√х яЁюЎхфєЁ√ эр тЄюЁюь яЁюїюфх?эрфю ъръющ-Єю їшЄЁ√щ шЇ, ъюЄюЁ√щ яЁютхЁ хЄ, хёЄ№ ыш яЁюЎхфєЁр т ьхЄърї яхЁтюую яЁюїюфр эр тЄюЁюь яЁюїюфх.эю Єюуфр эх яюыєўшЄё шёъы■ўшЄ№ яЁюЎхфєЁє, ъюЄюЁр шёяюы№чєхЄё Єюы№ъю т эхшёяюы№чютрээющ яЁюЎхфєЁх(яюър ўЄю т эхфюрёьх эхЄ фрцх яЁюёЄющ єёыютэющ ъюьяшы Ўшш ё яЁютхЁъющ ёє∙хёЄтютрэш ьхЄъш)т ъюьяшы ЄюЁхўЄюс√ эх с√ыю ъюэЇышъЄр яЁюёЄЁрэёЄт шь╕э ёю ёЄЁєъЄєЁрьш, яшёрЄ№ яЁюёЄЁрэёЄтр шь╕э ўхЁхч '@' тьхёЄю '.'?шыш эр ърцфюь ёыютх яЁютхЁ Є№, эх ёЄЁєъЄєЁр ыш? ¤Єю ЄюЁьючъюэёЄрэЄ√ шёяюы№чютрЄ№ ё ъръшь-Єю яЁхЇшъёюь, ўЄюс√ юэш яюэшьрышё№ эх ъръ яхЁхьхээ√х, р ъръ ўшёыр (юс· тыхээ√х т√°х ъръ equ)ъръшх трЁшрэЄ√?+(const type)ccc&ccc эх сєфхЄ ЁрсюЄрЄ№, Є.ъ. ¤Єю фр╕Є Єшя єърчрЄхы , эєцхэ ЄрщяърёЄ-+-ccc+GETCONST ccc+GETCONST(ccc)+ccc (ъръ єчэрЄ№ Єшя? ёхщўрё Єрь boolean) - сЁрЄ№ шч ЄрсышЎ√ яхЁхьхээ√ї? ш фы boolean Єюцх? хёыш эхЄ т ЄрсышЎх - Єю фюыцхэ с√Є№ enum, р эх boolean?+_ccc (ёхщўрё byte)?ъръющ-Єю эют√щ ёшьтюы??? ъръ ёфхырЄ№ ёютьхёЄшьюёЄ№?яЁю∙х ъюэёЄрэЄє юЄышўрЄ№ юЄ яхЁхьхээющ яю Єшяє т ЄрсышЎх яхЁхьхээ√ї, Єрь цх Єшя√ ЇєэъЎшщ ш яёхтфюшь╕э ярЁрьхЄЁют ЇєэъЎшшъръющ яЁхЇшъё ёфхырЄ№ фы ЁхушёЄЁют√ї яюфёърчюъ ъюьяшы ЄюЁє?+(regfast1 type)ccc+REGFAST1 ccc+REGFAST1(ccc)ЁхушёЄЁют√х яюфёърчъш т ыхтющ ўрёЄш яЁшётрштрэш їюЄхыюё№ с√ Єръшх цх, р Єрь ЄрщяърёЄ (ёъюсъш) эхы№ч+ Єрь Єюцх эхы№ч !!! Єю хёЄ№ эх юЄышўшЄ№ юЄ юс√ўэющ яхЁхьхээющ!!!Єюуфр эрфю яюфёърчъє (схч яы■ёр) яшёрЄ№ яхЁхф LETшыш яюфёърчъє їЁрэшЄ№ т Єшях (ёшы№эю юуЁрэшўхээюх ўшёыю яюфёърчюъ)ўр∙х тёхую ЁхушёЄЁ√ эєцэ√ т inc, dec, peek, poke, яхЁхфрўх ярЁрьхЄЁютЄшя√:bytechar (letter? sym?)flag (bool?)int (s16? singed?)uint (u16? unsigned?)INT (s32? long???)UINT (u32? ulong???)#const ш #eval эрфю яЁхяЁюЎхёёюЁюь#include Єюцх#if (Єюы№ъю яю ъюэёЄрэЄэюьє Їырує) Єюцхdefine(<command>[<text>]) фюыцхэ ухэхЁшЁютрЄ№ юяЁхфхыхэш , ъюЄюЁ√х яюфёЄрты ■Єё т ЄхъёЄ ё яюью∙№■ яЁхЇшъёр эр єЁютэх readcommand (ўЄюс√ эх шёърЄ№ ёютярфхэш эр ърцфюь ёыютх)т юЄышўшх юЄ ёш°эюую яЁхяЁюЎхёёюЁр, эрфю ёфхырЄ№ яЁхяЁюЎхёёюЁ эх яюёЄЁюўэ√щ, р ЄхЁяшь√щ ъ яхЁхтюфрь ёЄЁюъш (эряЁшьхЁ, тёх ярЁрьхЄЁ√ т ёъюсърї)Єръ ьюцэю тъы■ўшЄ№ яЁхяЁюЎхёёюЁ т юёэютэющ Ўшъы ярЁёхЁрinclude?("filename.ned")const?(a=[const])ifconst?(a)command~commandхёыш ъюьяшы ЄюЁ яш°хь эр хую цх ч√ъх:ъръ ЁхрышчютрЄ№ ¤ЇЇхъЄштэ√щ яюфёюё шч єърчрЄхы ш т√яы╕т√трэшх т єърчрЄхы№? рёьютёЄртърьш?шыш ЁхчхЁтшЁютрЄ№ ЁхушёЄЁ√ яюф cin ш cout эр єЁютэх ч√ър? эряЁшьхЁ, hl', de'ўЄюс√ ЁрсюЄрЄ№ ё сюы№°шь ўшёыюь Їрщыют, яхЁхфртрЄ№ Їрщы√ т яЁюЎхфєЁ√ ъръ яюЄюъш?эрь эєцэю тїюф, т√їюф, яюЄюъ ю°шсюъ, ыюу? - фюёЄєяэ√х тхчфх?т ЄєЁсюярёърых ЁрчсюЁ ъы■ўхт√ї ёыют шф╕Є Єръ:GetTYPE:call GetSimpTYPE ; Test simple typeret zcall FindStr ; Skip PACKEDdw $PACKEDcall ..ARRAY ; Check ARRAYret zcall ..RECORD ; Check RECORDret zcall ..SET ; Check SETret zcall ..PTR ; Check ^ret zcall ..FILE ; Check FILEret zcall ..STRING ; Check STRINGret zcall ..SCALARE ; Test SCALARE ()ret zcall ..RANGE ; Test RANGE ..ret zcall ERROR ; Type declaration expecteddb _TypeExp.....ARRAY:call FindStr ; Check ARRAYdw $ARRAYret nz ; .. nopecall MustOpen ; Verify [...Єю хёЄ№ шф╕Є яЁ ьр яЁютхЁър тёхї ёЄЁюъ, яЁшў╕ь эр уыєсюъюь єЁютэх т√чютр ш ё т√їюфрьш шч ёхЁхфшэ√<var>[<expr>]ъюьяшышЁютрЄ№ т яюёыхфютрЄхы№эюёЄ№:cemitpushnum; //тьхёЄю pushvarread_compile_expression; //эр т√їюфх шч expression єцх яЁюўшЄрэр ')', эю ёыхфє■∙шщ ёшьтюы шыш ъюьрэфр эх яЁюўшЄрэ√readcommand; //ўЄюс√ шьхЄ№ symbol эр т√їюфх valuecemitarrayshift(typesize); //!!! ъюьяшы ЄюЁ эх чэрхЄ ЁрчьхЁ Єшяр, хую ьюцхЄ яЁюўшЄрЄ№ commands шч asmcemitadd;cemitpeek;тёх ЁрчьхЁ√ ьрёёштр юъЁєуы Є№ фю 2^n?ь√ эх ьюцхь ¤Єю фхырЄ№ схч т√ўшёыхэш ъюэёЄрэЄ!ё фтєьхЁэ√ь ьрёёштюь:<var>[<expr>][<expr>]ъюьяшышЁютрЄ№ т яюёыхфютрЄхы№эюёЄ№:cemitpushnum; //тьхёЄю pushvarread_compile_expression; //эр т√їюфх шч expression єцх яЁюўшЄрэр ')', эю ёыхфє■∙шщ ёшьтюы шыш ъюьрэфр эх яЁюўшЄрэ√readcommand; //ўЄюс√ шьхЄ№ symbol эр т√їюфх valuecemitarrayshift(typesize); //!!! ъюьяшы ЄюЁ эх чэрхЄ ЁрчьхЁ Єшяр, хую ьюцхЄ яЁюўшЄрЄ№ commands шч asmcemitadd;readcommand; //skip '('read_compile_expression; //эр т√їюфх шч expression єцх яЁюўшЄрэр ')', эю ёыхфє■∙шщ ёшьтюы шыш ъюьрэфр эх яЁюўшЄрэ√readcommand; //ўЄюс√ шьхЄ№ symbol эр т√їюфх valuecemitarrayshift(typesize+arraysize); //!!! ъюьяшы ЄюЁ эх чэрхЄ ЁрчьхЁ Єшяр, хую ьюцхЄ яЁюўшЄрЄ№ commands шч asmcemitadd;cemitpeek;шыш:cemitpushnum; //тьхёЄю pushvarread_compile_expression; //эр т√їюфх шч expression єцх яЁюўшЄрэр ')', эю ёыхфє■∙шщ ёшьтюы шыш ъюьрэфр эх яЁюўшЄрэ√readcommand; //ўЄюс√ шьхЄ№ symbol эр т√їюфх valuereadcommand; //skip '('read_compile_expression; //эр т√їюфх шч expression єцх яЁюўшЄрэр ')', эю ёыхфє■∙шщ ёшьтюы шыш ъюьрэфр эх яЁюўшЄрэ√readcommand; //ўЄюс√ шьхЄ№ symbol эр т√їюфх valuecemitarrayshift(arraysize); //!!! ъюьяшы ЄюЁ яюър эх чэрхЄ ЁрчьхЁ ьрёёштр!!! (юэ яхЁхфр╕Єё ъръ ёЄЁюъютр ъюэёЄрэЄр [const])cemitadd;cemitarrayshift(typesize); //!!! ъюьяшы ЄюЁ эх чэрхЄ ЁрчьхЁ Єшяр, хую ьюцхЄ яЁюўшЄрЄ№ commands шч asmcemitadd;cemitpeek;ёфхырЄ№ [const] ъръ Ёрёў╕Є ъюэёЄрэЄ√ шч ўшёхы ш ъюэёЄрэЄ?юЄфхы№эющ уЁєяяющ expression шыш яюяЁюсютрЄ№ чрёєэєЄ№ т Єющ цх? (т ърцфющ юяхЁрЎшш тхЄър яю ёяхЎЄшяє, р т value ўшЄрЄ№ ўшёыр т фЁєуюь Ёхцшьх, ўЄюс√ с√ы ёяхЎЄшя ш чэрўхэшх)ёхщўрё уЁєяяр expression тючтЁр∙рхЄ Єшя, р эрфю тючтЁр∙рЄ№ чэрўхэшх! ъръюую Єшяр? эрфю ш Єю, ш фЁєуюх, Є.х. чряшё№!!!р т рёёхьсыхЁх эрфю, ўЄюс√ expression ьюу ухэхЁшЄ№ post label?ьюуєЄ яюЄЁхсютрЄ№ё ш fixed point Єшя√ ё юёюсющ юяхЁрЎшхщ єьэюцхэш (ёыюцхэшх ш ёЁртэхэшх Єръшх цх)яЁхЇшъё√ ьюуєЄ ёютярфрЄ№ ё юяхЁрЎш ьш ш шэЇшъёрьшяюёЄЇшъё√ эх ьюуєЄ, Є.ъ. юэш т яючшЎшш юяхЁрЎшш+ яЁхЇшъё(int), юяхЁрЎш- яЁхЇшъё(int), юяхЁрЎш* яЁхЇшъё(peek), юяхЁрЎш/ юяхЁрЎш~ яЁхЇшъё(inv)! яЁхЇшъё(invbool)& яЁхЇшъё(addr), юяхЁрЎш (and)| юяхЁрЎш (or)^ юяхЁрЎш (xor) - ьюцэю inv ё■фр ъръ яЁхЇшъё= юяхЁрЎш (eq)! юяхЁрЎш (noteq)< яЁхЇшъё(shl), юяхЁрЎш (less)> яЁхЇшъё(shr), юяхЁрЎш (more). яЁхЇшъё(єЁютхэ№ т√°х), шэЇшъё(float, record)% яЁхЇшъё?, юяхЁрЎш ?( яЁхЇшъё(expr)[ яЁхЇшъё(const), яюёЄЇшъё(peekarray) - ьюцэю peek ё■фр ъръ яЁхЇшъё [addr]? Ёхфъю эрфю, ьюцэю ЄрщяърёЄшЄ№ єърчрЄхы№ шч ўшёыр: *(byte*)addr@ яЁхЇшъё?, юяхЁрЎш ?? яЁхЇшъё?when defining a function, parameter order is: inputs, then outputs (Google cpp style guide)яю тхэухЁёъющ эюЄрЎшш яхЁт√х сєът√ ЇєэъЎшш фюыцэ√ ёююЄтхЄёЄтютрЄ№ Єшяє Ёхчєы№ЄрЄрvar, .var, var.var - эхы№ч юЄфхы Є№ яю isalphanumeric(nextsymbol) юЄ type func, хёыш эхЄ Єюўъш ё чря Єющ!!!type(var) - яю nextsymbol=='('[+type func(...)]type func(...), хёыш юс чрЄхы№эр ';' (яЁш ¤Єюь эхы№ч type .func(...))шыш Єръ:value.value.valuevalue.value.value[expr]+(type)value.value.value - ёфхырЄ№ ъръ с√ыю, схч pretype+(type)value.value.value[expr] - ёфхырЄ№ ъръ с√ыю, схч pretype (є [] яЁшюЁшЄхЄ эрф ЄшяшчрЎшхщ ш тёхьш яЁхЇшъёрьш)func.func.func(par,par,par) юЄфхыхэю єцх тэєЄЁш concat_compile_var() (т√чют ЇєэъЎшш Єрь ш юяючэр╕Єё шьхээю яю ёъюсъх ёяЁртр)!!!эю ъръ єчэрЄ№ яЁю ёъюсъє, хёыш х∙╕ эх яЁюўшЄрэ яюыэюёЄ№■ шфхэЄшЇшърЄюЁ ёю тёхьш Єюўърьш??? Ёх°хэю Ёрчсштъющ эр ўрёЄш compile_variable+(type)func.func.func(par,par,par)фы ¤Єюую эрфю їЁрэшЄ№ Єшя ЇєэъЎшш ш тёхї ярЁрьхЄЁют (ъръ яхЁхьхээ√ї, ъюЄюЁ√х эх эрфю ухэхЁшЁютрЄ№ т сыюъ яхЁхьхээ√ї)яЁш ¤Єюь тёх шёяюы№чєхь√х ЇєэъЎшш эрфю юяЁхфхышЄ№ т√°х!!!forward ёхщўрё яЁюяєёърхЄ, р фюыцхэ ёючфртрЄ№ яхЁхьхээ√х! Єюуфр т юяЁхфхыхэшш ЇєэъЎшш эрфю яЁютхЁ Є№ яхЁхьхээ√х яхЁхф ёючфрэшхь!ёыютю forward эхы№ч яЁюяєёърЄ№, Є.ъ. cemitfunc(); эрфю т√чтрЄ№/эх т√чтрЄ№ яхЁхф ўЄхэшхь ярЁрьхЄЁют (Є.ъ. юэш фюыцэ√ ёюїЁрэ Є№ё т ёЄхъ фы ЁхъєЁёшш).эхы№ч эрўшэрЄ№ ъюьрэфє ёю ёъюсъш, Є.ъ. ёъюсър яЁшъыхшЄё ъ яЁю°ыюьє т√Ёрцхэш■ (яЁхтЁрЄшЄ яюёыхфэ■■ яхЁхьхээє■ т ЇєэъЎш■) - шыш яЁютхЁшЄ№ яЁюсхы ьхцфє эшьш?poke яю * схч let эхєфюсэю - ьюцхЄ с√Є№ тюёяЁшэ Єю ъръ яЁюфюыцхэшх яЁю°ыюую т√Ёрцхэш !!!є эрё +(type)pointer=... - Єюцх ьюцхЄ с√Є№ тюёяЁшэ Єю ъръ яЁюфюыцхэшх яЁю°ыюую т√Ёрцхэш !!!фрцх хёыш єсЁрЄ№ + т эрўрых!!! (ьюцхЄ яюэ Є№ ъръ т√чют ЇєэъЎшш т√°х)ёфхырЄ№ poke(type)pointer=...?шыш ЁрчЁх°шЄ№ яшёрЄ№ т єърчрЄхы№ схч ЄрщяърёЄр?++var ш --var Єюцх ёъыхштр■Єё ё яЁхф√фє∙хщ ёЄЁюъющёфхырЄ№ inc var, dec varьюцэю ёфхырЄ№ т√чют схч call, хёыш яЁютхЁ Є№ ёъюсъє ( яюёых ъюьрэф√ - эю Єюуфр эхы№ч шьхэр ё Єюўъющш яЁшётрштрэшх (эх ьрёёштют) схч let, хёыш яЁютхЁ Є№ = яюёых ъюьрэф√ - эю Єюуфр эхы№ч шьхэр ё ЄюўъющяЁшётрштрэшх ьрёёштют схч let, хёыш яЁютхЁ Є№ [ яюёых ъюьрэф√ - эю Єюуфр эхы№ч шьхэр ё ЄюўъющяюфЎхяы Є№ Єюўъш єцх эр єЁютэх reads (ъЁюьх эрўры№э√ї)?ёхщўрё яЁш юс· тыхэшш ЇєэъЎшш ё Єюўъющ тыюцхээюёЄ№ эх сєфхЄ ёююЄтхЄёЄтютрЄ№ ўшёыє Єюўхъ!!!эєцэю ыш юс· ты Є№ ЇєэъЎшш ё Єюўъющ? тЁюфх эхЄёфхырЄ№ чр∙шЄє юЄ ¤Єюую?яю шфхх яЁртюьхЁэ√ Єюы№ъю Єръшх юсЁр∙хэш ё Єюўърьш:_proc()_module.proc()submodule.proc() (Ёрэ№°х с√ыю .submodule.proc())_var_module.var[submodule.var (Ёрэ№°х с√ыю .submodule.var()) - яыюїющ ёЄшы№].thismodulevar - ъръ ёфхырЄ№ ёютьхёЄшью ё ╤ш? ёфхырЄ№ _var єЁютэхь т√°х, р __var уыюсры№э√ь? [шыш тёх уыюсры№э√х яхЁхьхээ√х ьюфєы ёфхырЄ№ уыюсры№э√ьш (яыюїющ ёЄшы№)? шыш ЁрсюЄрЄ№ ё эшь ўхЁхч _mymodule.var (р юЄъєфр ь√ чэрхь тыюцхээюёЄ№)?]endif фы єёыютшщ схч else ышътшфшЁєхЄ ю°шсъє if()if(){}else{}хёыш хёЄ№ endif, Єю ю°шсъш if();{} эх ьюцхЄ с√Є№, Єръ ўЄю ьюцэю єсЁрЄ№ thenэю loop яЁюёЄю Єръ эх єсЁрЄ№ьюцэю ёфхырЄ№ юс чрЄхы№эє■ ЇшуєЁэє■ ёъюсъє яюёых if() (Єюуфр сєфхЄ эхєфюсэю if()if()) ш while(), эю эх яюёых elseendif ёфхырЄ№ тю тёхї if?ьюцэю тьхёЄю endif шёяюы№чютрЄ№ ';' (яЁютхЁъющ эр ёыхфє■∙шщ ёшьтюы, ўЄюс√ эх яюэрфюсшыюё№ ьэюую °Єєъ? эю ьюцэю ыш Єюуфр ёфхырЄ№ match_if? Єюуфр юэ эх фюыцхэ ё·хфрЄ№ ';', эю ьюцхЄ хую юёЄрты Є№ т _textword):ю°шсър if();{} шёъы■ўрхЄёю°шсър if()if(){}else{} шёъы■ўрхЄёчряЁх∙хэю if()bla; else bla; эрфю if(){}else bla;if()if(){};else{}; ярЁёшЄё Єръ:if()if() {};else {};рэрыюушўэю хёыш while(){}; Єю шёъы■ўрхЄё ю°шсър while();{}эю while т юфэє ёЄЁюўъє эх яш°єЄ, Єръ ўЄю ьюцэю єсЁрЄ№ ;ъръ ёфхырЄ№ тыюцхээ√х ёЄЁєъЄєЁ√? фюыцэ√ с√Є№ яюы Єшяр struct1->struct2.field1???ЁрсюЄє ёю ёЄЁєъЄєЁрьш эрфю яЁ ью чруэрЄ№ т ix(юфэр),iy(тЄюЁр ), эєцэ√ ъюьрэф√ Єшяр WITH фы ёючфрэш Єръшї ъюэЄхъёЄют (шыш Єшя INDEXREGISTER)яЁю∙х тёхую ёЄЁєъЄєЁє юЁурэшчютрЄ№ ўхЁхч ёыюцхэшх ('.' сєфхЄ юяхЁрЎшхщ)'.' т ёЄЁєъЄєЁрї фр╕Є ъюэЇышъЄ ё ёшёЄхьющ ьюфєыхщ!!!яюы ёЄЁєъЄєЁ√ ьюуєЄ с√Є№ ш ёыхтр, ш ёяЁртр юЄ = - ╙╫╥┼═╬Ўхы√х ёЄЁєъЄєЁ√ яЁшётрштрЄ№ эх эрфю, эю эр эшї ьюцэю фртрЄ№ єърчрЄхы№ъръ їЁрэшЄ№ фрээ√х ю ёЄЁєъЄєЁх?ьюцэю фы ърцфюую яюы ёЄЁєъЄєЁ√ їЁрэшЄ№ structname.fieldname ё Єшяюь [ш ёьх∙хэшхь (ьюцэю яхЁхыюцшЄ№ эр рёь)]р фы ёрьющ ёЄЁєъЄєЁ√ їЁрэшЄ№ ЁрчьхЁ т срщЄрї фы +SIZEOF(structname) - Єръ цх ёфхырЄ№ +SIZEOF(arrayname) (фы ьрёёштр эрфю єьхЄ№ т√ўшёы Є№ ЁрчьхЁ шч ёЄЁюъш [])эєцхэ Єшя _T_STRUCT (эхэръырф√трхь√щ)ёЄрЄшўхёър ёЄЁєъЄєЁр:хёыш юсЁр∙хэшх ъ яхЁхьхээющ ё Єюўъющ, Єю эрфю єьхЄ№ яюыєўшЄ№ шч чряшёш structinstancename.fieldname ёЄЁюъє structname.fieldname, ўЄюс√ яюыєўшЄ№ Єшя [ш ёьх∙хэшх]яЁш ¤Єюь эрфю ёуэхЁшЁютрЄ№ structname+structname.fieldnameфшэрьшўхёър ёЄЁєъЄєЁр:хёыш юсЁр∙хэшх ъ яхЁхьхээющ ё ->, Єю эрфю єьхЄ№ яюыєўшЄ№ шч чряшёш structinstancename->fieldname ёЄЁюъє structname.fieldname, ўЄюс√ яюыєўшЄ№ Єшя [ш ёьх∙хэшх]яЁш ¤Єюь эрфю ёухэхЁшЁютрЄ№ pushnum(structname.fieldname), add(), peek() (т сєфє∙хь (ix+...))ъръ т√уЁєцрЄ№ ёЄЁюъш ёюЁЎр т рёь? Єюы№ъю ўхЁхч сєЇхЁшчрЎш■ ёЄЁюъ т ыхъёхЁх? эрёъюы№ъю сюы№°ющ яЁюшуЁ√° ш ьюцэю ыш ёфхырЄ№ т√шуЁ√°?1. STRMAX эх яЁшф╕Єё яЁютхЁ Є№ эр ърцфюь ёшьтюых? Єюы№ъю хёыш фышэр ёЄЁюъш юуЁрэшўхэр2. ьюцэю tword ёюсЁрЄ№ ўхЁхч strcopy (эхт√уюфэю фы 1-2 ёшьтюыют)3. эх яЁютхЁ Є№ 0x0d (хую эх сєфхЄ т ёЄЁюъх)эю ъръ ЁрчЁ√т ёЄЁюъш (шч-чр яхЁхяюыэхэш сєЇхЁр) юЄышўшЄ№ юЄ яхЁхтюфр ёЄЁюъш??? хёыш ЁрчЁх°хэр ы■ср фышэр ёЄЁюъш, Єю яЁшф╕Єё яЁютхЁ Є№ STRMAX яЁш ЁрсюЄх ё tword!!!loop1: //цф╕ь эхЎшЇЁюсєътє (EOF эх ЎшЇЁюсєътр)_tword[_lentword] = _cnext;INC _lentword;_cnext = +(CHAR)readfin();IF (_isalphanum[+(BYTE)_cnext]) goto loop1;IF (_cnext == '\0') {readfinstr(_tstr);goto loop1;};goto loopgo;loop2: //цф╕ь эхфшхЁхчшё шыш EOF_cnext = +(CHAR)readfin();loopgo:IF (+(BYTE)_cnext < +(BYTE)'!') { //єёъюЁхэшх т√їюфрINC _spcsize; //spaces after twordIF (_cnext == '\n') {INC _curline;_spcsize = 0;INC _waseols;};IF (!_waseof) goto loop2;};яхЁхфхырЄ№ т√Ёрцхэшх эр match (ё ўЄхэшхь ёыхфє■∙хую)getnothing яюёЄрЁрЄ№ё єсЁрЄ№ тхчфх, ъЁюьх jp ш яєёЄюую call (яхЁхэхёЄш т commands)яЁштхёЄш шёїюфэшъ ъ 80 ёшьтюырь (ыєў°х 64)яхЁхтхёЄш ъюььхэЄрЁшш эр рэуы (Ёєё)?єёыютэю ъюьяшышЁютрЄ№ т сшсышюЄхъх Єх ЇєэъЎшш, ъюЄюЁ√х шёяюы№чютрышё№ттхёЄш тёЄЁюхээ√х Єшя√ INT PFUNC, PBYTE PFUNC ш Є.я., PPROC, ўЄюс√ яхЁхфртрЄ№ юсЁрсюЄўшъш (Єюы№ъю схч ярЁрьхЄЁют)эю ъръ ёфхырЄ№ ёютьхёЄшью ё ╤ш?CONST PBYTE PFUNC funcarray[3]={f1,f2,f3} эх ёъюьяшышЁєхЄё эр ╤шCONST PFUNC_PBYTE funcarray[3]={f1,f2,f3} ёъюьяшышЁєхЄёт√чют: varfunc(), Є.х. эрфю юяЁхфхышЄ№, ъръюую Єшяр ьхЄър - Ёхры№эр ЇєэъЎш (Єюуфр call N) шыш єърчрЄхы№ эр ЇєэъЎш■ (Єюуфр call jphl), фЁєуюх - ю°шсърT_PFUNC_PBYTE == T_PFUNC|T_POINTER|T_BYTET_FUNC_PBYTE == T_FUNC|T_POINTER|T_BYTE шыш яЁюёЄю T_POINTER|T_BYTE ё 0 ¤ыхьхэЄют?ьюцэю сєЇхЁшчютрЄ№ тёх яхЁхьхээ√х ЇєэъЎшш, эю эхы№ч сєЇхЁшчютрЄ№ тёх ёЄЁюъш ЇєэъЎшш - Єрь ьюуєЄ с√Є№ фхё Єъш ъшыюсрщЄ ёЄЁюъ!!! ъръ Єюуфр шчсхцрЄ№ т√тюфр т ЄЁш Їрщыр (ъюф, яхЁхьхээ√х, ёЄЁюъш) юфэютЁхьхээю?╧ЁшьхЁ:char Arr[2][2] = {'J', 'a', 'n', 'B'},* Ptr;main (){typedef char *ChrPtr;Ptr = cast(Chrtr)(Arr+1)+1;printf ("%c%c", **Arr, *Ptr);}╩юэтхЁёш ьюцхЄ с√Є№ тэющ ш эх тэющ. ▀тэр ъюэтхЁёш ты хЄёт√Ёрцхэшхь ё яЁхф°хёЄтє■∙шь ъы■ўхт√ь ёыютюь cast (Єюы№ъю т Hisoft).┬ ╧ЁшьхЁх яЁшьхэхэ юяхЁрЄюЁ ъюэтхЁёшш ъ т√Ёрцхэш■ (Arr + 1). ╧Ёш ¤Єюьт√Ёрцхэшх (Arr + 1), яЁхфёЄрты ■∙хх фрээюх Єшяр (char(*)[2]),яЁхюсЁрчєхЄё т т√Ёрцхэшх, яЁхфёЄрты ■∙хх фрээюх Єшяр (char *), Є.х. тт√Ёрцхэшх Єръюую цх Єшяр, ъръ ш Ptr.┼ёыш фрээ√х Єшяр (char) яЁшётрштр■Єё яхЁхьхээющ Єшяр (int)шыш (unsigned), Єю яЁш ¤Єюь ёрь√щ ёЄрЁ°шщ срщЄ ¤Єющ яхЁхьхээющчряюыэшЄё эєы ьш. ╚, эрюсюЁюЄ, хёыш фрээ√х Єшяр (int) шыш (unsigned)сєфєЄ яЁшётюхэ√ яхЁхьхээющ Єшя (char), Єю яхЁхьхээющ яЁшётюшЄёьырф°шщ срщЄ фрээюую. └ хёыш фрээюх Єшяр (int) яЁшётюшЄ№ яхЁхьхээющЄшяр (unsigned) ш эрюсюЁюЄ, Єю ьюцэю яюЄхЁ Є№ фрээ√х.═х тэр ъюэтхЁёш ьюцхЄ т√яюыэ Є№ё ш яЁш т√яюыэхэшшрЁшЇьхЄшўхёъшї юяхЁрЎшщ:- хёыш эхъюЄюЁ√щ рЁуєьхэЄ шьххЄ Єшя (char), Єю юэ сєфхЄ яЁхюсЁрчютрэ ъЄшяє (int);- хёыш Єюы№ъю юфшэ рЁуєьхэЄ 2ї-рЁуєьхэЄэющ юяхЁрЎшш шьххЄ Єшя(unsigned), Єю тЄюЁющ сєфхЄ яЁхюсЁрчютрэ ъ ¤Єюьє цх Єшяє;- т фЁєушї ёыєўр ї юср рЁуєьхэЄр фюыцэ√ с√Є№ Єшяр (int), Єръшь цхсєфхЄ ш Ёхчєы№ЄрЄ.-1╘єэъЎшш ё яхЁхьхээ√ь ўшёыюь рЁуєьхэЄют-0╘єэъЎш■ ё яхЁхьхээ√ь ўшёыюь рЁуєьхэЄют ьюцэю юс· тшЄ№ яхЁхфяхЁт√ь т√чютюь ¤Єющ ЇєэъЎшш, р т чруюыютъх юяЁхфхыхэш ,эхяюёЁхфёЄтхээю яюёых ёъюсъш, чрь√ър■∙хщ ёяшёюъ ярЁрьхЄЁют, фюыцэюёЄю Є№ ёыютю auto. ┼ёыш ¤Єш єёыютш ёюсы■фхэ√, Єю ърцф√щ т√чют ЇєэъЎшшсєфхЄ эх тэю фюяюыэхэ рЁуєьхэЄюь Єшяр (int), єърч√тр■∙шь, ёъюы№ъю срщЄчрэ ыш тёх рЁуєьхэЄ√ ЇєэъЎшш, тъы■ўр ш эют√щ рЁуєьхэЄ. ╤ыхфєхЄюЄьхЄшЄ№, ўЄю рЁуєьхэЄ√ т√ўшёы ■Єё т яюЁ фъх шї т√ёЄєяыхэш т т√чютхш чряшё√тр■Єё т ярь Є№ т яюЁ фъх єс√трэш рфЁхёют. ┬ ўрёЄэюёЄш,Ёхчєы№ЄрЄюь ЇєэъЎшш max ты хЄё ьръёшьєь яхЁхфрээ√ї хщ рЁуєьхэЄютЄшяр (int):intmax (Count) autoint Count;{int argc, *argv, max;argc = (Count >> 1)-1;argv = Count + argc;max = -32768;while (argc--)if (*argv-- > max)max = argv[1];return max;}-1UWAGA-0: ▌Єюую эхЄ т срчютюь ч√ъх.intstrcmp (Src, Trg)char *Src, *Trg;{while (*Src == *Trg++)if (!*Src++) return 0;return *Src > Trg[-1] ? 1: -1;}far pointer'√ 4(3)-срщЄэ√хЁрчрфЁхёрЎш ъюьяшышЁєхЄё Єръ:хёыш яЁю°ыр ЁрчрфЁхёрЎш (peek) far pointer'р с√ыр ё Єхь цх шьхэхь far pointer'р, Єю ёЄЁрэшЎє эх тъы■ўрхь, шэрўх тъы■ўрхьфрыхх ўшЄрхь ъръ юс√ўэю яю ьырф°хщ ўрёЄш(т эхфюрёьх эхЄ ёыєўрхт юфэютЁхьхээюую шёяюы№чютрэш фтєї far pointer'ют)т ъюэЎх яЁюЎхфєЁ√ ёсЁрё√трхьт ъюэЎх Ўшъыр ёсЁрё√трЄ№ - ЄюЁьюч, эю Єюуфр эрфю урЁрэЄшЁютрЄ№, ўЄю far pointer ўшЄрыш фю Ўшъыр!эхы№ч ърёЄшЄ№ шч near т far ш эрюсюЁюЄяЁш ёыюцхэшш-т√ўшЄрэшш far pointer'ют яюыєўрхЄё far size_t (шэрўх яЁш°ыюё№ с√ ухэхЁшЄ№ ю°шсъє, хёыш юэш т Ёрчэ√ї ёЄЁрэшЎрї)яю ЁрчьхЁэюёЄш pointer == size_t, Є.ъ. юср яюърч√тр■Є ЁрёёЄю эшх т срщЄрї юЄ ъръющ-Єю Єюўъшъръющ ёшэЄръёшё? ёыютю шыш яЁюёЄю х∙╕ ъєўр эрчтрэшщ Єшяют?р ъръ far call'√? юэш эєцэ√ ўр∙х?яЁшьхЁ шч юЁшушэры№эюую Bourne Shell'р):#define BEGIN {#define END }#define SWITCH switch(#define IN ){#define ENDSW }#define FOR for(#define WHILE while(#define DO ){#define OD ;}#define REP do{#define PER }while(#define DONE );#define LOOP for(;;){#define POOL }яюфїюф√ ъ яюёЄЁюхэш■ ярЁёхЁр:1. readword + compile_value2. read_compile_value3. match_value (яЁш єфрўх фхырхЄ readword)ъръ т√ч√трЄ№ ЇєэъЎш■ ё Ёхчєы№ЄрЄюь яю єърчрЄхы■? (Єюы№ъю схч ярЁрьхЄЁют! Є.ъ. ь√ яхЁхфр╕ь шї ъръ яхЁхьхээ√х) (эрфю чэрЄ№ Єшя ЇєэъЎшш! тэю яшёрЄ№ Єшя ЇєэъЎшш яЁш Єръюь т√чютх)+CALL (funcname)? эх ёЁрсюЄрхЄ, Є.ъ. ёш°эшъ фюыцхэ чэрЄ№ Єшя ЇєэъЎшшЁрчтх ўЄю +CALLINT (funcname) ш Є.я., эю Єръ эхы№ч шёяюы№чютрЄ№ яЁюшчтюфэ√х Єшя√¤Єю тё╕ Ёртэю ўЄю ёфхырЄ№ +PEEKINT (poi) ш Є.я.ьюцэю яюыєўшЄ№ єърчрЄхы№ эр ьхЄъє - эю ъръ фхырЄ№ goto яю єърчрЄхы■? т ёЄрэфрЁЄэюь ╤ш ¤Єюую эхЄ, Єюы№ъю т gccєърчрЄхы№ эр єърчрЄхы№ ьюцэю ёфхырЄ№, хёыш фюсртыхэшх єърчрЄхы - ¤Єю яЁшсртыхэшх 15, р эх 16шэырщэ userg, nouserg? фы ¤Єюую эрфю used ёфхырЄ№ ьрёёштюь - ъръ єёъюЁшЄ№ findrfree?