home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / program / misc / mas / mashelp / sacsym.def < prev    next >
Encoding:
Modula Definition  |  1991-03-18  |  5.0 KB  |  175 lines

  1.  
  2. DEFINITION MODULE SACSYM;
  3.  
  4. (* SAC Symbol System Definition Module. *)
  5.  
  6.  
  7. (* Import lists and declarations. *)
  8.  
  9. FROM MASELEM IMPORT GAMMAINT;
  10.  
  11. FROM MASSTOR IMPORT LIST;
  12.  
  13. VAR COUNT, TRMAX: GAMMAINT;
  14.  
  15.     SYMTB: LIST;
  16.  
  17.  
  18. PROCEDURE ACOMP(A,B: LIST): LIST;
  19. (*Alphabetic comparison. A and B are symbols. t=+1,0,-1 according
  20. to whether A preceds, is equal, or follows B alphabetically.*)
  21.  
  22.  
  23. PROCEDURE ACOMP1(A,B: LIST): LIST;
  24. (*Alphabetic comparison, 1. subalgorithm. A and B are packed strings.
  25. s=-1,0,1 according to whether a preceds, is equal, or succeeds B
  26. alphabetically.*)
  27.  
  28.  
  29. PROCEDURE ASSOC(AL,L: LIST): LIST;
  30. (*Associate. L=(a1 b1, a2 b2, ...,a sub n b sub n), n ge 0,
  31. a is an object. If there is an i such that a=a sub i then
  32. P=(b sub i, ...,a sub n b sub n), otherwise P=().*)
  33.  
  34.  
  35. PROCEDURE ASSOCQ(AL,L: LIST): LIST;
  36. (*Associate equal. L=(a1 b1, a2 b2, ...,a sub n b sub n), n ge 0,
  37. a is an object. If there is an i such that a is equal to a sub i then
  38. P=(b sub i, ...,a sub n b sub n), otherwise P=().*)
  39.  
  40.  
  41. PROCEDURE ATTRIB(L: LIST): LIST;
  42. (*Attribute. L is a symbol. Returns the attributes of L.*)
  43.  
  44.  
  45. PROCEDURE EXPLOD(S: LIST): LIST;
  46. (*Explode symbol. S is a symbol, L its character list.*)
  47.  
  48.  
  49. PROCEDURE ENTER(L: LIST): LIST;
  50. (*Enter into symbol table. L is a character list, S the pointer
  51. to the corresponding symbol. If the symbol is not yet in the
  52. symbol table SYMTB, then a new node is created.*)
  53.  
  54.  
  55. PROCEDURE GENSYM(): LIST;
  56. (*Generate symbol. S is a newly generated symbol. NAM is advanced.*)
  57.  
  58.  
  59. PROCEDURE GET(S,AL: LIST): LIST;
  60. (*Get property. The property list of the symbol S is searched
  61. under indicator a. A is the property under a, if any, otherwise
  62. A is set to beta.*)
  63.  
  64.  
  65. PROCEDURE NAME(L: LIST): LIST;
  66. (*Name. L is a symbol. Returns the name of L.*)
  67.  
  68.  
  69. PROCEDURE PACK(L: LIST): LIST;
  70. (*Pack character list. L is a non-empty character list. B is the
  71. packed list.*)
  72.  
  73.  
  74. PROCEDURE PUT(S,AL,A: LIST);
  75. (*Put. The property A is stored on the property list of
  76. the symbol S under the indicator a.*)
  77.  
  78.  
  79. PROCEDURE REMPRP(S,AL: LIST);
  80. (*Remove property. Under indicator a on the property list of
  81. symbol S the property is removed.*)
  82.  
  83.  
  84. PROCEDURE SMEMB(S,L: LIST): LIST;
  85. (*Symbol membership. S is a symbol, L a list containing possibly
  86. also symbols. b=1 if S or a copy of S occurs in L, b=0 otherwise.*)
  87.  
  88.  
  89. PROCEDURE SREAD(): LIST;
  90. (*Symbol read. The next symbol is read from input. S is the symbol in
  91. the symbol table SYMTB.*)
  92.  
  93.  
  94. PROCEDURE SREAD1(): LIST;
  95. (*Symbol read, 1. The first non-alphanumeric character of the
  96. input stream terminates the symbol.  L is the character list of 
  97. the symbol, which is not entered in the symbol table.*)
  98.  
  99.  
  100. PROCEDURE STCNT(T: LIST;    VAR S,P: LIST);
  101. (*Symbol table tree count. T is a symbol tree, S is the number
  102. of symbols in T, P the number of properties of all symbols of the tree.
  103. Since every symbol has a name property, P ge S.*)
  104.  
  105.  
  106. PROCEDURE STINS(B: LIST): LIST;
  107. (*Symbol tree insertion. B is a packed list of characters. S is a
  108. pointer to the corresponding symbol in the symbol table. If
  109. it is not yet in, a new node is created.*)
  110.  
  111.  
  112. PROCEDURE STLST(T: LIST): LIST;
  113. (*Symbol tree list. T is a symbol tree, L is the list of its symbols
  114. in alphabetic order.*)
  115.  
  116.  
  117. PROCEDURE STLSTI(T: LIST): LIST;
  118. (*Symbol tree list, in-order. T is a binary tree of symbols, L is a
  119. list of its symbols, with the root symbol appearing first.*)
  120.  
  121.  
  122. PROCEDURE STSRCH(T,AP: LIST): LIST;
  123. (*Symbol tree search. T is a binary tree of symbols, AP is a packed
  124. list of characters. If the symbol with the name AP occurs already
  125. in the symbol table T then S=() and otherwise S points to the entry.*)
  126.  
  127.  
  128. PROCEDURE STWRT(T: LIST);
  129. (*Symbol tree write. T is a binary tree of symbols. The symbols
  130. followed by their properties are printed in alphabetic order.*)
  131.  
  132.  
  133. PROCEDURE SYMBOL(AP: LIST): BOOLEAN;
  134. (*Symbol. AP is an object. Returns true if it is a symbol and 
  135. false else.*)
  136.  
  137.  
  138. PROCEDURE SymSummary();
  139. (*Summary of symbol system. The number of symbols in SYMTB and
  140. the number of their properties is written.*)
  141.  
  142.  
  143. PROCEDURE SYWRIT(S: LIST);
  144. (*Symbol write. The symbol S is written in the output stream.*)
  145.  
  146.  
  147. PROCEDURE SUBLIS(L,A: LIST): LIST;
  148. (*Substitution with list. L=(x1 e1, ...,x sub n e sub n),
  149. a and e sub i are objects. The x sub i are beta-digits
  150. or pointers to uniquely stored lists like symbols. B is A
  151. with the x sub i substituted by the e sub i.*)
  152.  
  153.  
  154. PROCEDURE UREAD(): LIST;
  155. (*Universal read. The next atom, symbol or list over atoms
  156. and symbols is read and stored under L. Blanks may occur anywhere,
  157. elements of a list may or may not be separated by a comma.*)
  158.  
  159.  
  160. PROCEDURE UWRITE(L: LIST);
  161. (*Universal write. L is an atom, symbol or a list over
  162. atoms and symbols. L is written in the output stream,
  163. followed by BLINES(0). *)
  164.  
  165.  
  166. PROCEDURE UWRIT1(L: LIST);
  167. (*Universal write, 1. subalgorithm. L is an atom, a symbol
  168. or a list over atoms or symbols. L is written in the output
  169. stream followed by a blank character, but not by BLINES. *)
  170.  
  171.  
  172. END SACSYM.
  173.  
  174.  
  175.