Subversion Repositories Kolibri OS

Rev

Rev 9190 | Rev 9210 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9190 Rev 9193
Line 35... Line 35...
35
 
35
 
36
    tKeyWords = RECORD
36
    tKeyWords = RECORD
37
        words: ARRAY 200, 32 OF WCHAR; cnt: INTEGER
37
        words: ARRAY 200, 32 OF WCHAR; cnt: INTEGER
Line -... Line 38...
-
 
38
    END;
-
 
39
 
38
    END;
40
    tDelimiters = ARRAY 256 OF BOOLEAN;
Line 39... Line 41...
39
 
41
 
Line 40... Line 42...
40
    procGetStr = PROCEDURE (secName, keyName: ARRAY OF CHAR; VAR s: ARRAY OF CHAR);
42
    procGetStr = PROCEDURE (secName, keyName: ARRAY OF CHAR; VAR s: ARRAY OF CHAR);
-
 
43
 
-
 
44
 
-
 
45
VAR
Line 41... Line 46...
41
 
46
 
42
 
47
	KW: ARRAY 8 OF ARRAY 3 OF tKeyWords;
43
VAR
48
	Delim: ARRAY 8 OF tDelimiters;
Line 61... Line 66...
61
    RETURN i >= 0
66
    RETURN i >= 0
62
END checkKW;
67
END checkKW;
Line 63... Line 68...
63
 
68
 
-
 
69
 
-
 
70
PROCEDURE isKey* (s: ARRAY OF WCHAR; lang, kwSet: INTEGER): BOOLEAN;
-
 
71
    RETURN checkKW(s, KW[lang][kwSet - 1])
-
 
72
END isKey;
-
 
73
 
64
 
74
 
65
PROCEDURE isKey* (s: ARRAY OF WCHAR; lang, kwSet: INTEGER): BOOLEAN;
75
PROCEDURE isDelim* (c: WCHAR): BOOLEAN;
66
VAR
76
VAR
-
 
77
	res: BOOLEAN;
-
 
78
BEGIN
67
    res: BOOLEAN;
79
	IF c <= 0FFX THEN
68
BEGIN
80
		res := Delim[currentLang][ORD(c)]
69
	DEC(kwSet);
-
 
70
    res := FALSE;
-
 
71
    CASE lang OF
-
 
72
    |langC:      res := checkKW(s, cKW[kwSet])
-
 
73
    |langOberon: res := checkKW(s, oberonKW[kwSet])
-
 
74
    |langPascal: res := checkKW(s, pascalKW[kwSet])
-
 
75
    |langLua:    res := checkKW(s, luaKW[kwSet])
-
 
76
    |langIni:    res := checkKW(s, iniKW[kwSet])
-
 
77
    |langFasm:   res := checkKW(s, fasmKW[kwSet])
81
	ELSE
78
    |langJSON:   res := checkKW(s, jsonKW[kwSet])
82
		res := FALSE
79
    END
83
	END
Line 80... Line 84...
80
    RETURN res
84
	RETURN res
81
END isKey;
85
END isDelim;
82
 
86
 
Line 358... Line 362...
358
    UNTIL s[i] = 0X;
362
    UNTIL s[i] = 0X;
359
    KW.cnt := k
363
    KW.cnt := k
360
END EnterKW;
364
END EnterKW;
Line 361... Line 365...
361
 
365
 
362
 
366
 
363
PROCEDURE loadKW (VAR KW: ARRAY OF tKeyWords; getStr: procGetStr; lang: ARRAY OF CHAR);
367
PROCEDURE loadKW (VAR KW: ARRAY OF tKeyWords; VAR delim: tDelimiters; getStr: procGetStr; lang: ARRAY OF CHAR);
364
VAR
368
VAR
365
    s: ARRAY 16*1024 OF CHAR;
369
    s: ARRAY 16*1024 OF CHAR;
366
    key: ARRAY 4 OF CHAR;
370
    key: ARRAY 4 OF CHAR;
-
 
371
    i: INTEGER;
-
 
372
BEGIN
-
 
373
	FOR i := 0 TO LEN(delim) - 1 DO
-
 
374
		delim[i] := FALSE
-
 
375
	END;
-
 
376
	getStr(lang, "delim", s);
-
 
377
	i := 0;
-
 
378
	WHILE s[i] # 0X DO
-
 
379
		delim[ORD(s[i])] := TRUE;
367
    i: INTEGER;
380
		INC(i)
368
BEGIN
381
	END;
369
    key := "KW1";
382
    key := "KW1";
370
    FOR i := 0 TO 2 DO
383
    FOR i := 0 TO 2 DO
371
        KW[i].cnt := 0;
384
        KW[i].cnt := 0;
372
        key[2] := CHR(ORD("1") + i);
385
        key[2] := CHR(ORD("1") + i);
373
        getStr(lang, key, s);
386
        getStr(lang, key, s);
374
        EnterKW(s, KW[i], (lang = "lang_C") & (i = 1))
387
        EnterKW(s, KW[i], (lang = "lang_C") & (i = 1))
Line -... Line 388...
-
 
388
    END
-
 
389
END loadKW;
-
 
390
 
-
 
391
 
-
 
392
PROCEDURE setCurLang* (lang: INTEGER);
-
 
393
BEGIN
375
    END
394
	currentLang := lang
376
END loadKW;
395
END setCurLang;
-
 
396
 
-
 
397
 
377
 
398
PROCEDURE init* (getStr: procGetStr);
378
 
399
BEGIN
379
PROCEDURE init* (getStr: procGetStr);
400
	currentLang := langText;
380
BEGIN
401
	loadKW(KW[langText],   Delim[langText],   getStr, "lang_Text");
381
    loadKW(oberonKW, getStr, "lang_Oberon");
402
    loadKW(KW[langOberon], Delim[langOberon], getStr, "lang_Oberon");
382
    loadKW(cKW,      getStr, "lang_C");
403
    loadKW(KW[langC],      Delim[langC],      getStr, "lang_C");
383
    loadKW(pascalKW, getStr, "lang_Pascal");
404
    loadKW(KW[langPascal], Delim[langPascal], getStr, "lang_Pascal");
384
    loadKW(luaKW,    getStr, "lang_Lua");
405
    loadKW(KW[langLua],    Delim[langLua],    getStr, "lang_Lua");
Line 385... Line 406...
385
    loadKW(iniKW,    getStr, "lang_Ini");
406
    loadKW(KW[langIni],    Delim[langIni],    getStr, "lang_Ini");
386
    loadKW(fasmKW,   getStr, "lang_Fasm");
407
    loadKW(KW[langFasm],   Delim[langFasm],   getStr, "lang_Fasm");