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)))
|