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

SCM Repository

[diderot] Diff of /trunk/src/parser/diderot.grm
ViewVC logotype

Diff of /trunk/src/parser/diderot.grm

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

revision 38, Thu Feb 11 03:51:54 2010 UTC revision 39, Thu Feb 11 16:58:32 2010 UTC
# Line 9  Line 9 
9  %tokens  %tokens
10    : KW_actor            ("actor")    : KW_actor            ("actor")
11    | KW_bool             ("bool")    | KW_bool             ("bool")
12      | KW_D                ("D")
13    | KW_die              ("die")    | KW_die              ("die")
14    | KW_else             ("else")    | KW_else             ("else")
15    | KW_field            ("field")    | KW_field            ("field")
# Line 176  Line 177 
177    
178  (***** Types *****)  (***** Types *****)
179    
180  Type    : "image" "<" Dimensions ">"  Type    : "image" Dimensions "[" Dimension "]"
181                  => (markTy(FULL_SPAN, PT.T_Image Dimensions))                  => (markTy(FULL_SPAN, PT.T_Image{
182          | "field" "#" Dimension "<" Dimensions ">"                          order = Dimensions, dim = Dimension
183                  => (markTy(FULL_SPAN, PT.T_Field(Dimension, Dimensions)))                        }))
184            | "field" "#" Dimension Dimensions "[" Dimension "]"
185                    => (markTy(FULL_SPAN, PT.T_Field{
186                            diff = Dimension1,
187                            order = Dimensions,
188                            dim = Dimension2
189                          }))
190          | "kernel" "#" Dimension          | "kernel" "#" Dimension
191                  => (markTy(FULL_SPAN, PT.T_Kernel Dimension))                  => (markTy(FULL_SPAN, PT.T_Kernel Dimension))
192          | ValueType          | ValueType ("[" Dimension "]")*
193                  => (ValueType)                  => (case SR
194                         of [] => ValueType
195                          | d => (markTy(FULL_SPAN, PT.T_Array(ValueType, d)))
196                        (* end case *))
197          ;          ;
198    
199  ValueType  ValueType
200          : "tensor" "<" Dimensions ">"          : "tensor" Dimensions
201                  => (markTy(FULL_SPAN, PT.T_Tensor Dimensions))                  => (markTy(FULL_SPAN, PT.T_Tensor Dimensions))
202          | "vec" "<" Dimension ">"          | "vec" "<" Dimension ">"
203                  => (markTy(FULL_SPAN, PT.T_Vec Dimension))                  => (markTy(FULL_SPAN, PT.T_Vec Dimension))
# Line 202  Line 212 
212          ;          ;
213    
214  Dimensions  Dimensions
215          : ( Dimension ("," Dimension)* )?          : (* empty *)
216                    => ([])
217            | "<" ( Dimension ("," Dimension)* )? ">"
218                  => (flatten SR)                  => (flatten SR)
219          ;          ;
220    
# Line 244  Line 256 
256          ;          ;
257    
258  MulExpr  MulExpr
259          : SelExpr ( MulOp SelExpr )*          : PrefixExpr ( MulOp PrefixExpr )*
260                  => (mkLBinExp (SelExpr, SR))                  => (mkLBinExp (PrefixExpr, SR))
261          ;          ;
262    
263  MulOp  MulOp
264          : "*" => (Op.times) | "/" => (Op.divide)          : "*" => (Op.times) | "/" => (Op.divide)
265          ;          ;
266    
 SelExpr  
         : PrefixExpr ( "@" PrefixExpr => (Op.at, PrefixExpr) | "[" Expr "]" => (Op.sub, Expr) )*  
                 => (mkRBinExp (PrefixExpr, SR))  
         ;  
   
267  PrefixExpr  PrefixExpr
268          : AtomExp          : SelExpr
269                  => (AtomExp)                  => (SelExpr)
270          | "-" PrefixExpr          | "-" PrefixExpr
271                  => (markExpr(FULL_SPAN, PT.E_UnaryOp(Op.uMinus, PrefixExpr)))                  => (markExpr(FULL_SPAN, PT.E_UnaryOp(Op.uMinus, PrefixExpr)))
272          | "!" PrefixExpr          | "!" PrefixExpr
273                  => (markExpr(FULL_SPAN, PT.E_UnaryOp(Op.bNot, PrefixExpr)))                  => (markExpr(FULL_SPAN, PT.E_UnaryOp(Op.bNot, PrefixExpr)))
274            | "D" PrefixExpr
275                    => (markExpr(FULL_SPAN, PT.E_Diff PrefixExpr))
276            ;
277    
278    SelExpr
279            : AtomExp ( "@" AtomExp => (Op.at, AtomExp) | "[" Expr "]" => (Op.sub, Expr) )*
280                    => (mkRBinExp (AtomExp, SR))
281          ;          ;
282    
283  AtomExp  AtomExp

Legend:
Removed from v.38  
changed lines
  Added in v.39

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