Translating Modula2 into D: variant records, pointer
BLS
Killing_Zoe at web.de
Tue Jan 9 05:15:20 PST 2007
Translating Modula2 into D: Subject: variant records,pointer
Hi I have some Modula2 code which I would like to translate in D.
I often have to use something like that :
MODULE snippet
FROM SYSTEM IMPORT TSIZE;
FROM Heap IMPORT ALLOCATE;
TYPE NodePtr = POINTER TO Node;
HeadPtr = POINTER TO Header;
(* variant record *)
Node = RECORD suc, alt: NodePtr;
CASE terminal: BOOLEAN OF
TRUE: tsym: CHAR |
FALSE: nSym: HeadPtr
END
END;
Header = RECORD sym: CHAR;
entry: NodePtr;
suc: HeadPtr
END;
VAR list, sentinel: HeadPtr
(* JUST A PROCEDURE FRAGMENT *)
PROCEDURE Find(s: CHAR; VAR h: HeadPtr);
VAR h1: HeadPtr;
BEGIN
h1 := list;
sentinel^.sym := s;
ALLOCATE(sentinel, TSIZE(Header));
h := h1;
(* etc. *°
END
So: How do I have to implement this snippet in D ?
Many thanks !!!! in advance; Bjoern
More information about the Digitalmars-d-learn
mailing list