diff options
Diffstat (limited to 'ghc/compiler/main/ParsePkgConf.y')
-rw-r--r-- | ghc/compiler/main/ParsePkgConf.y | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/ghc/compiler/main/ParsePkgConf.y b/ghc/compiler/main/ParsePkgConf.y deleted file mode 100644 index 901a5bc943..0000000000 --- a/ghc/compiler/main/ParsePkgConf.y +++ /dev/null @@ -1,153 +0,0 @@ -{ -module ParsePkgConf( loadPackageConfig ) where - -#include "HsVersions.h" - -import PackageConfig -import Lexer -import DynFlags -import FastString -import StringBuffer -import ErrUtils ( mkLocMessage ) -import SrcLoc -import Outputable -import Panic ( GhcException(..) ) -import EXCEPTION ( throwDyn ) - -} - -%token - '{' { L _ ITocurly } - '}' { L _ ITccurly } - '[' { L _ ITobrack } - ']' { L _ ITcbrack } - ',' { L _ ITcomma } - '=' { L _ ITequal } - VARID { L _ (ITvarid $$) } - CONID { L _ (ITconid $$) } - STRING { L _ (ITstring $$) } - INT { L _ (ITinteger $$) } - -%monad { P } { >>= } { return } -%lexer { lexer } { L _ ITeof } -%name parse -%tokentype { Located Token } -%% - -pkgconf :: { [ PackageConfig ] } - : '[' ']' { [] } - | '[' pkgs ']' { reverse $2 } - -pkgs :: { [ PackageConfig ] } - : pkg { [ $1 ] } - | pkgs ',' pkg { $3 : $1 } - -pkg :: { PackageConfig } - : CONID '{' fields '}' { $3 defaultPackageConfig } - -fields :: { PackageConfig -> PackageConfig } - : field { \p -> $1 p } - | fields ',' field { \p -> $1 ($3 p) } - -field :: { PackageConfig -> PackageConfig } - : VARID '=' pkgid - {% case unpackFS $1 of - "package" -> return (\p -> p{package = $3}) - _other -> happyError - } - - | VARID '=' STRING { id } - -- we aren't interested in the string fields, they're all - -- boring (copyright, maintainer etc.) - - | VARID '=' CONID - {% case unpackFS $1 of { - "exposed" -> - case unpackFS $3 of { - "True" -> return (\p -> p{exposed=True}); - "False" -> return (\p -> p{exposed=False}); - _ -> happyError }; - "license" -> return id; -- not interested - _ -> happyError } - } - - | VARID '=' CONID STRING { id } - -- another case of license - - | VARID '=' strlist - {\p -> case unpackFS $1 of - "exposedModules" -> p{exposedModules = $3} - "hiddenModules" -> p{hiddenModules = $3} - "importDirs" -> p{importDirs = $3} - "libraryDirs" -> p{libraryDirs = $3} - "hsLibraries" -> p{hsLibraries = $3} - "extraLibraries" -> p{extraLibraries = $3} - "extraGHCiLibraries"-> p{extraGHCiLibraries= $3} - "includeDirs" -> p{includeDirs = $3} - "includes" -> p{includes = $3} - "hugsOptions" -> p{hugsOptions = $3} - "ccOptions" -> p{ccOptions = $3} - "ldOptions" -> p{ldOptions = $3} - "frameworkDirs" -> p{frameworkDirs = $3} - "frameworks" -> p{frameworks = $3} - "haddockInterfaces" -> p{haddockInterfaces = $3} - "haddockHTMLs" -> p{haddockHTMLs = $3} - "depends" -> p{depends = []} - -- empty list only, non-empty handled below - other -> p - } - - | VARID '=' pkgidlist - {% case unpackFS $1 of - "depends" -> return (\p -> p{depends = $3}) - _other -> happyError - } - -pkgid :: { PackageIdentifier } - : CONID '{' VARID '=' STRING ',' VARID '=' version '}' - { PackageIdentifier{ pkgName = unpackFS $5, - pkgVersion = $9 } } - -version :: { Version } - : CONID '{' VARID '=' intlist ',' VARID '=' strlist '}' - { Version{ versionBranch=$5, versionTags=$9 } } - -pkgidlist :: { [PackageIdentifier] } - : '[' pkgids ']' { $2 } - -- empty list case is covered by strlist, to avoid conflicts - -pkgids :: { [PackageIdentifier] } - : pkgid { [ $1 ] } - | pkgid ',' pkgids { $1 : $3 } - -intlist :: { [Int] } - : '[' ']' { [] } - | '[' ints ']' { $2 } - -ints :: { [Int] } - : INT { [ fromIntegral $1 ] } - | INT ',' ints { fromIntegral $1 : $3 } - -strlist :: { [String] } - : '[' ']' { [] } - | '[' strs ']' { $2 } - -strs :: { [String] } - : STRING { [ unpackFS $1 ] } - | STRING ',' strs { unpackFS $1 : $3 } - -{ -happyError :: P a -happyError = srcParseFail - -loadPackageConfig :: FilePath -> IO [PackageConfig] -loadPackageConfig conf_filename = do - buf <- hGetStringBuffer conf_filename - let loc = mkSrcLoc (mkFastString conf_filename) 1 0 - case unP parse (mkPState buf loc defaultDynFlags) of - PFailed span err -> - throwDyn (InstallationError (showSDoc (mkLocMessage span err))) - - POk _ pkg_details -> do - return pkg_details -} |