{-
-----------------------------------------------------------------------------
-$Id: Parser.y,v 1.7 1999/06/25 14:38:54 simonmar Exp $
+$Id: Parser.y,v 1.8 1999/06/28 15:42:33 simonmar Exp $
Haskell grammar.
%token
'_' { ITunderscore } -- Haskell keywords
- 'as' { ITas }
'case' { ITcase }
'class' { ITclass }
'data' { ITdata }
'deriving' { ITderiving }
'do' { ITdo }
'else' { ITelse }
- 'hiding' { IThiding }
'if' { ITif }
'import' { ITimport }
'in' { ITin }
'module' { ITmodule }
'newtype' { ITnewtype }
'of' { ITof }
- 'qualified' { ITqualified }
'then' { ITthen }
'type' { ITtype }
'where' { ITwhere }
varid :: { RdrName }
: VARID { mkSrcUnqual varName $1 }
- | 'as' { as_var_RDR }
- | 'qualified' { qualified_var_RDR }
- | 'hiding' { hiding_var_RDR }
| 'forall' { forall_var_RDR }
| 'export' { export_var_RDR }
| 'label' { label_var_RDR }
varid_no_unsafe :: { RdrName }
: VARID { mkSrcUnqual varName $1 }
- | 'as' { as_var_RDR }
- | 'qualified' { qualified_var_RDR }
- | 'hiding' { hiding_var_RDR }
| 'forall' { forall_var_RDR }
| 'export' { export_var_RDR }
| 'label' { label_var_RDR }
| 'dynamic' { dynamic_var_RDR }
+-- ``special'' Ids
+'as' :: { () } : VARID {% checkAs $1 }
+'qualified' :: { () } : VARID {% checkQualified $1 }
+'hiding' :: { () } : VARID {% checkHiding $1 }
+
-----------------------------------------------------------------------------
-- ConIds
tyvar :: { RdrName }
: VARID { mkSrcUnqual tvName $1 }
- | 'as' { as_tyvar_RDR }
- | 'qualified' { qualified_tyvar_RDR }
- | 'hiding' { hiding_tyvar_RDR }
| 'export' { export_var_RDR }
| 'label' { label_var_RDR }
| 'dynamic' { dynamic_var_RDR }