re re revised oberon compiler for RISC works -- noch

Former-commit-id: c900218965
This commit is contained in:
Norayr Chilingarian 2014-09-14 06:09:09 +04:00
parent 8ae13afedd
commit 7cf90615c8
11 changed files with 1772 additions and 573 deletions

103
src/voc07R/Oberon.Mod Normal file
View file

@ -0,0 +1,103 @@
MODULE Oberon;
IMPORT Args, Strings, Texts := CompatTexts, (*Files := CompatFiles,*) Out := Console;
VAR Log*: Texts.Text;
Par*: RECORD
text*: Texts.Text;
pos* : LONGINT;
END;
arguments : ARRAY 2048 OF CHAR;
PROCEDURE GetSelection* (VAR text: Texts.Text; VAR beg, end, time: LONGINT);
(*VAR M: SelectionMsg;*)
BEGIN
(*M.time := -1; Viewers.Broadcast(M); time := M.time;
IF time >= 0 THEN text := M.text; beg := M.beg; end := M.end END*)
END GetSelection;
PROCEDURE Collect*( count : LONGINT);
BEGIN
END Collect;
PROCEDURE ArgsToString(VAR opts : ARRAY OF CHAR);
VAR i : INTEGER;
opt : ARRAY 256 OF CHAR;
BEGIN
i := 1;
opt := ""; COPY ("", opts);
WHILE i < Args.argc DO
Args.Get(i, opt);
Strings.Append(opt, opts);(* Strings.Append (" ", opts);*)
INC(i)
END;
END ArgsToString;
PROCEDURE StringToText(VAR arguments : ARRAY OF CHAR; VAR T : Texts.Text);
VAR
W : Texts.Writer;
BEGIN
Texts.OpenWriter(W);
Texts.WriteString(W, arguments);
Texts.Append (T, W.buf);
END StringToText;
(*
PROCEDURE WriteTextToFile(VAR T : Texts.Text; filename : ARRAY OF CHAR);
VAR f : Files.File; r : Files.Rider;
BEGIN
f := Files.New(filename);
Files.Set(r, f, 0);
Texts.Store(r, T);
Files.Register(f);
END WriteTextToFile;
*)
PROCEDURE TextToString(VAR T : Texts.Text; VAR string : ARRAY OF CHAR);
VAR R : Texts.Reader;
ch : CHAR;
i : LONGINT;
BEGIN
COPY("", string);
Texts.OpenReader(R, T, 0);
i := 0;
WHILE Texts.Pos(R) < T.len DO
Texts.Read(R, ch);
string[i] := ch;
INC(i);
END;
(*string[i] := 0X;*)
END TextToString;
PROCEDURE DumpLog*;
VAR s : POINTER TO ARRAY OF CHAR;
BEGIN
NEW(s, Log.len + 1);
COPY("", s^);
TextToString(Log, s^);
Out.String(s^); Out.Ln;
NEW(Log);
Texts.Open(Log, "");
END DumpLog;
BEGIN
NEW(Log);
Texts.Open(Log, "");
NEW(Par.text);
Texts.Open(Par.text, "");
Par.pos := 0;
COPY("", arguments);
ArgsToString(arguments);
StringToText(arguments, Par.text);
(*WriteTextToFile(Par.text, "params.txt");*)
(*WriteTextToFile(Log, "log.txt");*)
(*DumpLog;*)
END Oberon.