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

SCM Repository

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

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

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

revision 3994, Sat Jun 18 18:41:33 2016 UTC revision 3995, Sat Jun 18 20:00:19 2016 UTC
# Line 161  Line 161 
161          ;          ;
162    
163  Program  Program
164          : ( GlobalDcl )* StrandDcl ProgramSuffix          : GlobalDcl* Block? StrandDcl ProgramSuffix
165                  => (let val ((init, create), update) = ProgramSuffix                  => (let val (create, init, update) = ProgramSuffix
166                      in                      in
167                        {                        {
168                            globals = SR,                            globals = GlobalDcl,
169                              globInit = Block,
170                            strand = StrandDcl,                            strand = StrandDcl,
                           init = init,  
171                            create = create,                            create = create,
172                              init = init,
173                            update = update                            update = update
174                          }                          }
175                      end)                      end)
176  (*  (*
177          : ( GlobalDcl )* StrandDcl Initialization ( GlobalUpdate )?          : GlobalDcl* Block? StrandDcl InitialStrands GlobalInitially? GlobalUpdate?
178                  => ({                  => ({
179                        globals = SR1,                        globals = GlobalDcl,
180                          globInit = Block,
181                        strand = StrandDcl,                        strand = StrandDcl,
182                        init = fst Initialization,                        create = InitialStrandsn,
183                        create = snd Initialization,                        init = GlobalInitially,
184                        update = SR2                        update = GlobalUpdate
185                      })                      })
186  *)  *)
187          ;          ;
188    
189  ProgramSuffix  ProgramSuffix
190          : Initialization ( GlobalUpdate )?          : InitialStrands GlobalInitially? GlobalUpdate?
                 => (Initialization, SR)  
191          | OldGlobalUpdate "initially" (Array | Collection) ";"          | OldGlobalUpdate "initially" (Array | Collection) ";"
192                  => ((NONE, SR FULL_SPAN), SOME OldGlobalUpdate)                  => (SR FULL_SPAN, NONE, SOME OldGlobalUpdate)
193            ;
194    
195    InitialStrands
196            : "collection" Comprehension
197                    => (mark PT.CR_Mark (FULL_SPAN, PT.CR_Collection Comprehension))
198            | "grid" "(" ConstExpr ")" Comprehension
199                    => (mark PT.CR_Mark (FULL_SPAN, PT.CR_Grid(ConstExpr, Comprehension)))
200          ;          ;
201    
202  GlobalDcl  GlobalDcl
# Line 240  Line 248 
248          ;          ;
249    
250  StrandDcl  StrandDcl
251          : "strand" BindId "(" Parameters ")" "{" ( StateVarDcl )* ( MethodDcl )* "}"          : "strand" BindId "(" Parameters ")" "{" StateVarDcl* Block? MethodDcl* "}"
252                  => (mark PT.SD_Mark (FULL_SPAN, PT.SD_Strand{                  => (mark PT.SD_Mark (FULL_SPAN, PT.SD_Strand{
253                        name = BindId, params = Parameters, state = SR1, methods = SR2                        name = BindId,
254                          params = Parameters,
255                          state = StateVarDcl,
256                          stateInit = Block,
257                          methods = MethodDcl
258                      }))                      }))
259          ;          ;
260    
# Line 264  Line 276 
276          | "stabilize"   => (StrandUtil.Stabilize)          | "stabilize"   => (StrandUtil.Stabilize)
277          ;          ;
278    
 Initialization  
         : %try "initially" (Array | Collection) ";"  
                 => (NONE, SR FULL_SPAN)  
         | %try ( "initially" Block )? InitialStrands  
                 => (SR, InitialStrands)  
         ;  
   
 InitialStrands  
         : "collection" Comprehension  
                 => (mark PT.CR_Mark (FULL_SPAN, PT.CR_Collection Comprehension))  
         | "grid" "(" ConstExpr ")" Comprehension  
                 => (mark PT.CR_Mark (FULL_SPAN, PT.CR_Grid(ConstExpr, Comprehension)))  
         ;  
   
279  Array  Array
280          : "[" Create "|" Iterations "]"          : "[" Create "|" Iterations "]"
281                  => (fn span =>                  => (fn span =>
# Line 316  Line 314 
314                          PT.E_Range(OrExpr1, OrExpr2)))))                          PT.E_Range(OrExpr1, OrExpr2)))))
315          ;          ;
316    
317    GlobalInitially
318            : "initially" Block
319                    => (Block)
320            ;
321    
322  GlobalUpdate  GlobalUpdate
323          : "update" Block          : "update" Block
324                  => (markStmt (FULL_SPAN, Block))                  => (markStmt (FULL_SPAN, Block))

Legend:
Removed from v.3994  
changed lines
  Added in v.3995

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