home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1991-03-18 | 5.0 KB | 175 lines |
-
- DEFINITION MODULE SACSYM;
-
- (* SAC Symbol System Definition Module. *)
-
-
- (* Import lists and declarations. *)
-
- FROM MASELEM IMPORT GAMMAINT;
-
- FROM MASSTOR IMPORT LIST;
-
- VAR COUNT, TRMAX: GAMMAINT;
-
- SYMTB: LIST;
-
-
- PROCEDURE ACOMP(A,B: LIST): LIST;
- (*Alphabetic comparison. A and B are symbols. t=+1,0,-1 according
- to whether A preceds, is equal, or follows B alphabetically.*)
-
-
- PROCEDURE ACOMP1(A,B: LIST): LIST;
- (*Alphabetic comparison, 1. subalgorithm. A and B are packed strings.
- s=-1,0,1 according to whether a preceds, is equal, or succeeds B
- alphabetically.*)
-
-
- PROCEDURE ASSOC(AL,L: LIST): LIST;
- (*Associate. L=(a1 b1, a2 b2, ...,a sub n b sub n), n ge 0,
- a is an object. If there is an i such that a=a sub i then
- P=(b sub i, ...,a sub n b sub n), otherwise P=().*)
-
-
- PROCEDURE ASSOCQ(AL,L: LIST): LIST;
- (*Associate equal. L=(a1 b1, a2 b2, ...,a sub n b sub n), n ge 0,
- a is an object. If there is an i such that a is equal to a sub i then
- P=(b sub i, ...,a sub n b sub n), otherwise P=().*)
-
-
- PROCEDURE ATTRIB(L: LIST): LIST;
- (*Attribute. L is a symbol. Returns the attributes of L.*)
-
-
- PROCEDURE EXPLOD(S: LIST): LIST;
- (*Explode symbol. S is a symbol, L its character list.*)
-
-
- PROCEDURE ENTER(L: LIST): LIST;
- (*Enter into symbol table. L is a character list, S the pointer
- to the corresponding symbol. If the symbol is not yet in the
- symbol table SYMTB, then a new node is created.*)
-
-
- PROCEDURE GENSYM(): LIST;
- (*Generate symbol. S is a newly generated symbol. NAM is advanced.*)
-
-
- PROCEDURE GET(S,AL: LIST): LIST;
- (*Get property. The property list of the symbol S is searched
- under indicator a. A is the property under a, if any, otherwise
- A is set to beta.*)
-
-
- PROCEDURE NAME(L: LIST): LIST;
- (*Name. L is a symbol. Returns the name of L.*)
-
-
- PROCEDURE PACK(L: LIST): LIST;
- (*Pack character list. L is a non-empty character list. B is the
- packed list.*)
-
-
- PROCEDURE PUT(S,AL,A: LIST);
- (*Put. The property A is stored on the property list of
- the symbol S under the indicator a.*)
-
-
- PROCEDURE REMPRP(S,AL: LIST);
- (*Remove property. Under indicator a on the property list of
- symbol S the property is removed.*)
-
-
- PROCEDURE SMEMB(S,L: LIST): LIST;
- (*Symbol membership. S is a symbol, L a list containing possibly
- also symbols. b=1 if S or a copy of S occurs in L, b=0 otherwise.*)
-
-
- PROCEDURE SREAD(): LIST;
- (*Symbol read. The next symbol is read from input. S is the symbol in
- the symbol table SYMTB.*)
-
-
- PROCEDURE SREAD1(): LIST;
- (*Symbol read, 1. The first non-alphanumeric character of the
- input stream terminates the symbol. L is the character list of
- the symbol, which is not entered in the symbol table.*)
-
-
- PROCEDURE STCNT(T: LIST; VAR S,P: LIST);
- (*Symbol table tree count. T is a symbol tree, S is the number
- of symbols in T, P the number of properties of all symbols of the tree.
- Since every symbol has a name property, P ge S.*)
-
-
- PROCEDURE STINS(B: LIST): LIST;
- (*Symbol tree insertion. B is a packed list of characters. S is a
- pointer to the corresponding symbol in the symbol table. If
- it is not yet in, a new node is created.*)
-
-
- PROCEDURE STLST(T: LIST): LIST;
- (*Symbol tree list. T is a symbol tree, L is the list of its symbols
- in alphabetic order.*)
-
-
- PROCEDURE STLSTI(T: LIST): LIST;
- (*Symbol tree list, in-order. T is a binary tree of symbols, L is a
- list of its symbols, with the root symbol appearing first.*)
-
-
- PROCEDURE STSRCH(T,AP: LIST): LIST;
- (*Symbol tree search. T is a binary tree of symbols, AP is a packed
- list of characters. If the symbol with the name AP occurs already
- in the symbol table T then S=() and otherwise S points to the entry.*)
-
-
- PROCEDURE STWRT(T: LIST);
- (*Symbol tree write. T is a binary tree of symbols. The symbols
- followed by their properties are printed in alphabetic order.*)
-
-
- PROCEDURE SYMBOL(AP: LIST): BOOLEAN;
- (*Symbol. AP is an object. Returns true if it is a symbol and
- false else.*)
-
-
- PROCEDURE SymSummary();
- (*Summary of symbol system. The number of symbols in SYMTB and
- the number of their properties is written.*)
-
-
- PROCEDURE SYWRIT(S: LIST);
- (*Symbol write. The symbol S is written in the output stream.*)
-
-
- PROCEDURE SUBLIS(L,A: LIST): LIST;
- (*Substitution with list. L=(x1 e1, ...,x sub n e sub n),
- a and e sub i are objects. The x sub i are beta-digits
- or pointers to uniquely stored lists like symbols. B is A
- with the x sub i substituted by the e sub i.*)
-
-
- PROCEDURE UREAD(): LIST;
- (*Universal read. The next atom, symbol or list over atoms
- and symbols is read and stored under L. Blanks may occur anywhere,
- elements of a list may or may not be separated by a comma.*)
-
-
- PROCEDURE UWRITE(L: LIST);
- (*Universal write. L is an atom, symbol or a list over
- atoms and symbols. L is written in the output stream,
- followed by BLINES(0). *)
-
-
- PROCEDURE UWRIT1(L: LIST);
- (*Universal write, 1. subalgorithm. L is an atom, a symbol
- or a list over atoms or symbols. L is written in the output
- stream followed by a blank character, but not by BLINES. *)
-
-
- END SACSYM.
-
-
-