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/trunk/src/MLRISC/Tools/Parser/mdl.grm
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/Tools/Parser/mdl.grm

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

revision 973, Sun Oct 28 00:44:05 2001 UTC revision 974, Sun Oct 28 03:29:04 2001 UTC
# Line 185  Line 185 
185           aexp2 of exp Prec.token |           aexp2 of exp Prec.token |
186           appexp of exp Prec.token list |           appexp of exp Prec.token list |
187           exp of exp |           exp of exp |
188             typedexp of exp |
189           guard of exp option |           guard of exp option |
190           funguard of exp option |           funguard of exp option |
191           cont of id option |           cont of id option |
# Line 203  Line 204 
204           apat2 of pat Prec.token |           apat2 of pat Prec.token |
205           apppat of pat Prec.token list |           apppat of pat Prec.token list |
206           pat of pat |           pat of pat |
207             typedpat of pat |
208           pats of pat list |           pats of pat list |
209           pats1 of pat list |           pats1 of pat list |
210           pats2 of pat list |           pats2 of pat list |
# Line 732  Line 734 
734  valbinds:       valbind                 ([valbind])  valbinds:       valbind                 ([valbind])
735  |               valbind AND valbinds    (valbind::valbinds)  |               valbind AND valbinds    (valbind::valbinds)
736    
737  valbind:        pat EQ exp              (VALbind(pat,exp))  valbind:        pat EQ typedexp         (VALbind(pat,typedexp))
738    
739  literal:        word                    (WORD32lit word)  literal:        word                    (WORD32lit word)
740  |               int                     (INTlit int)  |               int                     (INTlit int)
# Line 747  Line 749 
749  |               HASH id                 (TYPEexp(TYVARty(INTtv id)))  |               HASH id                 (TYPEexp(TYVARty(INTtv id)))
750  |               OP symb                 (IDexp(IDENT([],symb)))  |               OP symb                 (IDexp(IDENT([],symb)))
751  |               LPAREN symb RPAREN      (IDexp(IDENT([],symb)))  |               LPAREN symb RPAREN      (IDexp(IDENT([],symb)))
752  |               LPAREN exp COLON ty RPAREN      (TYPEDexp(exp,ty))  (*|             LPAREN exp COLON ty RPAREN      (TYPEDexp(exp,ty))*)
753  |               LDQUOTE asms RDQUOTE    (ASMexp(ASMasm asms))  |               LDQUOTE asms RDQUOTE    (ASMexp(ASMasm asms))
754  |               LPAREN RPAREN           (TUPLEexp [])  |               LPAREN RPAREN           (TUPLEexp [])
755  |               LPAREN exp RPAREN       (exp)  |               LPAREN typedexp RPAREN  (typedexp)
756  |               LPAREN exps2 RPAREN     (TUPLEexp exps2)  |               LPAREN exps2 RPAREN     (TUPLEexp exps2)
757  |               LPAREN expseq2 RPAREN   (SEQexp expseq2)  |               LPAREN expseq2 RPAREN   (SEQexp expseq2)
758  |               LBRACKET exps RBRACKET  (LISTexp(exps,NONE))  |               LBRACKET exps RBRACKET  (LISTexp(exps,NONE))
# Line 794  Line 796 
796  labexps:        labexp                  ([labexp])  labexps:        labexp                  ([labexp])
797  |               labexp COMMA labexps    (labexp::labexps)  |               labexp COMMA labexps    (labexp::labexps)
798    
799  labexp:         id EQ exp               (id,exp)  labexp:         id EQ typedexp          (id,typedexp)
800  |               id                      (id,IDexp(IDENT([],id)))  |               id                      (id,IDexp(IDENT([],id)))
801    
802  appexp:         aexp2                   ([aexp2])  appexp:         aexp2                   ([aexp2])
# Line 802  Line 804 
804    
805  exp:            appexp                  (parseExp precStack err  exp:            appexp                  (parseExp precStack err
806                   (SourceMapping.location srcMap (appexpleft,appexpright)) appexp)                   (SourceMapping.location srcMap (appexpleft,appexpright)) appexp)
807  |               IF exp THEN exp ELSE exp (IFexp(exp1,exp2,exp3))  |               IF typedexp THEN typedexp ELSE exp
808  |               CASE exp OF clauses     (CASEexp(exp,clauses))                          (IFexp(typedexp1,typedexp2,exp))
809    |               CASE typedexp OF clauses        (CASEexp(typedexp,clauses))
810  |               FN clauses              (LAMBDAexp clauses)  |               FN clauses              (LAMBDAexp clauses)
811  |               exp HANDLE clauses      (HANDLEexp(exp,clauses))  |               exp HANDLE clauses      (HANDLEexp(exp,clauses))
812  |               RAISE exp               (RAISEexp exp)  |               RAISE exp               (RAISEexp exp)
813    
814  expseq:         exp                     ([exp])  typedexp:       exp                     (exp)
815  |               exp SEMICOLON expseq    (exp::expseq)  |               typedexp COLON ty       (TYPEDexp(typedexp,ty))
816    
817  expseq2:        exp SEMICOLON expseq    (exp::expseq)  expseq:         typedexp                        ([typedexp])
818    |               typedexp SEMICOLON expseq       (typedexp::expseq)
819    
820  exps1:          exp             ([exp])  expseq2:        typedexp SEMICOLON expseq       (typedexp::expseq)
 |               exp COMMA exps1 (exp::exps1)  
821    
822  exps2:          exp COMMA exps1 (exp::exps1)  exps1:          typedexp                ([typedexp])
823    |               typedexp COMMA exps1    (typedexp::exps1)
824    
825    exps2:          typedexp COMMA exps1 (typedexp::exps1)
826    
827  exps:                   ([])  exps:                   ([])
828  |               exps1   (exps1)  |               exps1   (exps1)
# Line 829  Line 835 
835  |               LPAREN pats2 RPAREN             (TUPLEpat pats2)  |               LPAREN pats2 RPAREN             (TUPLEpat pats2)
836  |               LPAREN orpats2 RPAREN           (ORpat orpats2)  |               LPAREN orpats2 RPAREN           (ORpat orpats2)
837  |               LPAREN andpats2 RPAREN          (ANDpat andpats2)  |               LPAREN andpats2 RPAREN          (ANDpat andpats2)
838  |               LPAREN pat RPAREN               (pat)  |               LPAREN typedpat RPAREN          (typedpat)
839  |               LPAREN pat WHERE exp RPAREN     (WHEREpat(pat,exp))  |               LPAREN typedpat WHERE typedexp RPAREN
840  |               LPAREN pat WHERE exp IN pat RPAREN                          (WHEREpat(typedpat,typedexp))
841                                                  (NESTEDpat(pat1,exp,pat2))  |               LPAREN typedpat WHERE typedexp IN typedpat RPAREN
842                            (NESTEDpat(typedpat1,typedexp,typedpat2))
843  |               LBRACE labpats0 RBRACE          (RECORDpat(labpats0))  |               LBRACE labpats0 RBRACE          (RECORDpat(labpats0))
844  |               sym CONCAT LBRACKET pats RBRACKET  |               sym CONCAT LBRACKET pats RBRACKET
845                  (let val loc = SourceMapping.location srcMap                  (let val loc = SourceMapping.location srcMap
# Line 853  Line 860 
860                  )                  )
861    
862    
863  orpats2:        pat BAR pat     ([pat1,pat2])  orpats2:        typedpat BAR typedpat   ([typedpat1,typedpat2])
864  |               pat BAR orpats2 (pat::orpats2)  |               typedpat BAR orpats2    (typedpat::orpats2)
865    
866  andpats2:       pat AND pat             ([pat1,pat2])  andpats2:       typedpat AND typedpat           ([typedpat1,typedpat2])
867  |               pat AND andpats2        (pat::andpats2)  |               typedpat AND andpats2   (typedpat::andpats2)
868    
869  apat2:          apat                    (Prec.EXP apat)  apat2:          apat                    (Prec.EXP apat)
870  |               sym                     (Prec.ID sym)  |               sym                     (Prec.ID sym)
# Line 871  Line 878 
878                                         (apppatleft,apppatright)) apppat)                                         (apppatleft,apppatright)) apppat)
879  |               id AS pat       (ASpat(id,pat))  |               id AS pat       (ASpat(id,pat))
880    
881    typedpat:       pat                     (pat)
882    |               typedpat COLON ty       (TYPEDpat(typedpat,ty))
883    
884  asapat:         apat            (apat)  asapat:         apat            (apat)
885  |               id AS asapat    (ASpat(id,asapat))  |               id AS asapat    (ASpat(id,asapat))
886    
887  pats:                   ([])  pats:                   ([])
888  |               pats1   (pats1)  |               pats1   (pats1)
889    
890  pats1:          pat             ([pat])  pats1:          typedpat                ([typedpat])
891  |               pat COMMA pats1 (pat::pats1)  |               typedpat COMMA pats1    (typedpat::pats1)
892    
893  pats2:          pat COMMA pats1 (pat::pats1)  pats2:          typedpat COMMA pats1    (typedpat::pats1)
894    
895  labpats0:                       ([],false)  labpats0:                       ([],false)
896  |               labpats         (labpats)  |               labpats         (labpats)
# Line 890  Line 900 
900  |               labpat COMMA labpats    (labpat:: #1 labpats, #2 labpats)  |               labpat COMMA labpats    (labpat:: #1 labpats, #2 labpats)
901    
902  labpat:         sym             (sym,IDpat sym)  labpat:         sym             (sym,IDpat sym)
903  |               sym EQ pat      (sym,pat)  |               sym EQ typedpat (sym,typedpat)
904  |               sym AS pat      (sym,ASpat(sym,pat))  |               sym AS typedpat         (sym,ASpat(sym,typedpat))
905  |               sym WHERE exp   (sym,WHEREpat(IDpat sym,exp))  |               sym WHERE typedexp      (sym,WHEREpat(IDpat sym,typedexp))
906  |               sym WHERE exp IN pat (sym,NESTEDpat(IDpat sym,exp,pat))  |               sym WHERE typedexp IN typedpat
907                            (sym,NESTEDpat(IDpat sym,typedexp,typedpat))
908    
909  clause:         pat guard cont DARROW exp       (clause([pat],guard,cont,exp))  clause:         typedpat guard cont DARROW exp
910                            (clause([typedpat],guard,cont,exp))
911    
912  cont:                           (NONE)  cont:                           (NONE)
913  |               EXCEPTION id    (SOME id)  |               EXCEPTION id    (SOME id)
914    
915  guard:                          (NONE)  guard:                          (NONE)
916  |               WHERE exp       (SOME exp)  |               WHERE typedexp  (SOME typedexp)
917    
918  clauses:        clause                  ([clause])  clauses:        clause                  ([clause])
919  |               clause BAR clauses      (clause::clauses)  |               clause BAR clauses      (clause::clauses)
920    
921  funclause:      apppat funguard cont EQ exp  funclause:      apppat funguard cont EQ typedexp
922                  (let val loc = SourceMapping.location srcMap (apppatleft,expright)                  (let val loc = SourceMapping.location srcMap (apppatleft,typedexpright)
923                   in case parseFunPat precStack err loc apppat of                   in case parseFunPat precStack err loc apppat of
924                        (SOME f,ps) => (f,clause(ps,funguard,cont,exp))                        (SOME f,ps) => (f,clause(ps,funguard,cont,typedexp))
925                      | (NONE,ps) =>                      | (NONE,ps) =>
926                        (err(loc,                        (err(loc,
927                             "in clause "^                             "in clause "^
928                               PP.text(AstPP.clause (CLAUSE(ps,funguard,exp))));                               PP.text(AstPP.clause (CLAUSE(ps,funguard,typedexp))));
929                         ("dummy",clause(ps,funguard,cont,exp)))                         ("dummy",clause(ps,funguard,cont,typedexp)))
930                   end                   end
931                  )                  )
932    
933  funguard:                               (NONE)  funguard:                               (NONE)
934  |               WHERE LPAREN exp RPAREN (SOME exp)  |               WHERE LPAREN typedexp RPAREN (SOME typedexp)
935    
936  funclauses:     funclause               (#1 funclause,[#2 funclause])  funclauses:     funclause               (#1 funclause,[#2 funclause])
937  |               funclause BAR funclauses (#1 funclause,#2 funclause:: #2 funclauses)  |               funclause BAR funclauses (#1 funclause,#2 funclause:: #2 funclauses)

Legend:
Removed from v.973  
changed lines
  Added in v.974

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