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)
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 OPT->Asterix
THEN Code(
"* ")
66 SELECT CASE AS CONST .Buf[i + 1]
68 CASE ASC(
"/") : i += 1 :
EXIT DO
72 IF c
THEN Code(
MID(.Buf, c + 1, i - c - 1) &
"*/")
74 WEND :
IF .SrcBgn < i
THEN .SrcBgn = i
94 SELECT CASE AS CONST *t
95 CASE .TOK_DOT : Code(
"::")
96 CASE .TOK_WORD : Code(.
SubStr(t))
97 CASE ELSE :
EXIT WHILE
115 FOR i
AS INTEGER = 1
TO .PtrCount : Code(
"*") :
NEXT
116 VAR t = .NamTok, a = t[1], l = t[2]
119 SELECT CASE AS CONST *t
120 CASE .TOK_DOT, .TOK_WORD : l += t[2]
121 CASE ELSE :
EXIT WHILE
123 WEND : Code(
MID(.Buf, a + 1, l))
137 VAR kl = 0, i = .IniTok[1], a = i, e = 0, atc = 0
141 SELECT CASE AS CONST .Buf[i]
144 Code(
MID(.Buf, a + 1,
IIF(e, e, i) - a))
146 IF kl <= 0
ANDALSO (e = 0
ORELSE .Buf[e] <>
ASC(
"_"))
THEN EXIT SUB
150 IF kl <= 0
THEN atc = i
152 IF .Buf[i + 1] <
ASC(
"0")
ANDALSO .Buf[i - 1] <
ASC(
"0")
THEN e =
IIF(e, e, i)
156 IF .Buf[i + 1] =
ASC(
"'")
THEN e =
IIF(e, e, i)
158 VAR esc =
IIF(.Buf[i - 1] =
ASC(
"!"), 1, 0)
159 IF atc
THEN .Buf[atc] =
ASC(
" ")
162 SELECT CASE AS CONST .Buf[i]
163 CASE 0,
ASC(!
"\n") : i -= 1 :
EXIT DO
164 CASE ASC(
"\") :
IF esc
THEN i += 1
165 CASE ASC(
"""") :
IF .Buf[i + 1] =
ASC(
"""")
THEN i += 1
ELSE EXIT DO
168 CASE ASC(
"("),
ASC(
"{"),
ASC(
"[") : kl += 1
169 CASE ASC(
")"),
ASC(
"}"),
ASC(
"]") : kl -= 1 :
IF kl < 0
THEN EXIT DO
170 CASE ASC(
",") :
IF kl <= 0
THEN EXIT DO
172 LOOP UNTIL i >= .EndTok[1] :
IF i <= a
THEN EXIT SUB
173 Code(
MID(.Buf, a + 1,
IIF(e, e, i) - a))
174 IF atc
THEN .Buf[atc] =
ASC(
"@")
189 VAR t = .DimTok, kl = 0
191 SELECT CASE AS CONST *t
193 SELECT CASE AS CONST t[-3]
194 CASE .TOK_3DOT, .TOK_ANY : Code(
"][")
195 CASE ELSE : Code(
" + 1][")
197 CASE .TOK_BROPN : kl += 1 : Code(
"[")
198 IF t[3] = .TOK_COMMA
ORELSE t[3] = .TOK_BRCLO
THEN _
199 Code(
MID(.Buf, t[1] + 2, t[4] - t[1] - 1))
200 CASE .TOK_BRCLO : kl -= 1
201 SELECT CASE AS CONST t[-3]
202 CASE .TOK_3DOT, .TOK_ANY : Code(
"]")
203 CASE ELSE : Code(
" + 1]")
205 IF kl <= 0
THEN EXIT DO
206 CASE ELSE : Code(.
SubStr(t))
208 LOOP UNTIL t >= .EndTok
240 IF .ShaTok
THEN Code(.
SubStr(.ShaTok) &
"_")
241 IF .Co1Tok
THEN Code(.
SubStr(.Co1Tok) &
"_")
243 IF .Co2Tok
THEN Code(
"_" & .
SubStr(.Co2Tok))
244 FOR i
AS INTEGER = 1
TO .PtrCount
245 Code(
"_" & .
SubStr(.PtrTok)) :
NEXT
246 IF .NamTok
THEN Code(
" ")
ELSE EXIT SUB
251 IF .NamTok > .TypTok _
256 IF .BitTok
THEN Code(.BitIni)
290 IF .Co1Tok
THEN Code(
"const ")
292 SELECT CASE AS CONST *.TypTok
293 CASE .TOK_BYTE : Code(
"signed char")
294 CASE .TOK_UBYT : Code(
"unsigned char")
295 CASE .TOK_SHOR : Code(
"short")
296 CASE .TOK_USHO : Code(
"unsigned short")
297 CASE .TOK_STRI : Code(
"char*")
298 CASE .TOK_SING : Code(
"float")
299 CASE .TOK_DOUB : Code(
"double")
300 CASE .TOK_ZSTR : Code(
"char")
301 CASE .TOK_WSTR : Code(
"wchar")
302 CASE .TOK_INT, .TOK_LONG : Code(
"int")
303 CASE .TOK_UINT, .TOK_ULNG : Code(
"unsigned int")
304 CASE .TOK_LINT : Code(
"LONG int")
305 CASE .TOK_ULIN : Code(
"unsigned LONG int")
306 CASE ELSE : Code(.
SubStr(.TypTok))
309 IF .Co2Tok
THEN Code(
" " & .
SubStr(.Co2Tok))
310 IF .By_Tok
ANDALSO *.By_Tok = .TOK_BYRE
THEN .PtrCount += 1
311 IF .NamTok
THEN Code(
" ")
ELSE EXIT SUB
314 IF .NamTok > .TypTok _
317 SELECT CASE AS CONST *.StaTok
318 CASE .TOK_TYPE, .TOK_DIM, .TOK_RDIM, .TOK_COMM, .TOK_EXRN
319 IF .FunTok
THEN Code(
"(") :
cNam(P) : Code(
")") :
EXIT SUB
321 IF .NamTok
THEN cNam(P)
322 IF .BitTok
THEN Code(.BitIni)
346 IF .By_Tok
THEN Code(.
SubStr(.By_Tok) &
"_")
347 IF .DivTok
THEN Code(
"_" & .
SubStr(.DivTok))
350 IF .By_Tok
THEN Code(.
SubStr(.By_Tok) &
"_")
351 Code(.
SubStr(.As_Tok) &
"_")
353 ELSEIF *.NamTok = .TOK_3DOT
THEN
354 Code(
"...)") :
EXIT SUB
357 IF *.CurTok <> .TOK_BRCLO
THEN Code(
", ") :
EXIT SUB
385 ELSEIF .NamTok = .TOK_3DOT
THEN
391 IF *.CurTok <> .TOK_BRCLO
THEN Code(
", ") :
EXIT SUB
411 IF .DivTok
THEN Code(
LCASE(.
SubStr(.DivTok)) &
" ")
413 SELECT CASE AS CONST *.FunTok
415 IF .NamTok
THEN Code(.
SubStr(.NamTok) &
"::" & .
SubStr(.NamTok))
ELSE _
418 IF .NamTok
THEN Code(.
SubStr(.NamTok) &
"::~" & .
SubStr(.NamTok))
ELSE _
419 Code(
"~" & .BlockNam)
422 IF .CalTok
THEN Code(
"_" & .
SubStr(.CalTok))
423 IF .AliTok
THEN Code(
"_" & .
SubStr(.AliTok))
424 IF .TypTok
ANDALSO .As_Tok
THEN _
425 Code(
"_" & .
SubStr(.As_Tok) &
"_")
427 END SELECT :
IF 0 = .ParTok
THEN Code(
"(void)") :
EXIT SUB
432 IF .ListCount <= 0
THEN Code(
")")
451 IF .DivTok
THEN Code(.
SubStr(.DivTok) &
" ")
453 SELECT CASE AS CONST *.FunTok
455 Code(.
SubStr(.FunTok) &
" ")
456 IF .NamTok
THEN Code(.
SubStr(.NamTok) &
"." & .
SubStr(.NamTok)) _
459 Code(.
SubStr(.FunTok) &
" ")
460 IF .NamTok
THEN Code(.
SubStr(.NamTok) &
"." & .
SubStr(.NamTok)) _
463 IF 0 = .TypTok
THEN Code(
"void ")
465 END SELECT :
IF 0 = .ParTok
THEN Code(
"(void)") :
EXIT SUB
470 IF .ListCount <= 0
THEN Code(
"void)")
486 SELECT CASE AS CONST OPT->RunMode
488 Code(NL &
"'!!! " & PROJ_NAME & .ErrMsg &
"!" & NL)
490 ERROUT(
"==> " & PROJ_NAME & .ErrMsg &
"!")
508 DO :
IF E > 0
THEN E -= 1
ELSE EXIT SUB
509 LOOP UNTIL .Buf[E] =
ASC(!
"\n")
510 VAR a = .SrcBgn, l = E - a : .SrcBgn = E + 1
511 Code(
MID(.Buf, a + 1, l + 1))
537 Code(
MID(.Buf, .SrcBgn + 1))