123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- MODULE Dev0Interp;
- (*
- A. V. Shiryaev, 2012.10
- *)
- IMPORT Console, HostConsole (* required *), Strings, Dialog, StdInterpreter (* required (Dialog.SetCallHook) *);
- PROCEDURE WriteInt (x: INTEGER);
- VAR s: ARRAY 16 OF CHAR;
- BEGIN
- Strings.IntToString(x, s);
- Console.WriteStr(s)
- END WriteInt;
- PROCEDURE Call (VAR s: ARRAY OF CHAR): BOOLEAN;
- VAR i: INTEGER;
- res: BOOLEAN;
- BEGIN
- i := 0;
- WHILE (i < LEN(s)) & (s[i] # 0AX) & (s[i] # 0DX) & (s[i] # 0X) DO
- INC(i)
- END;
- IF (i < LEN(s)) & (s[i] # 0X) THEN
- IF (i > 0) & (s[0] # '#') THEN
- s[i] := 0X;
- Dialog.Call(s, "", i);
- IF i = 0 THEN
- res := TRUE
- ELSE
- WriteInt(i); Console.WriteLn;
- res := FALSE (* stop on Dialog.Call error *)
- END
- ELSE (* skip empty strings and comments *)
- res := TRUE
- END
- ELSE (* end of input *)
- res := FALSE
- END;
- RETURN res
- END Call;
- PROCEDURE Init;
- VAR s: ARRAY 1024 OF CHAR;
- BEGIN
- Console.ReadLn(s);
- WHILE Call(s) DO
- Console.ReadLn(s)
- END
- END Init;
- BEGIN
- Init
- END Dev0Interp.
|