home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / sml_nj / 93src.lha / src / parse / astutil.sig < prev    next >
Encoding:
Text File  |  1993-01-27  |  3.4 KB  |  117 lines

  1. (* Copyright 1992 by AT&T Bell Laboratories *)
  2.  
  3. (* Various functions used by the parser to build the AST of the
  4.    term it reads. 
  5.    Functions can be splitted  in four classes:
  6.     - handling the infixes environments
  7.     - checking coherence of definitions
  8.     - building declarations
  9.     - resolving the parsing of infixes
  10.    File ends with the declaration of a lot of useful constant expressions.
  11.  *)
  12.  
  13. signature ASTUTIL =
  14.   sig
  15.  
  16.     type rawclause
  17.     type rawrvb
  18.     type 'a precStack
  19.     type parseEnv
  20.  
  21.     (* CHECKING COHERENCE OF DEFS *)
  22.     val checkUniq :
  23.       ErrorMsg.complainer * string -> Symbol.symbol list -> unit
  24.     val checkFB :
  25.       rawclause list * ErrorMsg.complainer -> rawclause list
  26.     val checkFix :
  27.       int * ErrorMsg.complainer -> int
  28.     val makecl : 
  29.       (Ast.pat * Fixity.fixity * ErrorMsg.complainer) list *
  30.       (Ast.pat * Fixity.fixity * ErrorMsg.complainer) list
  31.       -> Symbol.symbol * Ast.pat list
  32.  
  33.     (* BUILDS VARIOUS CONSTRUCTIONS *)
  34.     val makeFIXdec :
  35.       Fixity.fixity * Symbol.symbol list -> parseEnv
  36.       -> Ast.dec * (parseEnv -> parseEnv)
  37.     val makeFUNdec : 
  38.       (parseEnv -> (rawclause list * int * int)list) * 'a -> parseEnv
  39.       -> Ast.dec * (parseEnv -> parseEnv)
  40.     val makeLETstr : 
  41.       (parseEnv -> Ast.dec * (parseEnv -> parseEnv))
  42.       * (parseEnv -> Ast.strexp)
  43.       -> parseEnv -> Ast.strexp
  44.     val makeLETfct : 
  45.       (parseEnv -> Ast.dec * (parseEnv -> parseEnv))
  46.       * (parseEnv * Ast.fsigexp option -> Ast.fctexp)
  47.       -> parseEnv -> Ast.fsigexp option -> Ast.fctexp
  48.     val makeLOCALdec : 
  49.       (parseEnv -> Ast.dec * (parseEnv -> parseEnv)) 
  50.       * (parseEnv -> Ast.dec * (parseEnv -> parseEnv))
  51.       -> parseEnv -> Ast.dec * (parseEnv -> parseEnv)
  52.     val makeSEQdec :
  53.       (parseEnv -> Ast.dec * (parseEnv -> parseEnv)) * 
  54.       (parseEnv -> Ast.dec * (parseEnv -> parseEnv)) -> parseEnv 
  55.       -> Ast.dec * (parseEnv -> parseEnv)
  56.     val makeVALRECdec :
  57.       (parseEnv -> rawrvb list) * 'a -> parseEnv -> Ast.dec * parseEnv
  58.  
  59.     val toplevelexp : 'a * ('a -> Ast.exp) -> Ast.dec * parseEnv
  60.  
  61.  
  62.     (* PARSE PATTERNS *)
  63.     val lookFIX : parseEnv * Symbol.symbol -> Fixity.fixity
  64.     val make_app_pat : 
  65.       (Ast.pat * Fixity.fixity * ErrorMsg.complainer) list
  66.       -> Ast.pat
  67.     val layered :
  68.       Ast.pat * Ast.pat * ErrorMsg.complainer -> Ast.pat
  69.  
  70.     (* PARSE EXPRESSION *)
  71.     val exp_start :
  72.       Ast.exp * Fixity.fixity * ErrorMsg.complainer
  73.       -> Ast.exp precStack
  74.     val exp_parse : 
  75.       Ast.exp precStack * Ast.exp * Fixity.fixity * ErrorMsg.complainer
  76.       -> Ast.exp precStack
  77.     val exp_finish :
  78.       Ast.exp precStack * ErrorMsg.complainer -> Ast.exp
  79.  
  80.     (* SYMBOLS *)
  81.     val arrowTycon : Symbol.symbol
  82.     val bogusID : Symbol.symbol
  83.     val exnID : Symbol.symbol
  84.     val symArg : Symbol.symbol
  85.     val itsym : Symbol.symbol list
  86.  
  87.     (* DATA CONSTRUCTOR SYMBOLS *)
  88.     val trueDcon : Symbol.symbol list
  89.     val falseDcon : Symbol.symbol list
  90.     val nilDcon : Symbol.symbol list
  91.     val consDcon : Symbol.symbol list
  92.  
  93.     (* EXPRESSIONS (CONSTANTS) *)
  94.     val trueExp : Ast.exp
  95.     val falseExp : Ast.exp
  96.     val unitExp : Ast.exp
  97.     val nilExp : Ast.exp
  98.     val consExp : Ast.exp
  99.  
  100.     (* PATTERNS *)
  101.     val truePat : Ast.pat
  102.     val falsePat : Ast.pat
  103.     val unitPat : Ast.pat
  104.     val nilPat : Ast.pat
  105.     val consPat : Ast.pat -> Ast.pat
  106.  
  107.     (* LIST BUILDERS *)
  108.     val ListExp : Ast.exp list -> Ast.exp
  109.     val ListPat : Ast.pat list -> Ast.pat
  110.  
  111.     (* QUOTES *)
  112.     val QuoteExp : string -> Ast.exp
  113.     val AntiquoteExp : Ast.exp -> Ast.exp
  114.  
  115.   end
  116.  
  117.