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"); |