Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 9412 → Rev 9413

/programs/develop/cedit/SRC/Languages.ob07
28,6 → 28,7
langFasm* = 4; langLua* = 5; langIni* = 6; langJSON* = 7;
 
csLang = {langC, langOberon, langLua, langIni, langJSON};
escLang* = {langC, langLua, langJSON};
 
TYPE
 
87,17 → 88,98
END isDelim;
 
 
PROCEDURE SkipString* (line: tLine; VAR pos: INTEGER; n: INTEGER);
PROCEDURE SkipString* (line: tLine; VAR pos: INTEGER; n: INTEGER; lang: INTEGER);
VAR
quot: WCHAR;
quot, cur, prev: WCHAR;
BEGIN
quot := Lines.getChar(line, pos);
REPEAT
cur := quot;
prev := 0X;
INC(pos);
WHILE pos <= n DO
IF lang IN escLang THEN
prev := cur
END;
cur := Lines.getChar(line, pos);
IF (cur = "\") & (prev = "\") THEN
cur := 0X
ELSIF (cur = quot) & (prev # "\") THEN
n := 0; (* exit *)
DEC(pos)
END;
INC(pos)
UNTIL (pos > n) OR (Lines.getChar(line, pos) = quot)
END
END SkipString;
 
 
PROCEDURE SkipEsc* (line: tLine; VAR pos: INTEGER; n: INTEGER; lang: INTEGER);
VAR
c, c1: WCHAR;
k: INTEGER;
BEGIN
IF pos < n THEN
c := Lines.getChar(line, pos + 1);
CASE lang OF
|langC:
IF Utils.inString(c, "abfnrtv\'?" + '"') THEN
INC(pos)
ELSIF Utils.isOct(c) THEN
k := 0;
REPEAT
INC(pos);
IF Utils.isOct(Lines.getChar(line, pos)) THEN
INC(k)
ELSE
k := 0
END
UNTIL (k = 0) OR (k = 4);
DEC(pos)
ELSIF (c = "x") OR (c = "u") OR (c = "U") THEN
c1 := c;
k := 0;
INC(pos);
REPEAT
INC(pos);
c := Lines.getChar(line, pos);
IF Utils.cap(c) THEN END;
IF Utils.isHex(c) THEN
INC(k)
ELSE
k := 0
END;
IF (c1 = "u") & (k = 5) OR (c1 = "U") & (k = 9) THEN
k := 0
END
UNTIL k = 0;
DEC(pos)
END
|langLua:
IF Utils.inString(c, "abfnrtv\'[]" + '"') THEN
INC(pos)
END
|langJSON:
IF Utils.inString(c, 'bfnrt\/"') THEN
INC(pos)
ELSIF c = "u" THEN
k := 0;
INC(pos);
REPEAT
INC(pos);
c := Lines.getChar(line, pos);
IF Utils.cap(c) THEN END;
IF Utils.isHex(c) THEN
INC(k)
ELSE
k := 0
END
UNTIL (k = 0) OR (k = 5);
DEC(pos)
END
END
END
END SkipEsc;
 
 
PROCEDURE C (line: tLine; VAR depth, cond, pos: INTEGER; n: INTEGER);
VAR
c: WCHAR;
115,7 → 197,7
depth := 1;
cond := 0
ELSIF (c = "'") OR (c = '"') THEN
SkipString(line, pos, n);
SkipString(line, pos, n, langC);
cond := 0
ELSE
cond := 0
193,7 → 275,7
depth := (k + 1)*2
END
ELSIF (c = "'") OR (c = '"') THEN
SkipString(line, pos, n);
SkipString(line, pos, n, langLua);
cond := 0
ELSE
cond := 0
232,7 → 314,7
depth := 2;
cond := 0
ELSIF c = "'" THEN
SkipString(line, pos, n);
SkipString(line, pos, n, langPascal);
cond := 0
ELSIF c = "{" THEN
IF Lines.getChar(line, pos + 1) = "$" THEN
274,7 → 356,7
cond := 3
END
ELSIF (depth = 0) & ((c = "'") OR (c = '"')) THEN
SkipString(line, pos, n);
SkipString(line, pos, n, langOberon);
cond := 0
ELSIF c = "(" THEN
cond := 1
308,7 → 390,7
IF c = ";" THEN
pos := n
ELSIF c = '"' THEN
SkipString(line, pos, n)
SkipString(line, pos, n, langIni)
ELSIF c = "[" THEN
depth := 1
END