Rev 637 |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
//// imported
#include "../_sdk/str.h"
#define _BYTESTRMAX (BYTE)(_STRLEN-1)
VAR PCHAR _tword
; //Єхъє∙хх ёыютю
VAR UINT _lentword
;
VAR CHAR _s0
[_STRLEN
]; //Єхъє∙хх ёыютю
EXTERN PBYTE _fin
;
EXTERN BOOL _waseof
;
EXTERN UINT _curlnbeg
; //эюьхЁ ёЄЁюъш эр ьюьхэЄ эрўрыр Єюъхэр
FUNC BYTE readfin FORWARD
();
////
VAR UINT _curline
; //Єхъє∙шщ эюьхЁ ёЄЁюъш
VAR CHAR _cnext
; //ёыхфє■∙шщ ёшьтюы
VAR CHAR _c
; //Єхъє∙шщ ёшьтюы (уыюсры№э√щ, їюЄ єцх эх шёяюы№чєхЄё т ЁхъєЁёшш шыш т фЁєушї ьюфєы ї)
VAR UINT _spcsize
; //ўшёыю яЁюсхыют яюёых яЁюўшЄрээющ ъюьрэф√
VAR UINT _waseols
; //ёъюы№ъю с√ыю EOL ё яЁю°ыюую Ёрчр
VAR BOOL _doskip
; //яЁюяєёърЄ№ ёЄЁюъш, ъЁюьх эрўшэр■∙шїё ё #
PROC rdword FORWARD
();
PROC rdaddword FORWARD
(); //join next word
CONST BOOL _isalphanum
[256]={
+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
, +FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
, //0X
+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
, +FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
, //1X
+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
, +FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
, //2X
+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, +TRUE
,+TRUE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
, //3X
+FALSE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, +TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, //4X
+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, +TRUE
,+TRUE
,+TRUE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+TRUE
, //5X
+FALSE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, +TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, //6X
+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, +TRUE
,+TRUE
,+TRUE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
,+FALSE
, //7X
+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, +TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, //8X..FX
+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, +TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, //8X..FX
+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, +TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, //8X..FX
+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, +TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, //8X..FX
+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, +TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, //8X..FX
+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, +TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, //8X..FX
+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, +TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, //8X..FX
+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
, +TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
,+TRUE
//8X..FX
};
//эрфю эрўрЄ№ яЁюяєёъ ёЄЁюъ т ЄюЄ ьюьхэЄ, ъюуфр _cnext = яхЁт√щ ёшьтюы ёЄЁюъш, р _waseols!=0
//эр т√їюфх шч яЁюяєёър эрфю Єю цх ёюёЄю эшх: _cnext = яхЁт√щ ёшьтюы ёЄЁюъш, р _waseols!=0
PROC skiplines
() //яЁюяєёърЄ№ ёЄЁюъш фю # (эр т√їюфх _cnext == '#')
{
//ёхщўрё _cnext = яхЁт√щ ёшьтюы ёЄЁюъш, р _waseols!=0
skipline
:
//яЁюяєёЄшЄ№ ёЄЁюъє, хёыш юэр эх эрўшэрхЄё ё # (шэрўх эр т√їюфх _cnext == '#')
//ёхщўрё _cnext == яхЁт√щ ёшьтюы ёЄЁюъш
//хёыш эх #, Єю яЁюяєёЄшЄ№ ёЄЁюъє
WHILE
((_cnext
!= '#')&&(!_waseof
)) {
INC _curline
;
INC _waseols
;
loop
:
_cnext
= (CHAR
)readfin
();
IF
(((BYTE
)_cnext
!= 0x0a)&&(!_waseof
)) {
goto loop
;
};
_cnext
= (CHAR
)readfin
();
//ёхщўрё _cnext == яхЁт√щ ёшьтюы ёЄЁюъш
};
//ёхщўрё _cnext == '#' шыш EOF
}
//яЁюяєёърхЄ яЁюсхы√ ш хэЄхЁ√
PROC rdch
()
//ўшЄрхь тё■ уЁєяяє фшхЁхчшёют + ёшьтюы ъръ юфшэ ёшьтюы
//фюсрты хЄ cnext т tword
//ш ўшЄрхЄ тё■ уЁєяяє фшхЁхчшёют + ёшьтюы ъръ юфшэ ёшьтюы cnext
{
IF
((BYTE
)_lentword
< _BYTESTRMAX
) {
_tword
[_lentword
] = _cnext
;
INC _lentword
;
};
loop
:
_cnext
= (CHAR
)readfin
();
IF
((BYTE
)_cnext
< (BYTE
)'!') { //єёъюЁхэшх т√їюфр
INC _spcsize
; //spaces after tword
IF
((BYTE
)_cnext
== 0x0a) {
INC _curline
;
_spcsize
= 0;
INC _waseols
;
}ELSE IF
(_cnext
== '\t') {
_spcsize
= _spcsize
+ 7; //TODO ёт чрЄ№ ё X
};
IF
(!_waseof
) goto loop
; //todo т тхЄъх 0a
};
IF
(_doskip
)
IF
(_waseols
!=0) {
skiplines
();
//ёхщўрё _cnext == '#'
};
}
//яЁюяєёърхЄ хэЄхЁ√
PROC rdchcmt
()
//фюсрты хЄ cnext т tword
//ш ўшЄрхЄ тё■ уЁєяяє фшхЁхчшёют + ёшьтюы ъръ юфшэ ёшьтюы cnext
{
IF
((BYTE
)_lentword
< _BYTESTRMAX
) {
_tword
[_lentword
] = _cnext
;
INC _lentword
;
};
loop
:
_cnext
= (CHAR
)readfin
();
IF
((BYTE
)_cnext
== 0x0a) {
INC _curline
;
_spcsize
= 0;
INC _waseols
;
IF
(!_waseof
) goto loop
;
}ELSE IF
((BYTE
)_cnext
== 0x0d) {
IF
(!_waseof
) goto loop
;
};
IF
(_doskip
) //todo эрфю ыш ЄєЄ?
IF
(_waseols
!=0) {
skiplines
();
//ёхщўрё _cnext == '#'
};
}
PROC rdaddword
() //яюфъыхшЄ№ ёыхфє■∙є■ ъюьрэфє ъ Єхъє∙хщ
{
IF
(_doskip
)
IF
(_waseols
!=0) {
skiplines
();
//ёхщўрё _cnext == '#'
};
beg
:
_spcsize
= 0; //ўшёыю яЁюсхыют яюёых яЁюўшЄрээющ ъюьрэф√
_waseols
= 0;
_curlnbeg
= _curline
;
IF
(_isalphanum
[(BYTE
)_cnext
] ) {
loop1
: //цф╕ь эхЎшЇЁюсєътє (EOF эх ЎшЇЁюсєътр)
IF
((BYTE
)_lentword
< _BYTESTRMAX
) {
_tword
[_lentword
] = _cnext
;
INC _lentword
;
};
_cnext
= (CHAR
)readfin
();
IF
(_isalphanum
[(BYTE
)_cnext
]) goto loop1
;
goto loopgo
;
loop2
: //цф╕ь эхфшхЁхчшё шыш EOF
_cnext
= (CHAR
)readfin
();
loopgo
:
IF
((BYTE
)_cnext
< 0x21/**'!'*/) { //єёъюЁхэшх т√їюфр
INC _spcsize
; //spaces after tword
IF
((BYTE
)_cnext
== 0x0a) {
INC _curline
;
_spcsize
= 0;
INC _waseols
;
};
IF
(!_waseof
) goto loop2
;
};
}ELSE
{ //ёыютю шч эхЎшЇЁюсєътхээюую ёшьтюыр
rdch
(); //ўшЄрхь тё■ уЁєяяє фшхЁхчшёют + ёшьтюы ъръ юфшэ ёшьтюы
}; //эхы№ч яюфъыхшЄ№ ¤Єю єёыютшх ъ Ўшъыє, Є.ъ. юэю фы шчэрўры№эюую cnext ш юфшэ Ёрч
_tword
[_lentword
] = '\0';
IF
((BYTE
)_cnext
< 0x3c/**';'+1*/) { //юс√ўэю _cnext сєътр, р _tword[0] = 0x28'(',0x29')',0x3b';'
IF
((BYTE
)_lentword
== 0x01) {
_c
= *(PCHAR
)_tword
;
IF
(
(
((_c
=='/')&&(_cnext
=='*'))
||((_c
=='*')&&(_cnext
=='/'))
)
) { //шуэюЁшЁєхь /* ш */
rdch
(); //rdaddword(); //шёяюы№чєхь яхЁт√щ ёшьтюы чэрър ъюььхэЄрЁш , ўшЄрхь ёыхфє■∙шщ ёшьтюы яюёых яЁюсхыют
IF
( _cnext
=='*' ) { ///** */ эрфю ъръ ъюььхэЄрЁшщ
rdchcmt
(); //rdaddword(); //шёяюы№чєхь тЄюЁющ ёшьтюы чэрър ъюььхэЄрЁш
WHILE
( !( ( (_cnext
=='/')&&(_c
=='*') ) || _waseof
) ) {
_c
= _cnext
;
rdchcmt
(); //яЁюяєёърхЄ тёх хэЄхЁ√
};
rdch
(); //шёяюы№чєхь яюёыхфэшщ ёшьтюы ъюььхэЄрЁш , ўшЄрхь ёыхфє■∙шщ ёшьтюы яюёых яЁюсхыют
_tword
[_lentword
] = '\0';
;; IF
(_cmts
) {writebyte
(_fout
, (BYTE
)';'); fputs(_tword
, _fout
); writebyte
(_fout
, (BYTE
)'\n'); };
};
//ўшЄрхь ёыютю яюёых ъюььхэЄрЁш шыш эхфюъюььхэЄрЁш /* шыш */
_lentword
= 0;
goto beg
; //rdaddword();
}ELSE IF
( //(_lentword==1)&&
(
(_c
=='/')&&(_cnext
=='/')
||(_c
==';')&&(_cnext
==';')
)
) { //
_waseols
= 0; //ўЄюс√ ;; ЁрсюЄрыю яюёых ёЄЁюъш, чрърэўштр■∙хщё эр ; (TODO эх яюьюурхЄ)
rdchcmt
(); //rdaddword(); //шёяюы№чєхь яхЁт√щ ёшьтюы чэрър ъюььхэЄрЁш , ўшЄрхь ёыхфє■∙шщ ёшьтюы
WHILE
(_waseols
==0/** && !_waseof*/ ) {
rdchcmt
(); //яЁюяєёърхЄ тёх хэЄхЁ√
};
_tword
[_lentword
] = '\0';
;; IF
(_cmts
) {writebyte
(_fout
, (BYTE
)';'); fputs(_tword
, _fout
); writebyte
(_fout
, (BYTE
)'\n'); };
IF
((BYTE
)_cnext
< (BYTE
)'!') {
rdch
(); //шёяюы№чєхь яюёыхфэшщ ёшьтюы ъюььхэЄрЁш , ўшЄрхь ёыхфє■∙шщ ёшьтюы (TODO єэшЇшЎшЁютрЄ№ ъръ т√°х)
};
//ўшЄрхь ёыютю яюёых ъюььхэЄрЁш
_lentword
= 0;
goto beg
; //rdaddword();
};
}; //єёъюЁхэшх
}; //check cmt
}
PROC rdword
()
//ўшЄрхь ёыютю _tword (шч ЄхъёЄр ё фшхЁхчшёрьш тьхёЄю яЁюсхыют, хэЄхЁют, Єрсєы Ўшщ)
//ёыютю чрърэўштрхЄё , ъюуфр фшхЁхчшё шыш эхЎшЇЁюсєътхээ√щ ёшьтюы (юэ яюярф╕Є т cnext, р ъєЁёюЁ т Їрщых яюёых эхую)
{
_lentword
= 0;
rdaddword
();
}
PROC rdquotes
(CHAR eol
) //ёўшЄ√трхЄ фю ърт√ўъш эхтъы■ўшЄхы№эю
{
WHILE
(_spcsize
!= 0) { //фюсртшЄ№ ё·хфхээ√х яЁюсхы√
_lentword
= stradd
(_tword
, _lentword
, ' ');
DEC _spcsize
;
};
WHILE
( (_cnext
!=eol
) && !_waseof
) {
IF
( _cnext
=='\\' ) {
_lentword
= stradd
(_tword
, _lentword
, _cnext
);
_cnext
= (CHAR
)readfin
();
};
_lentword
= stradd
(_tword
, _lentword
, _cnext
);
_cnext
= (CHAR
)readfin
();
};
_tword
[_lentword
] = '\0';
}
PROC initrd
()
{
_doskip
= +FALSE
;
_tword
= (PCHAR
)_s0
;
_waseols
= 0;
_spcsize
= 0;
_lentword
= 0;
rdch
(); //ўшЄрхь тё■ уЁєяяє фшхЁхчшёют + ёшьтюы ъръ юфшэ ёшьтюы
}