mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 19:12:25 +00:00
re re revised oberon compiler for RISC works -- noch
Former-commit-id: c900218965
This commit is contained in:
parent
8ae13afedd
commit
7cf90615c8
11 changed files with 1772 additions and 573 deletions
103
src/voc07R/Oberon.Mod
Normal file
103
src/voc07R/Oberon.Mod
Normal 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue