smalltalk-tng

view etng-r2/etng-pass-common.g @ 321:c4a0718c2d3c

Sketch of dependencies
author Tony Garnock-Jones <tonygarnockjones@gmail.com>
date Sat Oct 08 15:36:03 2011 -0400 (7 months ago)
parents 10e62e160cb0
children
line source
1 -- -*- text -*-
3 toplevel =
4 &_:v {#define-namespace} -> v -- no code in here
5 | &_:v {#declare-default-namespace} -> v -- neither
6 | {#define-value :qname expr:exp ~_} -> `(define-value ,qname ,exp)
7 | {#define-function :qname method:meth ~_} -> `(define-function ,qname ,meth)
8 | expr
9 ;
11 expr =
12 {#ref :name ~_} -> `(ref ,name)
13 | {#lit :literal ~_} -> `(lit ,literal)
14 | {#object :selfid method*:methods ~_} -> `(object ,selfid ,@methods)
15 | {#function method*:methods ~_} -> `(function ,@methods)
16 | {#tuple expr*:elts ~_} -> `(tuple ,@elts)
17 | {#send expr:receiver expr*:message ~_} -> `(send ,receiver ,@message)
18 | {#assemble {assemble-binding*}:bindings {assemble-clause*}:clauses}
19 -> `(assemble ,bindings ,clauses)
20 ;
22 assemble-binding = {:name expr:init} -> `(,name ,init);
23 assemble-clause = {:language :item} -> `(,language ,item);
25 method =
26 {#method {pattern*}:patterns expr:body ~_} -> `(method ,patterns ,body)
27 ;
29 pattern =
30 {#discard} -> `(discard)
31 | {#bind :name ~_} -> `(bind ,name)
32 | {#lit :literal ~_} -> `(lit ,literal)
33 | {#tuple pattern*:elts ~_} -> `(tuple ,@elts)
34 ;