43 FUNCTION RepData.add(
BYREF S
AS STRING,
BYREF R
AS STRING)
AS ZSTRING PTR
44 IF S =
"" THEN RETURN 0
45 IF INSTR(S,
ANY !
"\000\001\002")
THEN RETURN @
"undefined char (search)"
46 VAR c =
CHR(1) & S &
CHR(2) :
IF INSTR(5, I, c)
THEN RETURN @
"already defined"
47 *
CAST(
LONG PTR,
SADD(I)) += 1 : I &=
MID(c, 2) &
HEX(
LEN(O) + 4) &
CHR(1)
48 O &=
MKl(0) & R &
CHR(0) :
RETURN 0
62 FUNCTION RepData.rep(
BYREF S
AS STRING)
AS ZSTRING PTR
63 VAR a =
INSTR(I,
CHR(1) & S &
CHR(2)) :
IF a
THEN a +=
LEN(S) + 2
ELSE RETURN SADD(S)
64 VAR e =
INSTR(a, I,
CHR(1)) + 1
65 DIM AS ZSTRING PTR z =
SADD(O) +
VALINT(
"&h" &
MID(I, a, e - a))
66 *
CAST(
LONG PTR, z - 4) += 1 :
RETURN z
81 FUNCTION html_specials(
BYVAL T
AS UBYTE PTR,
BYVAL A
AS INTEGER,
BYVAL L
AS INTEGER)
AS STRING
84 FOR i
AS INTEGER = A
TO A + L - 1
85 SELECT CASE AS CONST T[i]
86 CASE ASC(
"&") : r &=
"&"
87 CASE ASC(
"<") : r &=
"<"
88 CASE ASC(
">") : r &=
">"
89 CASE ASC(
"""") : r &=
"""
90 CASE ELSE : r &=
CHR(T[i])
107 FUNCTION tex_specials(
BYVAL T
AS UBYTE PTR,
BYVAL A
AS INTEGER,
BYVAL L
AS INTEGER)
AS STRING
110 FOR i
AS INTEGER = A
TO A + L - 1
111 SELECT CASE AS CONST T[i]
112 CASE ASC(
"\") : r &=
"\(\backslash\)"
113 CASE ASC(
"#") : r &=
"\#"
114 CASE ASC(
"%") : r &=
"\%"
115 CASE ASC(
"_") : r &=
"\_"
116 CASE ASC(
"{") : r &=
"\{"
117 CASE ASC(
"}") : r &=
"\}"
118 CASE ELSE : r &=
CHR(T[i])
135 FUNCTION xml_specials(
BYVAL T
AS UBYTE PTR,
BYVAL A
AS INTEGER,
BYVAL L
AS INTEGER)
AS STRING
138 FOR i
AS INTEGER = A
TO A + L - 1
139 SELECT CASE AS CONST T[i]
140 CASE ASC(
"&") : r &=
"&"
141 CASE ASC(
"<") : r &=
"<"
142 CASE ASC(
">") : r &=
">"
143 CASE ASC(
"""") : r &=
"""
144 CASE ASC(
"'") : r &=
"'"
145 CASE ASC(
" ") : r &=
"<sp/>"
146 CASE ELSE : r &=
CHR(T[i])
167 FUNCTION html_eol(
BYVAL Symb
AS RepData
PTR,
BYREF Nr
AS INTEGER)
AS STRING
168 IF Nr = 0
THEN RETURN "</div>"
169 VAR r =
"<div class=""line"">", nstr =
RIGHT(
" " & Nr, 5)
171 r &=
"<a name=""l" &
RIGHT(
"0000" & Nr, 5) &
"""></a>"
172 VAR res = Symb->rep(nstr)
173 IF res =
SADD(nstr)
THEN r &=
"<span class=""lineno"">" & nstr _
174 ELSE r &=
"<span class=""lineno"">" & *res
176 r &=
"<span class=""lineno"">" & nstr
179 IF Nr = 2
THEN RETURN r &
"</span> "
180 RETURN !
"</div>" & NL & r &
"</span> "
197 FUNCTION tex_eol(
BYVAL Symb
AS RepData
PTR,
BYREF Nr
AS INTEGER)
AS STRING
198 IF Nr = 0
THEN RETURN ""
200 , nstr =
RIGHT(
"0000" & Nr, 5) _
201 , res =
IIF(Symb, Symb->rep(nstr),
SADD(nstr))
202 IF res =
SADD(nstr)
THEN r &= nstr _
205 IF Nr = 2
THEN RETURN r &
" "
223 FUNCTION xml_eol(
BYVAL Symb
AS RepData
PTR,
BYREF Nr
AS INTEGER)
AS STRING
224 IF Nr = 0
THEN RETURN "</codeline>"
225 VAR r =
"<codeline lineno=""" _
227 , res =
IIF(Symb, Symb->rep(nstr),
SADD(nstr))
228 IF res =
SADD(nstr)
THEN r &= nstr &
""">" _
231 IF Nr = 2
THEN RETURN r
232 RETURN "</codeline>" & NL & r
245 Pars->
UserTok =
CAST(
LONG PTR, @
THIS)
261 Var doxy =
NEW DoxyUDT(Fnam) _
262 , recu =
OPT->InRecursiv _
265 MSG_END(PROJ_NAME &
" syntax highlighting")
266 MSG_LINE(
"Doxyfile " & Fnam)
268 GenHtm =
IIF(doxy->Tag(GENERATE_HTML) =
"YES" ANDALSO _
269 doxy->Tag(SOURCE_BROWSER) =
"YES", 1, 0)
270 GenTex =
IIF(doxy->Tag(GENERATE_LATEX) =
"YES" ANDALSO _
271 doxy->Tag(LATEX_SOURCE_CODE) =
"YES", 1, 0)
272 GenXml =
IIF(doxy->Tag(GENERATE_XML) =
"YES" ANDALSO _
273 doxy->Tag(XML_PROGRAMLISTING) =
"YES", 1, 0)
275 IF GenAny
THEN MSG_CONT(
"parsed") _
276 ELSE MSG_CONT(
"nothing to do") :
EXIT WHILE
278 FbPath = doxy->Tag(INPUT_TAG)
279 OPT->InRecursiv =
IIF(doxy->Tag(RECURSIVE) =
"YES", 1, 0)
280 MSG_LINE(
"FB source " & FbPath)
281 CHDIR(
OPT->StartPath)
282 IF CHDIR(FbPath)
THEN MSG_CONT(
"error (couldn't change directory)") :
EXIT WHILE
285 IF LEN(FbFiles) > 1
THEN MSG_CONT(
"scanned") _
286 ELSE MSG_CONT(
"error (no FB source files)") :
EXIT WHILE
290 InPath =
OPT->
addPath(
OPT->StartPath, doxy->Tag(OUTPUT_DIRECTORY))
292 HtmlPath =
OPT->
addPath(InPath, doxy->Tag(HTML_OUTPUT))
293 HtmlSuff = doxy->Tag(HTML_FILE_EXTENSION)
294 IF 0 =
LEN(HtmlSuff)
THEN HtmlSuff =
".html"
295 OPT->InRecursiv =
IIF(doxy->Tag(CREATE_SUBDIRS) =
"YES", 1, 0)
296 CHDIR(
OPT->StartPath)
297 MSG_LINE(
"HTML source " &
LEFT(HtmlPath,
LEN(HtmlPath) - 1))
298 IF CHDIR(HtmlPath)
THEN
299 MSG_CONT(
"error (couldn't change directory)")
301 DoxyFiles =
OPT->
scanFiles(
"*_8bas_source" & HtmlSuff,
"") _
304 IF LEN(DoxyFiles) > 1
THEN MSG_CONT(
"scanned") : do_files() _
305 ELSE MSG_CONT(
"scanned (no files)")
310 TexPath =
OPT->
addPath(InPath, doxy->Tag(LATEX_OUTPUT))
311 MSG_LINE(
"LaTeX source " &
LEFT(TexPath,
LEN(TexPath) - 1))
312 CHDIR(
OPT->StartPath)
313 IF CHDIR(TexPath)
THEN
314 MSG_CONT(
"error (couldn't change directory)")
318 IF LEN(DoxyFiles) > 1
THEN
320 FBDOC_MARK = @
"%%% Syntax-highlighting by fb-doc %%%"
321 KEYW_A = @
"\textcolor{keyword}{"
322 KWTP_A = @
"\textcolor{keywordtype}{"
323 KWFL_A = @
"\textcolor{keywordflow}{"
324 PREP_A = @
"\textcolor{preprocessor}{"
325 CMNT_A = @
"\textcolor{comment}{"
327 QUOT_A = @
"\textcolor{stringliteral}{"""
331 prepare = @prepare_tex()
334 MSG_CONT(
"scanned (no files)")
339 XmlPath =
OPT->
addPath(InPath, doxy->Tag(XML_OUTPUT))
340 MSG_LINE(
"XML source " &
LEFT(XmlPath,
LEN(XmlPath) - 1))
341 CHDIR(
OPT->StartPath)
342 IF CHDIR(XmlPath)
THEN
343 MSG_CONT(
"error (couldn't change directory)")
347 IF LEN(DoxyFiles) > 1
THEN
349 FBDOC_MARK = @
"<!-- Syntax-highlighting by fb-doc -->"
350 KEYW_A = @
"<highlight class=""keyword"">"
351 KWTP_A = @
"<highlight class=""keywordtype"">"
352 KWFL_A = @
"<highlight class=""keywordflow"">"
353 PREP_A = @
"<highlight class=""preprocessor"">"
354 CMNT_A = @
"<highlight class=""comment"">"
355 SPAN_E = @
"</highlight>"
356 QUOT_A = @
"<highlight class=""stringliteral"">"""
357 QUOT_E = @
"""</highlight>"
360 prepare = @prepare_xml()
363 MSG_CONT(
"scanned (no files)")
371 OPT->InRecursiv = recu
372 CHDIR(
OPT->StartPath)
391 VAR a = 1, e = a, l =
LEN(DoxyFiles)
393 e =
INSTR(a + 1, DoxyFiles, !
"\n")
394 VAR in_fnam =
MID(DoxyFiles, a, e - a)
398 IF OPEN(in_fnam &
"_" FOR OUTPUT AS OPT->Ocha)
THEN
399 MSG_CONT(
"error (couldn't write)")
402 IF OPEN(in_fnam
FOR INPUT AS Ifnr)
THEN
403 MSG_CONT(
"error (couldn't read)")
407 VAR fb_nam = prepare(@
THIS)
408 IF ASC(fb_nam) > 3
THEN
409 Pars->File_(FbPath & fb_nam, 0)
410 IF LEN(Pars->ErrMsg)
THEN MSG_CONT(Pars->ErrMsg)
ELSE MSG_CONT(
"done")
412 PRINT #OPT->Ocha, LastLine
414 LINE INPUT #Ifnr, LastLine
415 PRINT #OPT->Ocha, LastLine
420 NAME(in_fnam &
"_", in_fnam)
421 IF LEN(Pars->ErrMsg)
THEN MSG_CONT(Pars->ErrMsg)
426 SELECT CASE AS CONST ASC(fb_nam)
427 CASE 1 : MSG_CONT(
"error (no source file)")
428 CASE 2 : MSG_CONT(
"error (cannot operate twice)")
429 CASE 3 : MSG_CONT(
"error (end of file)")
452 VAR i = .SrcBgn, start = i
454 SELECT CASE AS CONST Buf[i]
457 IF i <= start
THEN Code(eol(
Symbols, LineNo)) : start = i + 1 :
EXIT SELECT
458 Code(generate_code(Buf, start, i - start) & eol(
Symbols, LineNo))
461 IF i >= start
THEN Code(generate_code(Buf, start, i - start))
464 Code(*QUOT_A & special_chars(Buf, start + 1, i - start - 1) & *QUOT_E)
467 IF i >= start
THEN Code(generate_code(Buf, start, i - start))
470 IF Buf[start + 1] <>
OPT->JoComm
ORELSE OPT->Docom
THEN _
471 Code(*CMNT_A & special_chars(Buf, start, i - start) & *SPAN_E)
474 CASE ASC(
"/") :
IF Buf[i + 1] <>
ASC(
"'")
THEN EXIT SELECT
475 IF i >= start
THEN Code(generate_code(Buf, start, i - start))
478 VAR fl = Buf[i] <>
OPT->JoComm
OR OPT->Docom
480 SELECT CASE AS CONST Buf[i]
484 IF fl
THEN Code(eol(
Symbols, LineNo))
ELSE LineNo += 1
485 start = i + 1 :
EXIT SELECT
487 IF fl
THEN Code(*CMNT_A & special_chars(Buf, start, i - start) & *SPAN_E & eol(
Symbols, LineNo))
ELSE LineNo += 1
490 SELECT CASE AS CONST Buf[i + 1]
492 CASE ASC(
"/") : i += 1 :
EXIT DO
497 IF fl
THEN Code(*CMNT_A & special_chars(Buf, start, i - start + 1) & *SPAN_E)
499 SELECT CASE AS CONST Buf[i]
502 CASE ASC(!
"\n") :
IF fl
THEN Code(eol(
Symbols, LineNo))
ELSE LineNo += 1
507 WEND :
IF .SrcBgn < i
THEN .SrcBgn = i
522 SELECT CASE AS CONST W[0]
525 CASE "__DATE__" :
RETURN @!
"\004__Date__"
526 CASE "__DATE_ISO__" :
RETURN @!
"\004__Date_Iso__"
527 CASE "__FB_64BIT__" :
RETURN @!
"\004__Fb_64Bit__"
528 CASE "__FB_ARGC__" :
RETURN @!
"\004__Fb_Argc__"
529 CASE "__FB_ARGV__" :
RETURN @!
"\004__Fb_Argv__"
530 CASE "__FB_BACKEND__" :
RETURN @!
"\004__Fb_Backend__"
531 CASE "__FB_BIGENDIAN__" :
RETURN @!
"\004__Fb_Bigendian__"
532 CASE "__FB_BUILD_DATE__" :
RETURN @!
"\004__Fb_Build_Date__"
533 CASE "__FB_CYGWIN__" :
RETURN @!
"\004__Fb_Cygwin__"
534 CASE "__FB_DARWIN__" :
RETURN @!
"\004__Fb_Darwin__"
535 CASE "__FB_DEBUG__" :
RETURN @!
"\004__Fb_Debug__"
536 CASE "__FB_DOS__" :
RETURN @!
"\004__Fb_Dos__"
537 CASE "__FB_ERR__" :
RETURN @!
"\004__Fb_Err__"
538 CASE "__FB_FPMODE__" :
RETURN @!
"\004__Fb_Fpmode__"
539 CASE "__FB_FPU__" :
RETURN @!
"\004__Fb_Fpu__"
540 CASE "__FB_FREEBSD__" :
RETURN @!
"\004__Fb_Freebsd__"
541 CASE "__FB_LANG__" :
RETURN @!
"\004__Fb_Lang__"
542 CASE "__FB_LINUX__" :
RETURN @!
"\004__Fb_Linux__"
543 CASE "__FB_MAIN__" :
RETURN @!
"\004__Fb_Main__"
544 CASE "__FB_MIN_VERSION__" :
RETURN @!
"\004__Fb_Min_Version__"
545 CASE "__FB_MT__" :
RETURN @!
"\004__Fb_Mt__"
546 CASE "__FB_NETBSD__" :
RETURN @!
"\004__Fb_Netbsd__"
547 CASE "__FB_OPENBSD__" :
RETURN @!
"\004__Fb_Openbsd__"
548 CASE "__FB_OPTION_BYVAL__" :
RETURN @!
"\004__Fb_Option_Byval__"
549 CASE "__FB_OPTION_DYNAMIC__" :
RETURN @!
"\004__Fb_Option_Dynamic__"
550 CASE "__FB_OPTION_ESCAPE__" :
RETURN @!
"\004__Fb_Option_Escape__"
551 CASE "__FB_OPTION_EXPLICIT__" :
RETURN @!
"\004__Fb_Option_Explicit__"
552 CASE "__FB_OPTION_GOSUB__" :
RETURN @!
"\004__Fb_Option_Gosub__"
553 CASE "__FB_OPTION_PRIVATE__" :
RETURN @!
"\004__Fb_Option_Private__"
554 CASE "__FB_OUT_DLL__" :
RETURN @!
"\004__Fb_Out_Dll__"
555 CASE "__FB_OUT_EXE__" :
RETURN @!
"\004__Fb_Out_Exe__"
556 CASE "__FB_OUT_LIB__" :
RETURN @!
"\004__Fb_Out_Lib__"
557 CASE "__FB_OUT_OBJ__" :
RETURN @!
"\004__Fb_Out_Obj__"
558 CASE "__FB_PCOS__" :
RETURN @!
"\004__Fb_Pcos__"
559 CASE "__FB_SIGNATURE__" :
RETURN @!
"\004__Fb_Signature__"
560 CASE "__FB_SSE__" :
RETURN @!
"\004__Fb_Sse__"
561 CASE "__FB_UNIX__" :
RETURN @!
"\004__Fb_Unix__"
562 CASE "__FB_VECTORIZE__" :
RETURN @!
"\004__Fb_Vectorize__"
563 CASE "__FB_VER_MAJOR__" :
RETURN @!
"\004__Fb_Ver_Major__"
564 CASE "__FB_VER_MINOR__" :
RETURN @!
"\004__Fb_Ver_Minor__"
565 CASE "__FB_VER_PATCH__" :
RETURN @!
"\004__Fb_Ver_Patch__"
566 CASE "__FB_VERSION__" :
RETURN @!
"\004__Fb_Version__"
567 CASE "__FB_WIN32__" :
RETURN @!
"\004__Fb_Win32__"
568 CASE "__FB_XBOX__" :
RETURN @!
"\004__Fb_Xbox__"
569 CASE "__FILE__" :
RETURN @!
"\004__File__"
570 CASE "__FILE_NQ__" :
RETURN @!
"\004__File_Nq__"
571 CASE "__FUNCTION__" :
RETURN @!
"\004__Function__"
572 CASE "__FUNCTION_NQ__" :
RETURN @!
"\004__Function_Nq__"
573 CASE "__LINE__" :
RETURN @!
"\004__Line__"
574 CASE "__PATH__" :
RETURN @!
"\004__Path__"
575 CASE "__TIME__" :
RETURN @!
"\004__Time__"
579 CASE "#ASSERT" :
RETURN @!
"\004#Assert"
580 CASE "#DEF" :
RETURN @!
"\004#Def"
581 CASE "#DEFINE" :
RETURN @!
"\004#Define"
582 CASE "#ELSE" :
RETURN @!
"\004#Else"
583 CASE "#ELSEIF" :
RETURN @!
"\004#ElseIf"
584 CASE "#ENDIF" :
RETURN @!
"\004#EndIf"
585 CASE "#ENDMACRO" :
RETURN @!
"\004#EndMacro"
586 CASE "#ERROR" :
RETURN @!
"\004#Error"
587 CASE "#IF" :
RETURN @!
"\004#If"
588 CASE "#IFDEF" :
RETURN @!
"\004#IfDef"
589 CASE "#IFNDEF" :
RETURN @!
"\004#IfNDef"
590 CASE "#INCLUDE" :
RETURN @!
"\004#Include"
591 CASE "#INCLIB" :
RETURN @!
"\004#IncLib"
592 CASE "#LANG" :
RETURN @!
"\004#Lang"
593 CASE "#LIBPATH" :
RETURN @!
"\004#LibPath"
594 CASE "#LINE" :
RETURN @!
"\004#Line"
595 CASE "#MACRO" :
RETURN @!
"\004#Macro"
596 CASE "#PRAGMA" :
RETURN @!
"\004#Pragma"
597 CASE "#PRINT" :
RETURN @!
"\004#Print"
598 CASE "#UNDEF" :
RETURN @!
"\004#UnDef"
609 CASE "ABS" :
RETURN @!
"\001Abs"
610 CASE "ABSTRACT" :
RETURN @!
"\001Abstract"
611 CASE "ACCESS" :
RETURN @!
"\001Access"
612 CASE "ACOS" :
RETURN @!
"\001Acos"
613 CASE "ADD" :
RETURN @!
"\001Add"
614 CASE "ALIAS" :
RETURN @!
"\001Alias"
615 CASE "ALLOCATE" :
RETURN @!
"\001Allocate"
616 CASE "ALPHA" :
RETURN @!
"\001Alpha"
617 CASE "AND" :
RETURN @!
"\001And"
618 CASE "ANDALSO" :
RETURN @!
"\001AndAlso"
619 CASE "ANY" :
RETURN @!
"\001Any"
620 CASE "APPEND" :
RETURN @!
"\001Append"
621 CASE "AS" :
RETURN @!
"\002As"
622 CASE "ASC" :
RETURN @!
"\001Asc"
623 CASE "ASIN" :
RETURN @!
"\001Asin"
624 CASE "ASM" :
RETURN @!
"\001Asm"
625 CASE "ASSERT" :
RETURN @!
"\001Assert"
626 CASE "ASSERTWARN" :
RETURN @!
"\001Assertwarn"
627 CASE "ATAN2" :
RETURN @!
"\001Atan2"
628 CASE "ATN" :
RETURN @!
"\001Atn"
632 CASE "BASE" :
RETURN @!
"\001Base"
633 CASE "BEEP" :
RETURN @!
"\001Beep"
634 CASE "BIN" :
RETURN @!
"\001Bin"
635 CASE "BINARY" :
RETURN @!
"\001Binary"
636 CASE "BIT" :
RETURN @!
"\001Bit"
637 CASE "BITRESET" :
RETURN @!
"\001BitReset"
638 CASE "BITSET" :
RETURN @!
"\001BitSet"
639 CASE "BLOAD" :
RETURN @!
"\001Bload"
640 CASE "BSAVE" :
RETURN @!
"\001BSave"
641 CASE "BYTE" :
RETURN @!
"\002Byte"
642 CASE "BYREF" :
RETURN @!
"\002ByRef"
643 CASE "BYVAL" :
RETURN @!
"\002ByVal"
647 CASE "CALL" :
RETURN @!
"\001Call"
648 CASE "CALLOCATE" :
RETURN @!
"\001CAllocate"
649 CASE "CALLS" :
RETURN @!
"\001Calls"
650 CASE "CASE" :
RETURN @!
"\001Case"
651 CASE "CAST" :
RETURN @!
"\001Cast"
652 CASE "CBYTE" :
RETURN @!
"\001CByte"
653 CASE "CDBL" :
RETURN @!
"\001CDbl"
654 CASE "CDECL" :
RETURN @!
"\001Cdecl"
655 CASE "CHAIN" :
RETURN @!
"\001Chain"
656 CASE "CHDIR" :
RETURN @!
"\001ChDir"
657 CASE "CHR" :
RETURN @!
"\001Chr"
658 CASE "CINT" :
RETURN @!
"\001CInt"
659 CASE "CIRCLE" :
RETURN @!
"\001Circle"
660 CASE "CLASS" :
RETURN @!
"\001Class"
661 CASE "CLEAR" :
RETURN @!
"\001Clear"
662 CASE "CLNG" :
RETURN @!
"\001CLng"
663 CASE "CLNGINT" :
RETURN @!
"\001CLngInt"
664 CASE "CLOSE" :
RETURN @!
"\001Close"
665 CASE "CLS" :
RETURN @!
"\001Cls"
666 CASE "COLOR" :
RETURN @!
"\001Color"
667 CASE "COM" :
RETURN @!
"\001Com"
668 CASE "COMMAND" :
RETURN @!
"\001Command"
669 CASE "COMMON" :
RETURN @!
"\002Common"
670 CASE "CONDBROADCAST" :
RETURN @!
"\001CondBroadcast"
671 CASE "CONDCREATE" :
RETURN @!
"\001CondCreate"
672 CASE "CONDDESTROY" :
RETURN @!
"\001CondDestroy"
673 CASE "CONDSIGNAL" :
RETURN @!
"\001CondSignal"
674 CASE "CONDWAIT" :
RETURN @!
"\001CondWait"
675 CASE "CONS" :
RETURN @!
"\001Cons"
676 CASE "CONST" :
RETURN @!
"\002Const"
677 CASE "CONSTRUCTOR" :
RETURN @!
"\001Constructor"
678 CASE "CONTINUE" :
RETURN @!
"\001Continue"
679 CASE "COS" :
RETURN @!
"\001Cos"
680 CASE "CPTR" :
RETURN @!
"\001CPtr"
681 CASE "CSHORT" :
RETURN @!
"\001CShort"
682 CASE "CSIGN" :
RETURN @!
"\001DSign"
683 CASE "CSNG" :
RETURN @!
"\001CSng"
684 CASE "CSRLIN" :
RETURN @!
"\001CsrLin"
685 CASE "CUBYTE" :
RETURN @!
"\001CUbyte"
686 CASE "CUINT" :
RETURN @!
"\001CUInt"
687 CASE "CULNG" :
RETURN @!
"\001CULng"
688 CASE "CULNGINT" :
RETURN @!
"\001CULngInt"
689 CASE "CUSNG" :
RETURN @!
"\001CUSng"
690 CASE "CURDIR" :
RETURN @!
"\001Curdir"
691 CASE "CUSHORT" :
RETURN @!
"\001CUShort"
692 CASE "CUSTOM" :
RETURN @!
"\001Custom"
693 CASE "CVD" :
RETURN @!
"\001Cvd"
694 CASE "CVI" :
RETURN @!
"\001Cvi"
695 CASE "CVL" :
RETURN @!
"\001CVL"
696 CASE "CVLONGINT" :
RETURN @!
"\001CVLongInt"
697 CASE "CVS" :
RETURN @!
"\001Cvs"
698 CASE "CVSHORT" :
RETURN @!
"\001CVShort"
702 CASE "DATA" :
RETURN @!
"\001Data"
703 CASE "DATE" :
RETURN @!
"\001Date"
704 CASE "DATEADD" :
RETURN @!
"\001DateAdd"
705 CASE "DATEDIFF" :
RETURN @!
"\001DateDiff"
706 CASE "DATEPART" :
RETURN @!
"\001DatePart"
707 CASE "DATESERIAL" :
RETURN @!
"\001DateSerial"
708 CASE "DATEVALUE" :
RETURN @!
"\001DateValue"
709 CASE "DAY" :
RETURN @!
"\001Day"
710 CASE "DEALLOCATE" :
RETURN @!
"\001DeAllocate"
711 CASE "DECLARE" :
RETURN @!
"\001Declare"
712 CASE "DEFBYTE" :
RETURN @!
"\001DefByte"
713 CASE "DEFDBL" :
RETURN @!
"\001DefDbl"
714 CASE "DEFINED" :
RETURN @!
"\004Defined"
715 CASE "DEFINT" :
RETURN @!
"\001DefInt"
716 CASE "DEFLNG" :
RETURN @!
"\001DefLng"
717 CASE "DEFLONGINT" :
RETURN @!
"\001DefLongInt"
718 CASE "DEFSHORT" :
RETURN @!
"\001DefShort"
719 CASE "DEFSNG" :
RETURN @!
"\001DefSng"
720 CASE "DEFSTR" :
RETURN @!
"\001DefStr"
721 CASE "DEFUBYTE" :
RETURN @!
"\001DefUbyte"
722 CASE "DEFUINT" :
RETURN @!
"\001DefUInt"
723 CASE "DEFULONGINT" :
RETURN @!
"\001DefULongInt"
724 CASE "DEFUSHORT" :
RETURN @!
"\001DefUShort"
725 CASE "DELETE" :
RETURN @!
"\001Delete"
726 CASE "DESTRUCTOR" :
RETURN @!
"\001Destructor"
727 CASE "DIM" :
RETURN @!
"\002Dim"
728 CASE "DIR" :
RETURN @!
"\001Dir"
729 CASE "DO" :
RETURN @!
"\001Do"
730 CASE "DOUBLE" :
RETURN @!
"\002Double"
731 CASE "DRAW" :
RETURN @!
"\001Draw"
732 CASE "DYLIBFREE" :
RETURN @!
"\001DyLibFree"
733 CASE "DYLIBLOAD" :
RETURN @!
"\001DyLibLoad"
734 CASE "DYLIBSYMBOL" :
RETURN @!
"\001DyLibSymbol"
735 CASE "DYNAMIC" :
RETURN @!
"\001Dynamic"
739 CASE "ELSE" :
RETURN @!
"\001Else"
740 CASE "ELSEIF" :
RETURN @!
"\001ElseIf"
741 CASE "ENCODING" :
RETURN @!
"\001Encoding"
742 CASE "END" :
RETURN @!
"\001End"
743 CASE "ENDIF" :
RETURN @!
"\001EndIf"
744 CASE "ENUM" :
RETURN @!
"\001Enum"
745 CASE "ENVIRON" :
RETURN @!
"\001Environ"
746 CASE "EOF" :
RETURN @!
"\001Eof"
747 CASE "EQV" :
RETURN @!
"\001Eqv"
748 CASE "ERASE" :
RETURN @!
"\001Erase"
749 CASE "ERFN" :
RETURN @!
"\001Erfn"
750 CASE "ERL" :
RETURN @!
"\001Erl"
751 CASE "ERMN" :
RETURN @!
"\001Ermn"
752 CASE "ERR" :
RETURN @!
"\001Err"
753 CASE "ERROR" :
RETURN @!
"\001Error"
754 CASE "ESCAPE" :
RETURN @!
"\001Escape"
755 CASE "EXEC" :
RETURN @!
"\001Exec"
756 CASE "EXEPATH" :
RETURN @!
"\001ExePath"
757 CASE "EXPLICIT" :
RETURN @!
"\001Explicit"
758 CASE "EXIT" :
RETURN @!
"\001Exit"
759 CASE "EXP" :
RETURN @!
"\001Exp"
760 CASE "EXPORT" :
RETURN @!
"\001Export"
761 CASE "EXTENDS" :
RETURN @!
"\001Extends"
762 CASE "EXTERN" :
RETURN @!
"\002Extern"
763 CASE "ESCAPE" :
RETURN @!
"\001Escape"
764 CASE "EXPLICIT" :
RETURN @!
"\001Explicit"
768 CASE "FIELD" :
RETURN @!
"\001Field"
769 CASE "FILEATTR" :
RETURN @!
"\001FileAttr"
770 CASE "FILECOPY" :
RETURN @!
"\001FileCopy"
771 CASE "FILEDATETIME" :
RETURN @!
"\001FileDateTime"
772 CASE "FILEEXISTS" :
RETURN @!
"\001FileExists"
773 CASE "FILELEN" :
RETURN @!
"\001FileLen"
774 CASE "FIX" :
RETURN @!
"\001Fix"
775 CASE "FLIP" :
RETURN @!
"\001Flip"
776 CASE "FOR" :
RETURN @!
"\001For"
777 CASE "FORMAT" :
RETURN @!
"\001Format"
778 CASE "FRAC" :
RETURN @!
"\001Frac"
779 CASE "FRE" :
RETURN @!
"\001Fre"
780 CASE "FREEFILE" :
RETURN @!
"\001FreeFile"
781 CASE "FUNCTION" :
RETURN @!
"\001Function"
785 CASE "GET" :
RETURN @!
"\001Get"
786 CASE "GETJOYSTICK" :
RETURN @!
"\001GetJoyStick"
787 CASE "GETKEY" :
RETURN @!
"\001GetKey"
788 CASE "GETMOUSE" :
RETURN @!
"\001GetMouse"
789 CASE "GOSUB" :
RETURN @!
"\001GoSub"
790 CASE "GOTO" :
RETURN @!
"\001Goto"
794 CASE "HEX" :
RETURN @!
"\001Hex"
795 CASE "HIBYTE" :
RETURN @!
"\001HiByte"
796 CASE "HIWORD" :
RETURN @!
"\001HiWord"
797 CASE "HOUR" :
RETURN @!
"\001Hour"
801 CASE "IF" :
RETURN @!
"\001If"
802 CASE "IIF" :
RETURN @!
"\001IIf"
803 CASE "IMAGECONVERTROW" :
RETURN @!
"\001ImageConvertRow"
804 CASE "IMAGECREATE" :
RETURN @!
"\001ImageCreate"
805 CASE "IMAGEDESTROY" :
RETURN @!
"\001ImageDestroy"
806 CASE "IMAGEINFO" :
RETURN @!
"\001ImageInfo"
807 CASE "IMP" :
RETURN @!
"\001Imp"
808 CASE "IMPLEMENTS" :
RETURN @!
"\001Implements"
809 CASE "IMPORT" :
RETURN @!
"\001Import"
810 CASE "INKEY" :
RETURN @!
"\001InKey"
811 CASE "INP" :
RETURN @!
"\001Inp"
812 CASE "INPUT" :
RETURN @!
"\001Input"
813 CASE "INSTR" :
RETURN @!
"\001Instr"
814 CASE "INSTRREV" :
RETURN @!
"\001InstrRev"
815 CASE "INT" :
RETURN @!
"\001Int"
816 CASE "INTEGER" :
RETURN @!
"\002Integer"
817 CASE "IS" :
RETURN @!
"\001Is"
818 CASE "ISDATE" :
RETURN @!
"\001IsDate"
819 CASE "ISREDIRECTED" :
RETURN @!
"\001IsRedirected"
823 CASE "KILL" :
RETURN @!
"\001Kill"
827 CASE "LBOUND" :
RETURN @!
"\001LBound"
828 CASE "LCASE" :
RETURN @!
"\001LCase"
829 CASE "LEFT" :
RETURN @!
"\001Left"
830 CASE "LEN" :
RETURN @!
"\001Len"
831 CASE "LET" :
RETURN @!
"\001Let"
832 CASE "LIB" :
RETURN @!
"\001Lib"
833 CASE "LINE" :
RETURN @!
"\001Line"
834 CASE "LOBYTE" :
RETURN @!
"\001LoByte"
835 CASE "LOC" :
RETURN @!
"\001Loc"
836 CASE "LOCAL" :
RETURN @!
"\001Local"
837 CASE "LOCATE" :
RETURN @!
"\001Locate"
838 CASE "LOCK" :
RETURN @!
"\001Lock"
839 CASE "LOF" :
RETURN @!
"\001Lof"
840 CASE "LOG" :
RETURN @!
"\001Log"
841 CASE "LONG" :
RETURN @!
"\002Long"
842 CASE "LONGINT" :
RETURN @!
"\002LongInt"
843 CASE "LOOP" :
RETURN @!
"\001Loop"
844 CASE "LOWORD" :
RETURN @!
"\001LoWord"
845 CASE "LPOS" :
RETURN @!
"\001LPos"
846 CASE "LPRINT" :
RETURN @!
"\001LPrint"
847 CASE "LPT" :
RETURN @!
"\001Lpt"
848 CASE "LSET" :
RETURN @!
"\001LSet"
849 CASE "LTRIM" :
RETURN @!
"\001LTrim"
853 CASE "MID" :
RETURN @!
"\001Mid"
854 CASE "MINUTE" :
RETURN @!
"\001Minute"
855 CASE "MKD" :
RETURN @!
"\001MKD"
856 CASE "MKDIR" :
RETURN @!
"\001MkDir"
857 CASE "MKI" :
RETURN @!
"\001MKi"
858 CASE "MKL" :
RETURN @!
"\001MKl"
859 CASE "MKLONGINT" :
RETURN @!
"\001MKLongInt"
860 CASE "MKS" :
RETURN @!
"\001MKs"
861 CASE "MKSHORT" :
RETURN @!
"\001MKShort"
862 CASE "MOD" :
RETURN @!
"\001Mod"
863 CASE "MONTH" :
RETURN @!
"\001Month"
864 CASE "MONTHNAME" :
RETURN @!
"\001MonthName"
865 CASE "MULTIKEY" :
RETURN @!
"\001MultiKey"
866 CASE "MUTEXCREATE" :
RETURN @!
"\001MutexCreate"
867 CASE "MUTEXDESTROY" :
RETURN @!
"\001MutexDestroy"
868 CASE "MUTEXLOCK" :
RETURN @!
"\001MutexLock"
869 CASE "MUTEXUNLOCK" :
RETURN @!
"\001MutexUnlock"
873 CASE "NAKED" :
RETURN @!
"\001Naked"
874 CASE "NAME" :
RETURN @!
"\001Name"
875 CASE "NAMESPACE" :
RETURN @!
"\001Namespace"
876 CASE "NEW" :
RETURN @!
"\001New"
877 CASE "NEXT" :
RETURN @!
"\001Next"
878 CASE "NOT" :
RETURN @!
"\001Not"
879 CASE "NOW" :
RETURN @!
"\001Now"
880 CASE "NOGOSUB" :
RETURN @!
"\001NoGoSub"
881 CASE "NOKEYWORD" :
RETURN @!
"\001NoKeyWord"
885 CASE "OBJECT" :
RETURN @!
"\001Object"
886 CASE "OCT" :
RETURN @!
"\001Oct"
887 CASE "OFFSETOF" :
RETURN @!
"\001OffsetOf"
888 CASE "ON" :
RETURN @!
"\001On"
889 CASE "ONCE" :
RETURN @!
"\004Once"
890 CASE "OPEN" :
RETURN @!
"\001Open"
891 CASE "OPERATOR" :
RETURN @!
"\001Operator"
892 CASE "OPTION" :
RETURN @!
"\001Option"
893 CASE "OR" :
RETURN @!
"\001Or"
894 CASE "ORELSE" :
RETURN @!
"\001OrElse"
895 CASE "OUT" :
RETURN @!
"\001Out"
896 CASE "OUTPUT" :
RETURN @!
"\001Output"
897 CASE "OVERLOAD" :
RETURN @!
"\001Overload"
898 CASE "OVERRIDE" :
RETURN @!
"\001Override"
899 CASE "OPTION" :
RETURN @!
"\001Option"
903 CASE "PAINT" :
RETURN @!
"\001Paint"
904 CASE "PALETTE" :
RETURN @!
"\001Palette"
905 CASE "PASCAL" :
RETURN @!
"\001Pascal"
906 CASE "PCOPY" :
RETURN @!
"\001PCopy"
907 CASE "PEEK" :
RETURN @!
"\001Peek"
908 CASE "PIPE" :
RETURN @!
"\001Pipe"
909 CASE "PMAP" :
RETURN @!
"\001Pmap"
910 CASE "POINT" :
RETURN @!
"\001Point"
911 CASE "POINTER" :
RETURN @!
"\001Pointer"
912 CASE "POKE" :
RETURN @!
"\001Poke"
913 CASE "POS" :
RETURN @!
"\001Pos"
914 CASE "POP" :
RETURN @!
"\001Pop"
915 CASE "PRESERVE" :
RETURN @!
"\001Preserve"
916 CASE "PRESET" :
RETURN @!
"\001Preset"
917 CASE "PRINT" :
RETURN @!
"\001Print"
918 CASE "PRIVATE" :
RETURN @!
"\001Private"
919 CASE "PROCPTR" :
RETURN @!
"\001ProcPtr"
920 CASE "PROPERTY" :
RETURN @!
"\001Property"
921 CASE "PROTECTED" :
RETURN @!
"\001Protected"
922 CASE "PSET" :
RETURN @!
"\001PSet"
923 CASE "PTR" :
RETURN @!
"\002Ptr"
924 CASE "PUBLIC" :
RETURN @!
"\001Public"
925 CASE "PUT" :
RETURN @!
"\001Put"
926 CASE "PUSH" :
RETURN @!
"\001Push"
930 CASE "RANDOM" :
RETURN @!
"\001Random"
931 CASE "RANDOMIZE" :
RETURN @!
"\001Randomize"
932 CASE "READ" :
RETURN @!
"\001Read"
933 CASE "REALLOCATE" :
RETURN @!
"\001ReAllocate"
934 CASE "REDIM" :
RETURN @!
"\001ReDim"
935 CASE "REM" :
RETURN @!
"\001Rem"
936 CASE "RESET" :
RETURN @!
"\001Reset"
937 CASE "RESTORE" :
RETURN @!
"\001Restore"
938 CASE "RESUME" :
RETURN @!
"\001Resume"
939 CASE "RETURN" :
RETURN @!
"\001Return"
940 CASE "RGB" :
RETURN @!
"\001RGB"
941 CASE "RGBA" :
RETURN @!
"\001RGBA"
942 CASE "RIGHT" :
RETURN @!
"\001Right"
943 CASE "RMDIR" :
RETURN @!
"\001RmDir"
944 CASE "RND" :
RETURN @!
"\001Rnd"
945 CASE "RSET" :
RETURN @!
"\001RSet"
946 CASE "RTRIM" :
RETURN @!
"\001RTrim"
947 CASE "RUN" :
RETURN @!
"\001Run"
951 CASE "SADD" :
RETURN @!
"\001SAdd"
952 CASE "SCOPE" :
RETURN @!
"\001Scope"
953 CASE "SCREEN" :
RETURN @!
"\001Screen"
954 CASE "SCREENCONTROL" :
RETURN @!
"\001ScreenControl"
955 CASE "SCREENCOPY" :
RETURN @!
"\001ScreenCopy"
956 CASE "SCREENEVENT" :
RETURN @!
"\001ScreenEvent"
957 CASE "SCREENGLPROC" :
RETURN @!
"\001ScreenGlProc"
958 CASE "SCREENINFO" :
RETURN @!
"\001ScreenInfo"
959 CASE "SCREENLIST" :
RETURN @!
"\001ScreenList"
960 CASE "SCREENLOCK" :
RETURN @!
"\001ScreenLock"
961 CASE "SCREENPTR" :
RETURN @!
"\001ScreenPtr"
962 CASE "SCREENRES" :
RETURN @!
"\001ScreenRes"
963 CASE "SCREENSET" :
RETURN @!
"\001ScreenSet"
964 CASE "SCREENSYNC" :
RETURN @!
"\001ScreenSync"
965 CASE "SCREENUNLOCK" :
RETURN @!
"\001ScreenUnlock"
966 CASE "SCRN" :
RETURN @!
"\001Scrn"
967 CASE "SECOND" :
RETURN @!
"\001Second"
968 CASE "SEEK" :
RETURN @!
"\001Seek"
969 CASE "SELECT" :
RETURN @!
"\001Select"
970 CASE "SETDATE" :
RETURN @!
"\001SetDate"
971 CASE "SETENVIRON" :
RETURN @!
"\001SetEnviron"
972 CASE "SETMOUSE" :
RETURN @!
"\001SetMouse"
973 CASE "SETTIME" :
RETURN @!
"\001SetTime"
974 CASE "SGN" :
RETURN @!
"\001Sgn"
975 CASE "SHARED" :
RETURN @!
"\002Shared"
976 CASE "SHELL" :
RETURN @!
"\001Shell"
977 CASE "SHL" :
RETURN @!
"\001Shl"
978 CASE "SHORT" :
RETURN @!
"\002Short"
979 CASE "SHR" :
RETURN @!
"\001Shr"
980 CASE "SIN" :
RETURN @!
"\001Sin"
981 CASE "SINGLE" :
RETURN @!
"\002Single"
982 CASE "SIZEOF" :
RETURN @!
"\001SizeOf"
983 CASE "SLEEP" :
RETURN @!
"\001Sleep"
984 CASE "SPACE" :
RETURN @!
"\001Space"
985 CASE "SPC" :
RETURN @!
"\001Spc"
986 CASE "SQR" :
RETURN @!
"\001Sqr"
987 CASE "STATIC" :
RETURN @!
"\002Static"
988 CASE "STDCALL" :
RETURN @!
"\001StdCall"
989 CASE "STEP" :
RETURN @!
"\001Step"
990 CASE "STICK" :
RETURN @!
"\001Stick"
991 CASE "STOP" :
RETURN @!
"\001Stop"
992 CASE "STR" :
RETURN @!
"\001Str"
993 CASE "STRIG" :
RETURN @!
"\001Strig"
994 CASE "STRING" :
RETURN @!
"\002String"
995 CASE "STRPTR" :
RETURN @!
"\001StrPtr"
996 CASE "SUB" :
RETURN @!
"\001Sub"
997 CASE "SWAP" :
RETURN @!
"\001Swap"
998 CASE "SYSTEM" :
RETURN @!
"\001System"
1002 CASE "TAB" :
RETURN @!
"\001Tab"
1003 CASE "TAN" :
RETURN @!
"\001Tan"
1004 CASE "THEN" :
RETURN @!
"\001Then"
1005 CASE "THIS" :
RETURN @!
"\001This"
1006 CASE "THREADCALL" :
RETURN @!
"\001ThreadCall"
1007 CASE "THREADCREATE" :
RETURN @!
"\001ThreadCreate"
1008 CASE "THREADDETACH" :
RETURN @!
"\001ThreadDetach"
1009 CASE "THREADWAIT" :
RETURN @!
"\001ThreadWait"
1010 CASE "TIME" :
RETURN @!
"\001Time"
1011 CASE "TIMER" :
RETURN @!
"\001Timer"
1012 CASE "TIMESERIAL" :
RETURN @!
"\001TimeSerial"
1013 CASE "TIMEVALUE" :
RETURN @!
"\001TimeValue"
1014 CASE "TO" :
RETURN @!
"\001To"
1015 CASE "TRANS" :
RETURN @!
"\001Trans"
1016 CASE "TRIM" :
RETURN @!
"\001Trim"
1017 CASE "TYPE" :
RETURN @!
"\001Type"
1018 CASE "TYPEOF" :
RETURN @!
"\004TypeOf"
1022 CASE "UBOUND" :
RETURN @!
"\001UBound"
1023 CASE "UBYTE" :
RETURN @!
"\002UByte"
1024 CASE "UCASE" :
RETURN @!
"\001UCase"
1025 CASE "UINTEGER" :
RETURN @!
"\002UInteger"
1026 CASE "ULONG" :
RETURN @!
"\002ULong"
1027 CASE "ULONGINT" :
RETURN @!
"\002ULongInt"
1028 CASE "UNION" :
RETURN @!
"\001Union"
1029 CASE "UNLOCK" :
RETURN @!
"\001Unlock"
1030 CASE "UNSIGNED" :
RETURN @!
"\002Unsigned"
1031 CASE "UNTIL" :
RETURN @!
"\001Until"
1032 CASE "USHORT" :
RETURN @!
"\002UShort"
1033 CASE "USING" :
RETURN @!
"\001Using"
1037 CASE "VA_ARG" :
RETURN @!
"\001Va_Arg"
1038 CASE "VA_FIRST" :
RETURN @!
"\001Va_First"
1039 CASE "VA_NEXT" :
RETURN @!
"\001Va_Next"
1040 CASE "VAL" :
RETURN @!
"\001Val"
1041 CASE "VAL64" :
RETURN @!
"\001Val64"
1042 CASE "VALINT" :
RETURN @!
"\001ValInt"
1043 CASE "VALLNG" :
RETURN @!
"\001ValLng"
1044 CASE "VALUINT" :
RETURN @!
"\001ValUInt"
1045 CASE "VALULNG" :
RETURN @!
"\001ValULng"
1046 CASE "VAR" :
RETURN @!
"\002Var"
1047 CASE "VARPTR" :
RETURN @!
"\001VarPtr"
1048 CASE "VIEW" :
RETURN @!
"\001View"
1049 CASE "VIRTUAL" :
RETURN @!
"\001Virtual"
1053 CASE "WAIT" :
RETURN @!
"\001Wait"
1054 CASE "WBIN" :
RETURN @!
"\001WBin"
1055 CASE "WCHR" :
RETURN @!
"\001WChr"
1056 CASE "WEEKDAY" :
RETURN @!
"\001WeekDay"
1057 CASE "WEEKDAYNAME" :
RETURN @!
"\001WeekDayName"
1058 CASE "WEND" :
RETURN @!
"\001Wend"
1059 CASE "WHEX" :
RETURN @!
"\001WHex"
1060 CASE "WHILE" :
RETURN @!
"\001While"
1061 CASE "WIDTH" :
RETURN @!
"\001Width"
1062 CASE "WINDOW" :
RETURN @!
"\001Window"
1063 CASE "WINDOWTITLE" :
RETURN @!
"\001WindowTitle"
1064 CASE "WINPUT" :
RETURN @!
"\001WInput"
1065 CASE "WITH" :
RETURN @!
"\001With"
1066 CASE "WOCT" :
RETURN @!
"\001WOct"
1067 CASE "WRITE" :
RETURN @!
"\001Write"
1068 CASE "WSPACE" :
RETURN @!
"\001WSpace"
1069 CASE "WSTR" :
RETURN @!
"\001WStr"
1070 CASE "WSTRING" :
RETURN @!
"\002WString"
1074 CASE "XOR" :
RETURN @!
"\001Xor"
1078 CASE "YEAR" :
RETURN @!
"\001Year"
1082 CASE "ZSTRING" :
RETURN @!
"\002ZString"
1084 END SELECT :
RETURN 0
1102 #MACRO GET_WORD_TYPE()
1103 VAR word =
MID(*T, start + 1, size)
1104 VAR res =
IIF(
Symbols,
Symbols->rep(word),
cast(
zstring ptr,
SADD(word)))
1105 IF res =
SADD(word)
THEN
1107 res = word_type(word)
1108 typ =
IIF(res,
ASC(*res), FB_CODE)
1110 SELECT CASE AS CONST OPT->CaseMode
1111 CASE OPT->CASE_LOWER :
MID(*T, start + 1, size) =
LCASE(word)
1112 CASE OPT->CASE_MIXED :
MID(*T, start + 1, size) =
MID(*res, 2, size)
1113 CASE OPT->CASE_UPPER :
MID(*T, start + 1, size) = word
1116 typ =
CAST(
INTEGER, res)
1135 VAR size = 0, start = -1, last = -1, typ = last, blcks =
""
1136 FOR i
AS INTEGER = A
TO A + L - 1
1137 SELECT CASE AS CONST T[i]
1138 CASE ASC(
"0")
TO ASC(
"9")
1139 IF size
THEN size += 1
1146 CASE ASC(
"#"),
ASC(
"_"),
ASC(
"A")
TO ASC(
"Z"),
ASC(
"a")
TO ASC(
"z")
1147 size += 1 :
IF size = 1
THEN start = i
1151 IF typ <> last
THEN blcks &=
MKI(typ) &
MKI(i - size) : last = typ
1155 SELECT CASE AS CONST T[i]
1157 IF last = FB_KEYW
THEN EXIT SELECT
1158 blcks &=
MKI(FB_KEYW) &
MKI(i) : last = FB_KEYW
1159 CASE ASC(!
"\t"),
ASC(!
"\v"),
ASC(
" ")
1160 IF i > A
ANDALSO typ < FB_SYMB
THEN EXIT SELECT
1161 blcks &=
MKI(FB_CODE) &
MKI(i) : last = FB_CODE
1163 IF last = FB_CODE
THEN EXIT SELECT
1164 blcks &=
MKI(FB_CODE) &
MKI(i) : last = FB_CODE
1171 IF typ <> last
THEN blcks &=
MKI(typ) &
MKI(A + L - size)
1173 blcks &=
MKI(-1) &
MKI(A + L)
1176 , p =
CAST(
INTEGER PTR,
SADD(blcks)) _
1177 , n = (
LEN(blcks) \
SIZEOF(
INTEGER)) - 3
1178 FOR i
AS INTEGER = 0
TO n
STEP 2
1179 VAR l = p[i + 3] - p[i + 1]
1181 SELECT CASE AS CONST p[i]
1182 CASE FB_KEYW : r &= *KEYW_A & special_chars(T, p[i + 1], l) & *SPAN_E
1183 CASE FB_KWTP : r &= *KWTP_A & special_chars(T, p[i + 1], l) & *SPAN_E
1184 CASE FB_KWFL : r &= *KWFL_A & special_chars(T, p[i + 1], l) & *SPAN_E
1185 CASE FB_PREP : r &= *PREP_A & special_chars(T, p[i + 1], l) & *SPAN_E
1186 CASE FB_CODE : r &= special_chars(T, p[i + 1], l)
1187 CASE ELSE : r &=
PEEK(
ZSTRING, p[i])
1212 VAR p =
INSTR(FbFiles, Nam)
1214 SELECT CASE AS CONST FbFiles[p - 2]
1215 CASE ASC(NL) :
RETURN Nam
1217 VAR pp =
INSTRREV(FbFiles, NL, p) + 1
1218 RETURN MID(FbFiles, pp, p - pp +
LEN(Nam))
1220 p =
INSTR(p +
LEN(Nam), FbFiles, Nam)
1238 VAR pa = 0, fb_nam =
""
1240 IF EOF(.Ifnr)
THEN RETURN CHR(3)
ELSE LINE INPUT #.Ifnr, .LastLine
1241 pa =
INSTR(.LastLine,
"<div class=""line""><a name=""l00001""") :
IF pa
THEN EXIT DO
1242 Code(.LastLine & NL)
1243 pa =
INSTR(.LastLine,
"<div class=""title"">")
1246 VAR pe =
INSTR(pa, .LastLine,
"</div>")
1247 fb_nam = .searchPathNam(
MID(.LastLine, pa, pe - pa))
1248 IF 0 =
LEN(fb_nam)
THEN RETURN CHR(1)
1251 Code(
LEFT(.LastLine, pa - 1) & NL)
1252 Code(*.FBDOC_MARK & NL)
1255 pa =
INSTR(pa + 1, .LastLine,
"<a class=""code""")
1257 VAR pe =
INSTR(pa + 14, .LastLine,
"</a>"), pp =
INSTRREV(.LastLine,
">", pe - 1) + 1
1258 VAR word =
MID(.LastLine, pp, pe - pp)
1259 VAR res = .
Symbols->
add(word,
MID(.LastLine, pa, pe - pa + 4))
1260 pa =
INSTR(pa + 1, .LastLine,
"<a class=""code""")
1262 IF EOF(.Ifnr)
THEN RETURN CHR(3)
ELSE LINE INPUT #.Ifnr, .LastLine
1263 LOOP UNTIL LEFT(.LastLine, 6) =
"</div>"
1264 IF EOF(.Ifnr)
THEN RETURN CHR(3)
ELSE RETURN fb_nam
1281 IF EOF(.Ifnr)
THEN RETURN CHR(3)
ELSE LINE INPUT #.Ifnr, .LastLine
1282 Code(.LastLine & NL)
1283 VAR p1 =
INSTR(.LastLine,
"\section{") _
1284 , p2 =
INSTR(p1 + 10, .LastLine,
"}") _
1287 FOR i
AS INTEGER = p1 + 8
TO p2 - 2
1288 IF .LastLine[i] =
ASC(
"\")
THEN
1289 SELECT CASE AS CONST .LastLine[i + 1]
1290 CASE ASC(
"+"),
ASC(
"-"),
ASC(
"/") : i += 1 :
CONTINUE FOR
1291 CASE ASC(
"_") :
CONTINUE FOR
1294 fb_nam &=
CHR(.LastLine[i])
1296 fb_nam = .searchPathNam(fb_nam) :
IF 0 =
LEN(fb_nam)
THEN RETURN CHR(1)
1299 IF EOF(.Ifnr)
THEN RETURN CHR(3)
ELSE LINE INPUT #.Ifnr, .LastLine
1300 Code(.LastLine & NL)
1301 LOOP UNTIL .LastLine =
"\begin{DoxyCode}"
1303 IF EOF(.Ifnr)
THEN RETURN CHR(3)
ELSE LINE INPUT #.Ifnr, .LastLine
1304 IF .LastLine = *.FBDOC_MARK
THEN RETURN CHR(2)
1305 Code(*.FBDOC_MARK & NL)
1308 VAR pa =
INSTR(.LastLine,
"\hyper")
1310 pa =
INSTR(14, .LastLine,
"\hyperlink{")
1311 var pm =
INSTR(pa + 10, .LastLine,
"}{") + 2 _
1312 , pe =
INSTR(pm, .LastLine,
"}") _
1313 , t =
LEFT(.LastLine, pa - 2) &
MID(.LastLine, pm, pe - pm + 1)
1314 .
Symbols->
add(
MID(.LastLine, pm, pe - pm), t)
1315 pa =
INSTR(pe + 1, .LastLine,
"\hyperlink{")
1318 VAR pm =
INSTR(pa + 11, .LastLine,
"}{") + 2 _
1319 , pe =
INSTR(pm, .LastLine,
"}") + 1 _
1321 FOR i
AS INTEGER = pm - 1
TO pe - 3
1322 IF .LastLine[i] <>
ASC(
"\")
THEN word &=
CHR(.LastLine[i])
1324 .
Symbols->
add(word,
MID(.LastLine, pa, pe - pa))
1325 pa =
INSTR(pe, .LastLine,
"\hyperlink{")
1327 IF EOF(.Ifnr)
THEN RETURN CHR(3)
ELSE LINE INPUT #.Ifnr, .LastLine
1328 LOOP UNTIL .LastLine =
"\end{DoxyCode}" :
RETURN fb_nam
1347 IF EOF(.Ifnr)
THEN RETURN CHR(3)
ELSE LINE INPUT #.Ifnr, .LastLine
1348 Code(.LastLine & NL)
1349 IF INSTR(.LastLine,
"<programlisting>")
THEN EXIT DO
1350 VAR pa =
INSTR(.LastLine,
"<compoundname>")
1353 VAR pe =
INSTR(pa, .LastLine,
"</compoundname>")
1354 fb_nam = .searchPathNam(
MID(.LastLine, pa, pe - pa))
1355 IF 0 =
LEN(fb_nam)
THEN RETURN CHR(1)
1359 IF EOF(.Ifnr)
THEN RETURN CHR(3)
ELSE LINE INPUT #.Ifnr, .LastLine
1360 IF .LastLine = *.FBDOC_MARK
THEN RETURN CHR(2)
1361 Code(*.FBDOC_MARK & NL)
1363 VAR word =
"", pm =
INSTR(.LastLine,
"refid=""")
1365 VAR pa =
INSTRREV(.LastLine,
"<", pm - 1)
1366 pm =
INSTR(pm + 8, .LastLine,
">")
1367 IF MID(.LastLine, pa, 5) =
"<ref " THEN
1368 VAR pe =
INSTR(pm + 1, .LastLine,
"</ref>")
1370 .
Symbols->
add(
MID(.LastLine, pm, pe - pm),
MID(.LastLine, pa, pe - pa + 6))
1373 pm =
INSTR(pa + 1, .LastLine,
"lineno=""") + 8
1374 .
Symbols->
add(
MID(.LastLine, pm,
INSTR(pm + 1, .LastLine,
"""") - pm), _
1375 MID(.LastLine, pa, pe - pa))
1378 IF EOF(.Ifnr)
THEN RETURN CHR(3)
ELSE LINE INPUT #.Ifnr, .LastLine
1379 LOOP UNTIL INSTR(.LastLine,
"</programlisting>")
1380 IF EOF(.Ifnr)
THEN RETURN CHR(3)
ELSE RETURN fb_nam
1396 IF 0 =
OPT->InTree
THEN .Po = .Fin
1402 IF .GenAny
THEN .LineNo = 1
ELSE .Pars = P
1419 IF OPT->Level > 0
THEN EXIT SUB
1442 VAR fnam =
TRIM(P->SubStr(P->NamTok),
"""")
1443 fnam = .special_chars(
SADD(fnam), 0,
LEN(fnam))
1446 IF res =
SADD(fnam)
THEN
1449 VAR i =
INSTR(*res, fnam) _
1450 , j = i +
LEN(fnam) _
1451 , a = P->StaTok[1] - 1 _
1452 , l = P->NamTok[1] - a
1454 Code(.generate_code(
SADD(P->Buf), a, l) _
1455 & *.QUOT_A &
LEFT(*res, i - 1) & fnam &
MID(*res, j) & *.QUOT_E)
1457 P->SrcBgn = P->NamTok[1] + P->NamTok[2]
1479 VAR t = P->NamTok, nam = P->SubStr(t)
1481 SELECT CASE AS CONST *P->FunTok
1482 CASE P->TOK_CTOR : t += 3 :
IF OPT->Types =
OPT->FB_STYLE
THEN nam &=
"::" & nam
1483 CASE P->TOK_DTOR : t += 3 :
IF OPT->Types =
OPT->FB_STYLE
THEN nam &=
"::~" & nam
1487 SELECT CASE AS CONST *t
1488 CASE P->TOK_DOT :
IF OPT->Types =
OPT->FB_STYLE
THEN nam &=
"::" ELSE nam &=
"."
1489 CASE P->TOK_WORD : nam &= P->SubStr(t)
1490 CASE ELSE :
EXIT WHILE
1494 nam = .special_chars(
SADD(nam), 0,
LEN(nam))
1496 IF res =
SADD(nam)
THEN EXIT SUB
1500 VAR i =
INSTR(*res, nam) _
1501 , j = i +
LEN(nam) _
1502 , a =
IIF(P->DivTok, P->DivTok[1], P->StaTok[1]) _
1503 , l = P->NamTok[1] - a
1504 P->SrcBgn = *(t - 2) + *(t - 1)
1505 nam = .special_chars(
SADD(P->Buf), a + l, P->SrcBgn - P->NamTok[1])
1506 Code(.generate_code(
SADD(P->Buf), a, l) _
1507 &
LEFT(*res, i - 1) & nam &
MID(*res, j))