Nice/src/bossa/parser Parser.jj,1.329,1.330

Daniel Bonniot <[email protected]> Wed, 25 May 2005 11:52:33 +0000
Newsgroups gmane.comp.lang.nice.cvs
Message-ID <[email protected]>
Update of /cvsroot/nice/Nice/src/bossa/parser
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18588/src/bossa/parser

Modified Files:
	Parser.jj 
Log Message:
Consistently use '?' to represent the wildcard (unknown monotype).

Only accept it in the parser as a type parameter (Object can as well be used
to mean "any monotype").


Index: Parser.jj
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/parser/Parser.jj,v
retrieving revision 1.329
retrieving revision 1.330
diff -C2 -d -r1.329 -r1.330
*** Parser.jj	10 Apr 2005 14:57:02 -0000	1.329
--- Parser.jj	25 May 2005 11:52:30 -0000	1.330
***************
*** 225,229 ****
  | < FALSE:      "false"		>
  | < ALIKE:      "alike"		> /* Nice specific */
- | < UNKNOWN:	"unknown"       > /* Nice specific */
  //| < THIS:       "this"	>
  | < SUPER:      "super"         >
--- 225,228 ----
***************
*** 705,709 ****
  
      t=typeConstructorIdent()
!     "<" [  p=monotypes() ] ">"
      { if(p==null) p=new ArrayList(0);
        last=getToken(0);
--- 704,708 ----
  
      t=typeConstructorIdent()
!     "<" [  p=typeParameters() ] ">"
      { if(p==null) p=new ArrayList(0);
        last=getToken(0);
***************
*** 824,829 ****
  {
    [
-     // Consume "?" only if it does not appear by itself
-     LOOKAHEAD( "?", { getToken(2).kind != COMMA && getToken(2).kind != GT})
      start="?" { maybe = true; }
    | start="!" { sure = true; }
--- 823,826 ----
***************
*** 833,837 ****
    res=funOrTupleMonotype()
  |
!   start="alike" [ "<" p=monotypes() ">" ]
    { res=bossa.syntax.dispatch.createAlike(p, makeLocation(start)); }
    { res.nullness = bossa.syntax.fun.nullness_absent; }
--- 830,834 ----
    res=funOrTupleMonotype()
  |
!   start="alike" [ "<" p=typeParameters() ">" ]
    { res=bossa.syntax.dispatch.createAlike(p, makeLocation(start)); }
    { res.nullness = bossa.syntax.fun.nullness_absent; }
***************
*** 855,861 ****
    }
    { return res; }
- |
-   ("unknown"  | "?")
-   { return new MonotypeWrapper(mlsub.typing.UnknownMonotype.instance); }
  }
  
--- 852,855 ----
***************
*** 871,874 ****
--- 865,891 ----
  }
  
+ Monotype typeParameter():
+ {
+   Monotype res;
+ }
+ {
+   // Consume "?" only if it appears by itself
+   LOOKAHEAD( "?", { getToken(2).kind == COMMA || getToken(2).kind == GT})
+   "?" { return new MonotypeWrapper(mlsub.typing.UnknownMonotype.instance); }
+ |
+   res=monotype() { return res; }
+ }
+ 
+ List typeParameters():
+ {
+   List res=new ArrayList();
+   Monotype t;
+ }
+ {
+   t=typeParameter() { res.add(t); }
+   ( "," t=typeParameter() { res.add(t); } )*
+   { return res; }
+ }
+ 
  /***********************************************************************/
  /*                          Visibility                                 */
***************
*** 999,1005 ****
  {
    name=typeIdent()
!     // ignore type parameters
!     // they should be checked
!     [ "<" params = monotypes() ">" ]
    { return bossa.syntax.fun.createMonotypeConstructor(name, params == null ? null : bossa.syntax.dispatch.createTypeParameters(params), name.location()); }
  }
--- 1016,1020 ----
  {
    name=typeIdent()
!   [ "<" params = typeParameters() ">" ]
    { return bossa.syntax.fun.createMonotypeConstructor(name, params == null ? null : bossa.syntax.dispatch.createTypeParameters(params), name.location()); }
  }



-------------------------------------------------------
This SF.Net email is sponsored by Yahoo.
Introducing Yahoo! Search Developer Network - Create apps using Yahoo!
Search APIs Find out how you can build Yahoo! directly into your own
Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005