nothing really works

This commit is contained in:
Ruben Shekspir 2019-04-15 10:06:09 +04:00
parent 3c59d73914
commit 1a573a5c83
3 changed files with 104 additions and 0 deletions

83
CharacterStack.Mod Normal file
View file

@ -0,0 +1,83 @@
MODULE CharaterStack;
IMPORT List, Out, Sys;
TYPE
integer* = Sys.integer;
TChar* = POINTER TO TCharDesc;
TCharDesc = RECORD (List.NodeDesc)
char* : CHAR
END;
string = Sys.string;
CharacterStackType = POINTER TO CharacterStackTypeDesc;
CharacterStackTypeDesc = RECORD (List.TListDesc)
pop: PROCEDURE(self: CharacterStackType): CHAR;
push: PROCEDURE(self: CharacterStackType; char: CHAR);
top: PROCEDURE(self: CharacterStackType) : CHAR;
END;
PROCEDURE pop(self: CharacterStackType): CHAR;
VAR
ch: TChar;
BEGIN
NEW(ch);
ch := self.Get(self, self.Count);
self.Delete(self, self.Count);
RETURN ch.char;
END pop;
PROCEDURE push(self: CharacterStackType; char: CHAR);
VAR
int: integer;
ch: TChar;
BEGIN
NEW(ch);
ch.char := char;
int := self.Add(self, ch);
END push;
PROCEDURE Create* () : CharacterStackType;
VAR l : CharacterStackType;
BEGIN
NEW(l);
l.First := NIL;
l.Last := NIL;
l.Count := 0;
l.Add := List.Add;
l.Append := List.Append;
l.AppendList := List.AppendList;
l.Clear := List.Clear;
l.Free := List.Free;
l.Insert := List.Insert;
l.Delete := List.Delete;
l.Empty := List.Empty;
l.Get := List.Get;
l.res := TRUE;
l.pop := pop;
l.push:= push;
(* l.top := top; *)
RETURN(l);
END Create;
VAR
characterStack: CharacterStackType;
BEGIN
NEW(characterStack);
characterStack.push(characterStack, 'a');
characterStack.push(characterStack, 'b');
characterStack.push(characterStack, 'c');
Out.Char(characterStack.pop(characterStack));
Out.Ln();
Out.Char(characterStack.pop(characterStack));
Out.Ln();
Out.Char(characterStack.pop(characterStack));
Out.Ln();
Out.Char(characterStack.pop(characterStack));
Out.Ln();
END CharaterStack.

6
build.sh Normal file
View file

@ -0,0 +1,6 @@
#/bin/bash
voc -s \
./diaspora2hugo/src/lists/Sys.Mod \
./diaspora2hugo/src/lists/List.Mod \
./CharacterStack.Mod -m

15
test.Mod Normal file
View file

@ -0,0 +1,15 @@
MODULE test;
IMPORT Out;
VAR
string: POINTER TO ARRAY OF CHAR;
BEGIN
NEW(string, 42);
string[1] := "a";
Out.Char(string[1]);
Out.Ln();
Out.Int(ORD(string[1]), 10);
Out.Ln();
Out.Int(ORD(string[2]), 10);
Out.Ln();
COPY("Gago", string);
END test.