mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-05 20:42:26 +00:00
nothing really works
This commit is contained in:
parent
3c59d73914
commit
1a573a5c83
3 changed files with 104 additions and 0 deletions
83
CharacterStack.Mod
Normal file
83
CharacterStack.Mod
Normal 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
6
build.sh
Normal 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
15
test.Mod
Normal 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue