[project @ 2000-08-01 09:08:25 by simonpj]
[ghc-hetmet.git] / ghc / interpreter / parser.y
index 99900bf..13b3b0a 100644 (file)
@@ -12,8 +12,8 @@
  * included in the distribution.
  *
  * $RCSfile: parser.y,v $
- * $Revision: 1.27 $
- * $Date: 2000/04/04 17:35:04 $
+ * $Revision: 1.30 $
+ * $Date: 2000/04/25 17:43:50 $
  * ------------------------------------------------------------------------*/
 
 %{
@@ -80,6 +80,7 @@ static Void   local noIP       ( String );
 %token THEN       ELSE       WHERE      LET        IN
 %token INFIXN     INFIXL     INFIXR     FOREIGN    TNEWTYPE
 %token DEFAULT    DERIVING   DO         TCLASS     TINSTANCE
+%token MDO
 /*#if IPARAM*/
 %token WITH DLET
 /*#endif*/
@@ -97,7 +98,6 @@ static Void   local noIP       ( String );
 %token EXPORT     UUEXPORT   INTERFACE  REQUIRES   UNSAFE     
 %token INSTIMPORT DYNAMIC    CCALL      STDKALL
 %token UTL        UTR        UUUSAGE
-%token PRIVILEGED
 
 %%
 /*- Top level script/module structure -------------------------------------*/
@@ -120,9 +120,9 @@ start     : EXPR exp wherePart      {inputExpr    = letrec($3,$2); sp-=2;}
  */
 
 /*- Top-level interface files -----------------------------*/
-iface     : INTERFACE ifCon NUMLIT ifOrphans ifCheckVersion WHERE ifTopDecls 
-                                        {$$ = gc7(ap(I_INTERFACE, 
-                                                     zpair($2,$7))); }
+iface     : INTERFACE STRINGLIT ifCon NUMLIT ifOrphans ifCheckVersion WHERE ifTopDecls 
+                                        {$$ = gc8(ap(I_INTERFACE, 
+                                                     zpair($3,$8))); }
           | INTERFACE error             {syntaxError("interface file");}
           ;
 
@@ -516,10 +516,6 @@ impDecl   : IMPORT modid impspec        {$$=gc3(doubleton(
                                         {$$=gc4(singleton(
                                                ap(M_IMPORT_Q,zpair($3,$3))
                                             ));}
-          | IMPORT PRIVILEGED modid '(' imports ')'
-                                       {$$=gc6(singleton(
-                                               ap(M_IMPORT_UNQ,
-                                                  zpair($3,ap(STAR,$5)))));}
           | IMPORT error                {syntaxError("import declaration");}
           ;
 impspec   : /* empty */                 {$$ = gc0(DOTDOT);}
@@ -1048,6 +1044,7 @@ infixExpb : infixExpa qop '-' exp10b    {$$ = gc4(ap(NEG,ap(ap($2,$1),$4)));}
           ;
 exp10a    : CASEXP exp OF '{' alts end  {$$ = gc6(ap(CASE,pair($2,rev($5))));}
           | DO '{' stmts end            {$$ = gc4(ap(DOCOMP,checkDo($3)));}
+          | MDO '{' stmts end           {$$ = gc4(ap(DOCOMP,checkDo($3)));}
           | appExp                      {$$ = $1;}
           ;
 exp10b    : '\\' pats ARROW exp         {$$ = gc4(ap(LAMBDA,      
@@ -1199,7 +1196,6 @@ varid     : VARID                       {$$ = $1;}
           | HIDING                      {$$ = gc1(varHiding);}
           | QUALIFIED                   {$$ = gc1(varQualified);}
           | ASMOD                       {$$ = gc1(varAsMod);}
-          | PRIVILEGED                  {$$ = gc1(varPrivileged);}
           ;
 qconid    : QCONID                      {$$ = $1;}
           | CONID                       {$$ = $1;}
@@ -1268,7 +1264,6 @@ varid1    : VARID                       {$$ = gc1($1);}
           | HIDING                      {$$ = gc1(varHiding);}
           | QUALIFIED                   {$$ = gc1(varQualified);}
           | ASMOD                       {$$ = gc1(varAsMod);}
-          | PRIVILEGED                  {$$ = gc1(varPrivileged);}
           ;
 
 /*- Tricks to force insertion of leading and closing braces ---------------*/
@@ -1413,7 +1408,6 @@ static String local unexpected() {     /* find name for unexpected token   */
                          return buffer;
         case HIDING    : return "symbol \"hiding\"";
         case QUALIFIED : return "symbol \"qualified\"";
-       case PRIVILEGED : return "symbol \"privileged\"";
         case ASMOD     : return "symbol \"as\"";
         case NUMLIT    : return "numeric literal";
         case CHARLIT   : return "character literal";