File: SIGNATURESSIG.sml

package info (click to toggle)
polyml 5.7.1-5
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid
  • size: 40,616 kB
  • sloc: cpp: 44,142; ansic: 26,963; sh: 22,002; asm: 13,486; makefile: 602; exp: 525; python: 253; awk: 91
file content (74 lines) | stat: -rw-r--r-- 2,964 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
(*
    Copyright David C. J. Matthews 2009

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.
    
    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.
    
    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*)

signature SIGNATURESSIG =
sig
    type sigs
    type structSigBind
    type parsetree
    type typeParsetree
    type typeVarForm
    type pretty
    type ptProperties
    type env
    type signatures
    type lexan
    type typeId
    type specs
    type location =
        { file: string, startLine: FixedInt.int, startPosition: FixedInt.int,
          endLine: FixedInt.int, endPosition: FixedInt.int }
    type exportTree = location * ptProperties list
    type navigation =
        {parent: (unit -> exportTree) option,
         next: (unit -> exportTree) option,
         previous: (unit -> exportTree) option}

    val mkStructureSig:     structSigBind list * location -> specs
    val mkStructureSigBinding: (string * location) * (sigs * bool * location) * location -> structSigBind
    val mkValSig:           (string * location) * typeParsetree * location -> specs
    val mkExSig:            (string * location) * typeParsetree option * location -> specs
    val mkCoreType:         parsetree * location -> specs
    val mkSharing:          bool * (string * location) list * location -> specs
    val mkWhereType:        sigs * typeVarForm list * string * typeParsetree * location -> sigs
    val mkInclude:          sigs list * location -> specs
    val mkSigIdent:         string * location -> sigs;
    val mkSig:              specs list * location -> sigs;

    val displaySigs: sigs * FixedInt.int -> pretty
    val sigExportTree: navigation * sigs -> exportTree 
    val sigVal: sigs * int * (int->typeId) * env * lexan * location -> signatures
    val undefinedSignature: signatures
    val isUndefinedSignature: signatures -> bool

    structure Sharing:
    sig
        type sigs           = sigs
        type structSigBind  = structSigBind
        type signatures     = signatures
        type parsetree      = parsetree
        type typeParsetree  = typeParsetree
        type typeVarForm    = typeVarForm
        type pretty         = pretty
        type ptProperties   = ptProperties
        type env            = env
        type lexan          = lexan
        type typeId         = typeId
        type specs          = specs
    end
end;