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

SCM Repository

[diderot] Diff of /branches/pure-cfg/src/compiler/parser/diderot.grm
ViewVC logotype

Diff of /branches/pure-cfg/src/compiler/parser/diderot.grm

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

revision 750, Wed Apr 6 21:43:51 2011 UTC revision 751, Wed Apr 6 21:44:20 2011 UTC
# Line 9  Line 9 
9  %tokens  %tokens
10    : KW_strand           ("strand")    : KW_strand           ("strand")
11    | KW_bool             ("bool")    | KW_bool             ("bool")
12    | KW_D                ("D")    | KW_D                ("D")           (* either D or \nabla *)
13    | KW_die              ("die")    | KW_die              ("die")
14    | KW_else             ("else")    | KW_else             ("else")
15    | KW_field            ("field")    | KW_field            ("field")
# Line 42  Line 42 
42    | OP_plus             ("+")    | OP_plus             ("+")
43    | OP_minus            ("-")    | OP_minus            ("-")
44    | OP_star             ("*")    | OP_star             ("*")
45    | OP_convolve         ("(*)")    | OP_convolve         ("⊛")
46      | OP_dot              ("•")
47      | OP_cross            ("×")
48    | OP_slash            ("/")    | OP_slash            ("/")
49    | OP_at               ("@")    | OP_at               ("@")
50      | OP_D                ("∇")
51      | OP_Dotimes          ("∇⊗")
52      | OP_Dtimes           ("∇×")
53      | OP_Ddot             ("∇•")
54    | LP                  ("(")    | LP                  ("(")
55    | RP                  (")")    | RP                  (")")
56    | LB                  ("[")    | LB                  ("[")
# Line 337  Line 343 
343          ;          ;
344    
345  MulOp  MulOp
346          : "*" => (B.op_mul) | "/" => (B.op_div) | "(*)" => (B.op_convolve)          : "*" => (B.op_mul) | "/" => (B.op_div) | "⊛" => (B.op_convolve)
347            | "•" => (B.op_dot) | "×" => (B.op_cross)
348          ;          ;
349    
350  ProbeExpr  ProbeExpr
# Line 356  Line 363 
363          | "!" PrefixExpr          | "!" PrefixExpr
364                  => (markExpr(FULL_SPAN, PT.E_UnaryOp(B.op_not, PrefixExpr)))                  => (markExpr(FULL_SPAN, PT.E_UnaryOp(B.op_not, PrefixExpr)))
365          | "D" PrefixExpr          | "D" PrefixExpr
366                  => (markExpr(FULL_SPAN, PT.E_UnaryOp(B.op_D, PrefixExpr)))                  => (markExpr(FULL_SPAN, PT.E_Apply(B.fn_D, [PrefixExpr])))
367          ;          ;
368    
369  SliceExpr  SliceExpr
370          : AtomExpr Suffix*          : DerivExpr Suffix*
371                  => (case Suffix                  => (case Suffix
372                       of [] => AtomExpr                       of [] => DerivExpr
373                        | ss => markExpr(FULL_SPAN, List.foldl (fn (f, e) => f e) AtomExpr ss)                        | ss => markExpr(FULL_SPAN, List.foldl (fn (f, e) => f e) DerivExpr ss)
374                      (* end case *))                      (* end case *))
375          ;          ;
376    
# Line 386  Line 393 
393                  => (SOME Expr)                  => (SOME Expr)
394          ;          ;
395    
396    DerivExpr
397            : AtomExpr
398                    => (AtomExpr)
399            | "∇" AtomExpr
400                    => (markExpr(FULL_SPAN, PT.E_UnaryOp(B.op_D, AtomExpr)))
401            | "∇⊗" DerivExpr
402                    => (markExpr(FULL_SPAN, PT.E_UnaryOp(B.op_Dotimes, DerivExpr)))
403            | "∇×" DerivExpr
404                    => (markExpr(FULL_SPAN, PT.E_UnaryOp(B.op_Dtimes, DerivExpr)))
405            | "∇•" DerivExpr
406                    => (markExpr(FULL_SPAN, PT.E_UnaryOp(B.op_Ddot, DerivExpr)))
407            ;
408    
409  AtomExpr  AtomExpr
410          : ID ( "(" Arguments ")" )?          : ID ( "(" Arguments ")" )?
411                  => (case SR                  => (case SR

Legend:
Removed from v.750  
changed lines
  Added in v.751

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