File: language-api.ss

package info (click to toggle)
nanopass-framework-scheme 1.9.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,328 kB
  • sloc: makefile: 17
file content (77 lines) | stat: -rw-r--r-- 1,887 bytes parent folder | download | duplicates (2)
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
75
76
77
(define-language Lannotated
  (entry Defn)
  (terminals
    (record-constructor-descriptor (rcd))
    (record-type-descriptor (rtd))
    (exact-integer (tag level tag-mask))
    (datum (handler record-name pred all-pred all-term-pred
             accessor maker))
    (box (b))
    (syntax (stx))
    (identifier (id))
    (dots (dots))
    (null (null)))
  (Defn (def)
    (define-language id ref (maybe id0) rtd rcd tag-mask
      (term* ...) nt* ...)) 
  (Terminal (term)
    (id (id* ...) b (maybe handler) pred))
  (Nonterminal (nt)
    (id (id* ...) b rtd rcd tag pred all-pred all-term-pred
        prod* ...))
  (Production (prod)
    (production pattern (maybe pretty-prod) rtd tag pred maker field* ...)
    (terminal ref (maybe pretty-prod))
    (nonterminal ref (maybe pretty-prod)))
  (Pattern (pattern)
    id
    ref
    null
    (maybe ref)
    (pattern dots)
    (pattern0 dots pattern1 ... . pattern2)
    (pattern0 . pattern1))
  (PrettyProduction (pretty-prod)
    (procedure handler)
    (pretty pattern))
  (Field (field)
    (ref level accessor)
    (optional ref level accessor))
  (Reference (ref)
    (reference id0 id1 b)))

(define-language Llanguage
  (entry Defn)
  (terminals
    (box (b))
    (syntax (stx))
    (identifier (id))
    (datum (handler))
    (dots (dots))
    (null (null)))
  (Defn (def)
    (define-language id cl* ...))
  (Clause (cl)
    (entry ref)
    (nongenerative-id id)
    (terminals term* ...)
    (id (id* ...) b prod* ...))
  (Terminal (term)
    simple-term
    (=> simple-term handler))
  (SimpleTerminal (simple-term)
    (id (id* ...) b))
  (Production (prod)
    pattern
    (=> pattern0 pattern1)
    (-> pattern handler))
  (Pattern (pattern)
    id
    ref
    null
    (maybe ref)
    (pattern dots)
    (pattern0 dots pattern1 ... . pattern2)
    (pattern0 . pattern1))
  (Reference (ref)
    (reference id0 id1 b)))