#include "HsVersions.h"
import Packages ( PackageConfig(..), defaultPackageConfig )
-import Lex
+import Lexer
+import CmdLineOpts
import FastString
import StringBuffer
import SrcLoc
}
%token
- '{' { ITocurly }
- '}' { ITccurly }
- '[' { ITobrack }
- ']' { ITcbrack }
- ',' { ITcomma }
- '=' { ITequal }
- VARID { ITvarid $$ }
- CONID { ITconid $$ }
- STRING { ITstring $$ }
-
-%monad { P } { thenP } { returnP }
-%lexer { lexer } { ITeof }
+ '{' { T _ _ ITocurly }
+ '}' { T _ _ ITccurly }
+ '[' { T _ _ ITobrack }
+ ']' { T _ _ ITcbrack }
+ ',' { T _ _ ITcomma }
+ '=' { T _ _ ITequal }
+ VARID { T _ _ (ITvarid $$) }
+ CONID { T _ _ (ITconid $$) }
+ STRING { T _ _ (ITstring $$) }
+
+%monad { P } { >>= } { return }
+%lexer { lexer } { T _ _ ITeof }
%name parse
%tokentype { Token }
%%
field :: { PackageConfig -> PackageConfig }
: VARID '=' STRING
{% case unpackFS $1 of {
- "name" -> returnP (\ p -> p{name = unpackFS $3});
+ "name" -> return (\ p -> p{name = unpackFS $3});
_ -> happyError } }
| VARID '=' bool
bool :: { Bool }
: CONID {% case unpackFS $1 of {
- "True" -> returnP True;
- "False" -> returnP False;
+ "True" -> return True;
+ "False" -> return False;
_ -> happyError } }
{
happyError :: P a
-happyError buf PState{ loc = loc } = PFailed (srcParseErr buf loc)
+happyError = srcParseFail
loadPackageConfig :: FilePath -> IO [PackageConfig]
loadPackageConfig conf_filename = do
buf <- hGetStringBuffer conf_filename
- let loc = mkSrcLoc (mkFastString conf_filename) 1
- exts = ExtFlags {glasgowExtsEF = False,
- ffiEF = False,
- arrowsEF = False,
- withEF = False,
- parrEF = False}
- case parse buf (mkPState loc exts) of
- PFailed err -> do
- freeStringBuffer buf
- throwDyn (InstallationError (showSDoc err))
+ let loc = mkSrcLoc (mkFastString conf_filename) 1 0
+ case unP parse (mkPState buf loc defaultDynFlags) of
+ PFailed l1 l2 err -> do
+ throwDyn (InstallationError (showPFailed l1 l2 err))
POk _ pkg_details -> do
- freeStringBuffer buf
return pkg_details
}