43 SELECT CASE AS CONST .Buf[i]
45 CASE ASC(!
"\n") : Code(NL)
51 IF .Buf[c] = OPT->JoComm
THEN c += 1 : Code(
"//!" &
MID(.Buf, c + 1, i - c))
52 IF .Buf[c] = OPT->AdLine
THEN c += 1 : Code(
MID(.Buf, c + 1, i - c))
54 CASE ASC(
"/") :
IF .Buf[i + 1] <>
ASC(
"'")
THEN EXIT SELECT
56 VAR c =
IIF(.Buf[i] = OPT->JoComm, i + 1, 0)
57 IF c
THEN Code(*
IIF(OPT->Types = OPT->C_STYLE ,@
"/**", @
"/*!"))
59 SELECT CASE AS CONST .Buf[i]
61 CASE ASC(!
"\n") :
IF 0 = c
THEN Code(NL) :
EXIT SELECT
62 Code(
MID(.Buf, c + 1, i - c + 1))
64 IF .Buf[c] =
ASC(
"'")
ANDALSO .Buf[c + 1] =
ASC(
"/")
THEN EXIT SELECT
65 IF OPT->Asterix
THEN Code(
"* ")
67 SELECT CASE AS CONST .Buf[i + 1]
69 CASE ASC(
"/") : i += 1 :
EXIT DO
73 IF c
THEN Code(
MID(.Buf, c + 1, i - c - 1) &
"*/")
75 WEND :
IF .SrcBgn < i
THEN .SrcBgn = i
95 SELECT CASE AS CONST *t
96 CASE .TOK_DOT : Code(
"::")
97 CASE .TOK_WORD : Code(.
SubStr(t))
98 CASE ELSE :
EXIT WHILE
116 FOR i
AS INTEGER = 1
TO .PtrCount : Code(
"*") :
NEXT
117 VAR t = .NamTok, a = t[1], l = t[2]
120 SELECT CASE AS CONST *t
121 CASE .TOK_DOT, .TOK_WORD : l += t[2]
122 CASE ELSE :
EXIT WHILE
124 WEND : Code(
MID(.Buf, a + 1, l))
138 VAR kl = 0, i = .IniTok[1], a = i, e = 0, atc = 0
142 SELECT CASE AS CONST .Buf[i]
145 Code(
MID(.Buf, a + 1,
IIF(e, e, i) - a))
147 IF kl <= 0
ANDALSO (e = 0
ORELSE .Buf[e] <>
ASC(
"_"))
THEN EXIT SUB
151 IF kl <= 0
THEN atc = i
153 IF .Buf[i + 1] <
ASC(
"0")
ANDALSO .Buf[i - 1] <
ASC(
"0")
THEN e =
IIF(e, e, i)
157 IF .Buf[i + 1] =
ASC(
"'")
THEN e =
IIF(e, e, i)
159 VAR esc =
IIF(.Buf[i - 1] =
ASC(
"!"), 1, 0)
160 IF atc
THEN .Buf[atc] =
ASC(
" ")
163 SELECT CASE AS CONST .Buf[i]
164 CASE 0,
ASC(!
"\n") : i -= 1 :
EXIT DO
165 CASE ASC(
"\") :
IF esc
THEN i += 1
166 CASE ASC(
"""") :
IF .Buf[i + 1] =
ASC(
"""")
THEN i += 1
ELSE EXIT DO
169 CASE ASC(
"("),
ASC(
"{"),
ASC(
"[") : kl += 1
170 CASE ASC(
")"),
ASC(
"}"),
ASC(
"]") : kl -= 1 :
IF kl < 0
THEN EXIT DO
171 CASE ASC(
",") :
IF kl <= 0
THEN EXIT DO
173 LOOP UNTIL i >= .EndTok[1] :
IF i <= a
THEN EXIT SUB
174 Code(
MID(.Buf, a + 1,
IIF(e, e, i) - a))
175 IF atc
THEN .Buf[atc] =
ASC(
"@")
190 VAR t = .DimTok, kl = 0
192 SELECT CASE AS CONST *t
194 SELECT CASE AS CONST t[-3]
195 CASE .TOK_3DOT, .TOK_ANY : Code(
"][")
196 CASE ELSE : Code(
" + 1][")
198 CASE .TOK_BROPN : kl += 1 : Code(
"[")
199 IF t[3] = .TOK_COMMA
ORELSE t[3] = .TOK_BRCLO
THEN _
200 Code(
MID(.Buf, t[1] + 2, t[4] - t[1] - 1))
201 CASE .TOK_BRCLO : kl -= 1
202 SELECT CASE AS CONST t[-3]
203 CASE .TOK_3DOT, .TOK_ANY : Code(
"]")
204 CASE ELSE : Code(
" + 1]")
206 IF kl <= 0
THEN EXIT DO
207 CASE ELSE : Code(.
SubStr(t))
209 LOOP UNTIL t >= .EndTok
241 IF .ShaTok
THEN Code(.
SubStr(.ShaTok) &
"_")
242 IF .Co1Tok
THEN Code(.
SubStr(.Co1Tok) &
"_")
244 IF .Co2Tok
THEN Code(
"_" & .
SubStr(.Co2Tok))
245 FOR i
AS INTEGER = 1
TO .PtrCount
246 Code(
"_" & .
SubStr(.PtrTok)) :
NEXT
247 IF .NamTok
THEN Code(
" ")
ELSE EXIT SUB
252 IF .NamTok > .TypTok _
257 IF .BitTok
THEN Code(.BitIni)
292 IF .Co1Tok
THEN Code(
"const ")
294 SELECT CASE AS CONST *.TypTok
295 CASE .TOK_BYTE : Code(
"signed char")
296 CASE .TOK_UBYT : Code(
"unsigned char")
297 CASE .TOK_SHOR : Code(
"short")
298 CASE .TOK_USHO : Code(
"unsigned short")
299 CASE .TOK_STRI : Code(
"char*")
300 CASE .TOK_SING : Code(
"float")
301 CASE .TOK_DOUB : Code(
"double")
302 CASE .TOK_ZSTR : Code(
"char")
303 CASE .TOK_WSTR : Code(
"wchar")
304 CASE .TOK_INT, .TOK_LONG : Code(
"int")
305 CASE .TOK_UINT, .TOK_ULNG : Code(
"unsigned int")
306 CASE .TOK_LINT : Code(
"LONG int")
307 CASE .TOK_ULIN : Code(
"unsigned LONG int")
308 CASE ELSE : Code(.
SubStr(.TypTok))
311 IF .Co2Tok
THEN Code(
" " & .
SubStr(.Co2Tok))
312 IF .By_Tok
ANDALSO *.By_Tok = .TOK_BYRE
THEN .PtrCount += 1
313 IF .NamTok
THEN Code(
" ")
ELSE EXIT SUB
316 IF .NamTok > .TypTok _
320 SELECT CASE AS CONST *.StaTok
321 CASE .TOK_TYPE, .TOK_DIM, .TOK_RDIM, .TOK_COMM, .TOK_EXRN
322 FOR i
AS INTEGER = 1
TO .PtrCount : Code(
"*") :
NEXT
324 Code(
" (*") :
cNam(P) : Code(
")") :
EXIT SUB
327 IF .NamTok
THEN cNam(P)
328 IF .ParTok
THEN EXIT SUB
329 IF .BitTok
THEN Code(.BitIni)
353 IF .By_Tok
THEN Code(.
SubStr(.By_Tok) &
"_")
354 IF .DivTok
THEN Code(
"_" & .
SubStr(.DivTok))
357 IF .By_Tok
THEN Code(.
SubStr(.By_Tok) &
"_")
358 Code(.
SubStr(.As_Tok) &
"_")
361 IF *.NamTok = .TOK_3DOT
THEN Code(
"...") _
365 IF *.CurTok <> .TOK_BRCLO
THEN Code(
", ") :
EXIT SUB
394 IF *.NamTok = .TOK_3DOT
THEN Code(
"...") _
398 IF *.CurTok <> .TOK_BRCLO
THEN Code(
", ") :
EXIT SUB
418 IF .DivTok
THEN Code(
LCASE(.
SubStr(.DivTok)) &
" ")
420 SELECT CASE AS CONST *.FunTok
422 IF .NamTok
THEN Code(.
SubStr(.NamTok) &
"::" & .
SubStr(.NamTok))
ELSE _
425 IF .NamTok
THEN Code(.
SubStr(.NamTok) &
"::~" & .
SubStr(.NamTok))
ELSE _
426 Code(
"~" & .BlockNam)
429 IF .CalTok
THEN Code(
"_" & .
SubStr(.CalTok))
430 IF .AliTok
THEN Code(
"_" & .
SubStr(.AliTok))
431 IF .TypTok
ANDALSO .As_Tok
THEN _
432 Code(
"_" & .
SubStr(.As_Tok) &
"_")
434 END SELECT :
IF 0 = .ParTok
THEN Code(
"(void)") :
EXIT SUB
439 IF .ListCount <= 0
THEN Code(
")")
458 IF .DivTok
THEN Code(.
SubStr(.DivTok) &
" ")
460 SELECT CASE AS CONST *.FunTok
462 Code(.
SubStr(.FunTok) &
" ")
463 IF .NamTok
THEN Code(.
SubStr(.NamTok) &
"." & .
SubStr(.NamTok)) _
466 Code(.
SubStr(.FunTok) &
" ")
467 IF .NamTok
THEN Code(.
SubStr(.NamTok) &
"." & .
SubStr(.NamTok)) _
470 IF 0 = .TypTok
THEN Code(
"void ")
472 END SELECT :
IF 0 = .ParTok
THEN Code(
"(void)") :
EXIT SUB
477 IF .ListCount <= 0
THEN Code(
"void)")
493 SELECT CASE AS CONST OPT->RunMode
495 Code(NL &
"'!!! " & PROJ_NAME & .ErrMsg &
"!" & NL)
497 ERROUT(
"==> " & PROJ_NAME & .ErrMsg &
"!")
515 DO :
IF E > 0
THEN E -= 1
ELSE EXIT SUB
516 LOOP UNTIL .Buf[E] =
ASC(!
"\n")
517 VAR a = .SrcBgn, l = E - a : .SrcBgn = E + 1
518 Code(
MID(.Buf, a + 1, l + 1))
544 Code(
MID(.Buf, .SrcBgn + 1))