Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/branches/idlbasis-devel/src/MLRISC/Tools/Parser/mdl.grm
ViewVC logotype

Diff of /sml/branches/idlbasis-devel/src/MLRISC/Tools/Parser/mdl.grm

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

revision 1231, Mon Jun 3 18:32:08 2002 UTC revision 1232, Tue Jun 4 21:11:15 2002 UTC
# Line 99  Line 99 
99                    | e => (err(loc,"bad expression "^PP.text(AstPP.exp e)); e)                    | e => (err(loc,"bad expression "^PP.text(AstPP.exp e)); e)
100                  ) es                  ) es
101    
102  fun clause(pats, guard, NONE, e) = CLAUSE(pats, guard, e)  fun clause(pats, guard, exn, return_ty, e) =
103    | clause(pats, guard, SOME x, e) = CLAUSE(pats, guard, CONTexp(e, x))      let val e = case exn of NONE => e | SOME x => CONTexp(e, x)
104            val e = case return_ty of NONE => e | SOME ty => TYPEDexp(e,ty)
105        in  CLAUSE(pats, guard, e)
106        end
107    
108  fun seqdecl [d] = d  fun seqdecl [d] = d
109    | seqdecl ds  = SEQdecl ds    | seqdecl ds  = SEQdecl ds
# Line 122  Line 125 
125  %name   MDL  %name   MDL
126  %term   ARCHITECTURE | END | LOCAL | IN | OF | CASE | DATATYPE |  %term   ARCHITECTURE | END | LOCAL | IN | OF | CASE | DATATYPE |
127          TYPE | EQ  | DOLLAR | TIMES | AND |  DEREF | NOT | CONCAT |          TYPE | EQ  | DOLLAR | TIMES | AND |  DEREF | NOT | CONCAT |
128          LLBRACKET | RRBRACKET |          LLBRACKET | RRBRACKET | LHASHBRACKET |
129          LPAREN | RPAREN | LBRACKET | RBRACKET | LBRACE | RBRACE | SEMICOLON |          LPAREN | RPAREN | LBRACKET | RBRACKET | LBRACE | RBRACE | SEMICOLON |
130          LDQUOTE | RDQUOTE | LMETA | RMETA |          LDQUOTE | RDQUOTE | LMETA | RMETA |
131          CELLSET | FN | STORAGE | LOCATIONS | HASH |          CELLSET | FN | STORAGE | LOCATIONS | HASH |
# Line 223  Line 226 
226           labpats of (id * pat) list  * bool|           labpats of (id * pat) list  * bool|
227           of_ty of ty option |           of_ty of ty option |
228           ty of ty |           ty of ty |
229             return_ty of ty option |
230           aty of ty |           aty of ty |
231           appty of ty |           appty of ty |
232           tys2 of ty list |           tys2 of ty list |
# Line 769  Line 773 
773  |               LPAREN exps2 RPAREN     (TUPLEexp exps2)  |               LPAREN exps2 RPAREN     (TUPLEexp exps2)
774  |               LPAREN expseq2 RPAREN   (SEQexp expseq2)  |               LPAREN expseq2 RPAREN   (SEQexp expseq2)
775  |               LBRACKET exps RBRACKET  (LISTexp(exps,NONE))  |               LBRACKET exps RBRACKET  (LISTexp(exps,NONE))
776    |               LHASHBRACKET exps RBRACKET  (VECTORexp exps)
777  |               LBRACE labexps0 RBRACE  (RECORDexp labexps0)  |               LBRACE labexps0 RBRACE  (RECORDexp labexps0)
778  |               DOLLAR id LBRACKET exp region RBRACKET (LOCexp(id,exp,region))  |               DOLLAR id LBRACKET exp region RBRACKET (LOCexp(id,exp,region))
779  |               LLBRACKET rtlterms RRBRACKET (RTLexp(rtlterms))  |               LLBRACKET rtlterms RRBRACKET (RTLexp(rtlterms))
# Line 845  Line 850 
850  |               WILD                            (WILDpat)  |               WILD                            (WILDpat)
851  |               LPAREN RPAREN                   (TUPLEpat [])  |               LPAREN RPAREN                   (TUPLEpat [])
852  |               LBRACKET pats RBRACKET          (LISTpat(pats,NONE))  |               LBRACKET pats RBRACKET          (LISTpat(pats,NONE))
853    |               LHASHBRACKET pats RBRACKET      (VECTORpat pats)
854  |               LPAREN pats2 RPAREN             (TUPLEpat pats2)  |               LPAREN pats2 RPAREN             (TUPLEpat pats2)
855  |               LPAREN orpats2 RPAREN           (ORpat orpats2)  |               LPAREN orpats2 RPAREN           (ORpat orpats2)
856  |               LPAREN andpats2 RPAREN          (ANDpat andpats2)  |               LPAREN andpats2 RPAREN          (ANDpat andpats2)
# Line 920  Line 926 
926                          (sym,NESTEDpat(IDpat sym,typedexp,typedpat))                          (sym,NESTEDpat(IDpat sym,typedexp,typedpat))
927    
928  clause:         typedpat guard cont DARROW exp  clause:         typedpat guard cont DARROW exp
929                          (clause([typedpat],guard,cont,exp))                          (clause([typedpat],guard,cont,NONE,exp))
930    
931  cont:                           (NONE)  cont:                           (NONE)
932  |               EXCEPTION id    (SOME id)  |               EXCEPTION id    (SOME id)
# Line 931  Line 937 
937  clauses:        clause                  ([clause])  clauses:        clause                  ([clause])
938  |               clause BAR clauses      (clause::clauses)  |               clause BAR clauses      (clause::clauses)
939    
940  funclause:      apppat funguard cont EQ typedexp  funclause:      apppat funguard return_ty cont EQ typedexp
941                  (let val loc = SourceMapping.location srcMap (apppatleft,typedexpright)                  (let val loc = SourceMapping.location srcMap (apppatleft,typedexpright)
942                   in case parseFunPat precStack err loc apppat of                   in case parseFunPat precStack err loc apppat of
943                        (SOME f,ps) => (f,clause(ps,funguard,cont,typedexp))                        (SOME f,ps) => (f,clause(ps,funguard,cont,return_ty,typedexp))
944                      | (NONE,ps) =>                      | (NONE,ps) =>
945                        (err(loc,                        (err(loc,
946                             "in clause "^                             "in clause "^
947                               PP.text(AstPP.clause (CLAUSE(ps,funguard,typedexp))));                               PP.text(AstPP.clause (CLAUSE(ps,funguard,typedexp))));
948                         ("dummy",clause(ps,funguard,cont,typedexp)))                         ("dummy",clause(ps,funguard,cont,return_ty,typedexp)))
949                   end                   end
950                  )                  )
951    
952    return_ty:                      (NONE)
953    |               COLON ty        (SOME ty)
954    
955  funguard:                               (NONE)  funguard:                               (NONE)
956  |               WHERE LPAREN typedexp RPAREN (SOME typedexp)  |               WHERE LPAREN typedexp RPAREN (SOME typedexp)
957    

Legend:
Removed from v.1231  
changed lines
  Added in v.1232

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