author | Tony Garnock-Jones <tonyg@kcbbs.gen.nz> |
Sat, 17 Jan 2009 22:29:22 +1300 | |
changeset 200 | 466a5b65f1bf |
child 201 | 9b22b7a23e39 |
permissions | -rw-r--r-- |
200
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
1 |
-- -*- text -*- |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
2 |
|
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
3 |
toplevel = |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
4 |
&_:v {#define-namespace} -> v -- no code in here |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
5 |
| &_:v {#declare-default-namespace} -> v -- neither |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
6 |
| {#define-value :qname expr:exp ~_} -> `(define-value ,qname ,exp) |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
7 |
| {#define-function :qname method:meth ~_} -> `(define-function ,qname ,meth) |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
8 |
| expr |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
9 |
; |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
10 |
|
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
11 |
expr = |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
12 |
{#ref :name ~_} -> `(ref ,name) |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
13 |
| {#lit :literal ~_} -> `(lit ,literal) |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
14 |
| {#object method*:methods ~_} -> `(object ,@methods) |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
15 |
| {#function method*:methods ~_} -> `(function ,@methods) |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
16 |
| {#tuple expr*:elts ~_} -> `(tuple ,@elts) |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
17 |
| {#send expr:receiver expr:message ~_} -> `(send ,receiver ,message) |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
18 |
; |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
19 |
|
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
20 |
method = |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
21 |
{#normal-method {pattern*}:patterns expr:body ~_} -> `(normal-method ,patterns ,body) |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
22 |
| {#constant-method {pattern*}:patterns expr:body ~_} -> `(constant-method ,patterns ,body) |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
23 |
; |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
24 |
|
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
25 |
pattern = |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
26 |
#discard -> 'discard |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
27 |
| {#bind :name ~_} -> `(bind ,name) |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
28 |
| {#lit :literal ~_} -> `(lit ,literal) |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
29 |
| {#tuple pattern*:elts ~_} -> `(tuple ,@elts) |
466a5b65f1bf
Use merge-ometa with passes.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
30 |
; |