2
0

Interp.txt 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. MODULE Dev0Interp;
  2. (*
  3. A. V. Shiryaev, 2012.10
  4. *)
  5. IMPORT Console, HostConsole (* required *), Strings, Dialog, StdInterpreter (* required (Dialog.SetCallHook) *);
  6. PROCEDURE WriteInt (x: INTEGER);
  7. VAR s: ARRAY 16 OF CHAR;
  8. BEGIN
  9. Strings.IntToString(x, s);
  10. Console.WriteStr(s)
  11. END WriteInt;
  12. PROCEDURE Call (VAR s: ARRAY OF CHAR): BOOLEAN;
  13. VAR i: INTEGER;
  14. res: BOOLEAN;
  15. BEGIN
  16. i := 0;
  17. WHILE (i < LEN(s)) & (s[i] # 0AX) & (s[i] # 0DX) & (s[i] # 0X) DO
  18. INC(i)
  19. END;
  20. IF (i < LEN(s)) & (s[i] # 0X) THEN
  21. IF (i > 0) & (s[0] # '#') THEN
  22. s[i] := 0X;
  23. Dialog.Call(s, "", i);
  24. IF i = 0 THEN
  25. res := TRUE
  26. ELSE
  27. WriteInt(i); Console.WriteLn;
  28. res := FALSE (* stop on Dialog.Call error *)
  29. END
  30. ELSE (* skip empty strings and comments *)
  31. res := TRUE
  32. END
  33. ELSE (* end of input *)
  34. res := FALSE
  35. END;
  36. RETURN res
  37. END Call;
  38. PROCEDURE Init;
  39. VAR s: ARRAY 1024 OF CHAR;
  40. BEGIN
  41. (* Dialog.SetLanguage("", FALSE); *)
  42. Console.ReadLn(s);
  43. WHILE Call(s) DO
  44. Console.ReadLn(s)
  45. END
  46. END Init;
  47. BEGIN
  48. Init
  49. END Dev0Interp.