4 A. V. Shiryaev, 2012.09
10 DevCommanders, TextModels,
14 textR: TextModels.Reader;
19 StdLog.text.Append(StdLog.buf);
31 StdLog.text.Delete(0, StdLog.text.Length())
34 PROCEDURE Call1 (IN s: ARRAY OF CHAR; i: INTEGER): BOOLEAN;
37 par: DevCommanders.Par;
38 m: TextModels.Model; w: TextModels.Writer;
40 (* ASSERT 0X in s[ i:LEN(s) ) *)
42 WHILE s[j] # 0X DO INC(j) END;
44 m := TextModels.dir.New();
45 w := m.NewWriter(NIL);
50 NEW(par); par.text := m; par.beg := 0; par.end := m.Length() - 1;
51 DevCommanders.par := par
53 Dialog.Call(s, " ", res);
54 DevCommanders.par := NIL;
59 PROCEDURE Call0 (VAR s: ARRAY OF CHAR): BOOLEAN;
64 (* ASSERT s is 0X terminated and not empty *)
66 WHILE (s[i] # 0X) & (s[i] # ' ') & (s[i] # '(') DO
73 res := Call1(s, i + 1)
77 WHILE (s[i] # 0X) & ~(~inStr & (s[i] = ')')) DO
78 IF s[i] = "'" THEN inStr := ~inStr END;
87 res := Call1(s, i + 1)
96 PROCEDURE Call (VAR s: ARRAY OF CHAR): BOOLEAN;
101 WHILE (i < LEN(s)) & (s[i] # 0AX) & (s[i] # 0DX) & (s[i] # 0X) DO
104 IF (i < LEN(s)) & (s[i] # 0X) THEN
105 IF (i > 0) & (s[0] # '#') THEN
108 ELSE (* skip empty strings and comments *)
111 ELSE (* end of input *)
118 VAR s: ARRAY 1024 OF CHAR;
127 textR := StdLog.text.NewReader(NIL)