Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/lamont/src/compiler/parser/diderot.grm
ViewVC logotype

Diff of /branches/lamont/src/compiler/parser/diderot.grm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 379, Tue Oct 5 00:28:29 2010 UTC revision 381, Tue Oct 5 21:42:17 2010 UTC
# Line 53  Line 53 
53    | RCB                 ("}")    | RCB                 ("}")
54    | COMMA               (",")    | COMMA               (",")
55    | SEMI                (";")    | SEMI                (";")
56      | COLON               (":")
57    | HASH                ("#")    | HASH                ("#")
58    | BANG                ("!")    | BANG                ("!")
59    | BAR                 ("|")    | BAR                 ("|")
# Line 100  Line 101 
101      | mkRBinExp (e, [(id, e')]) = mkBinApp(e, id, e')      | mkRBinExp (e, [(id, e')]) = mkBinApp(e, id, e')
102      | mkRBinExp (e, (id, e')::r) = mkBinApp(e, id, mkRBinExp(e', r))      | mkRBinExp (e, (id, e')::r) = mkBinApp(e, id, mkRBinExp(e', r))
103    
104      fun mkOptExp (_, e, NONE) = e
105        | mkOptExp (spn, e, SOME mk) = mk(spn, e)
106    
107    fun flatten NONE = []    fun flatten NONE = []
108      | flatten (SOME(x, xs)) = x::xs      | flatten (SOME(x, xs)) = x::xs
109    
# Line 336  Line 340 
340          : "*" => (B.op_mul) | "/" => (B.op_div) | "(*)" => (B.op_convolve)          : "*" => (B.op_mul) | "/" => (B.op_div) | "(*)" => (B.op_convolve)
341          ;          ;
342    
343    ProbeExpr
344            : PrefixExpr ( "@" AtomExpr => (AtomExpr) )?
345                    => (case SR
346                         of NONE => PrefixExpr
347                          | SOME e => markExpr(FULL_SPAN, PT.E_BinOp(PrefixExpr, B.op_at, e))
348                        (* end case *))
349            ;
350    
351  PrefixExpr  PrefixExpr
352          : SelExpr          : SliceExpr
353                  => (SelExpr)                  => (SliceExpr)
354          | "-" PrefixExpr          | "-" PrefixExpr
355                  => (markExpr(FULL_SPAN, PT.E_UnaryOp(B.op_neg, PrefixExpr)))                  => (markExpr(FULL_SPAN, PT.E_UnaryOp(B.op_neg, PrefixExpr)))
356          | "!" PrefixExpr          | "!" PrefixExpr
# Line 347  Line 359 
359                  => (markExpr(FULL_SPAN, PT.E_UnaryOp(B.op_D, PrefixExpr)))                  => (markExpr(FULL_SPAN, PT.E_UnaryOp(B.op_D, PrefixExpr)))
360          ;          ;
361    
362  SelExpr  SliceExpr
363          : AtomExp ( "@" AtomExp => (B.op_at, AtomExp) | "[" Expr "]" => (B.op_subscript, Expr) )*          : AtomExpr ( "[" Indices "]" )?
364                  => (mkRBinExp (AtomExp, SR))                  => (case SR
365                         of NONE => AtomExpr
366                          | SOME s => markExpr(FULL_SPAN, PT.E_Slice(AtomExpr, s))
367                        (* end case *))
368            ;
369    
370    Indices
371            : Index ( "," Index )*
372                    => (Index :: SR)
373            ;
374    
375    Index
376            : ":"
377                    => (NONE)
378            | Expr
379                    => (SOME Expr)
380          ;          ;
381    
382  AtomExp  AtomExpr
383          : ID ( "(" Arguments ")" )?          : ID ( "(" Arguments ")" )?
384                  => (case SR                  => (case SR
385                       of NONE => markExpr(FULL_SPAN, PT.E_Var ID)                       of NONE => markExpr(FULL_SPAN, PT.E_Var ID)

Legend:
Removed from v.379  
changed lines
  Added in v.381

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0