亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? argv.hs

?? Haskell是一種程序語(yǔ)言。特別的
?? HS
字號(hào):
-----------------------------------------------------------------------------
-- |
-- Module      :  Argv
-- Copyright   :  Thomas Hallgren and Malcolm Wallace
-- 
-- Maintainer  :  Malcolm Wallace <Malcolm.Wallace@cs.york.ac.uk>
-- Stability   :  Stable
-- Portability :  All
--
-- Command-line parsing for hmake.
-----------------------------------------------------------------------------

module Argv(Goal(..),DecodedArgs(..),decode,stripGoal) where

import ListUtil (lconcatMap)
import Compiler
import Config
import PackageConfig (packageDirs)
import Platform (unsafePerformIO)

import List (isPrefixOf)
import IO (hPutStrLn,stderr)

-- | Target modules.  Either a program or an "Object", which is the
--   filename and its extension (suffix).
data Goal = Object  String String
          | Program String

instance Show Goal where
   showsPrec n (Object  name suf) = showString (name++'.':suf)
   showsPrec n (Program name)     = showString name

-- | Get the filename out of this Goal.  In the case of an "Object",
--   this does not include the extension.
stripGoal :: Goal -> String
stripGoal (Object name suf) = name
stripGoal (Program name)    = name

-- /decode/ originally returned a 12-tuple of arguments.  The structure
-- /DecodedArgs/ is hopefully rather more meaningful.  (Apart from
-- anything else, nhc98 didn't do 13-tuples at the time, so this was
-- needed in order to make extensions to the return value!)

-- | The decoded command-line arguments.
data DecodedArgs =
     Decoded 
	{ modules  :: [Goal]		-- ^ specified target modules
	, pathSrc  :: [String]		-- ^ paths to compilable sources
	, pathPrel :: [String]		-- ^ paths to prelude .hi files
	, zdefs    :: [String]		-- ^ cpp options beginning -Z
	, defs     :: [String]		-- ^ cpp options beginning -D
	, ignoreHi :: [String]		-- ^ .hi files to ignore
	, dflag    :: Bool		-- ^ does compiler have a -d option?
	, quiet    :: Bool		-- ^ option -q for quiet
	, keepPrel :: Bool		-- ^ option -keepPrelude
	, isUnix   :: Bool		-- ^ Unix or RiscOS (!)
	, hat      :: Bool		-- ^ do we perform hat transformation?
	, debug    :: (String->IO ())	-- ^ debugging printf function
	, ifnotopt :: ([String]->String->String)  -- ^ is option unset?
	, ifopt    :: ([String]->String->String)  -- ^ is option set?
	, goalDir  :: Maybe String	-- ^ goal Directory for .o files
	, hiDir    :: Maybe String	-- ^ separate directory for .hi files
	, hiSuffix :: String		-- ^ .hi / .T.hi
	, oSuffix  :: String		-- ^ .o  / .T.o / .p.o / .z.o
        , config   :: PersonalConfig	-- ^ from file (via optional -ffile)
        , compiler :: CompilerConfig	-- ^ chosen compiler
	}

-- | Given the list of program arguments, decode them.
decode :: [String] -> IO DecodedArgs
decode progArgs =
  let d = Decoded {
      modules  = (map wrapGoal . filter (not . isflag)) progArgs
    , pathSrc  = error "pathSrc not known yet"
    , pathPrel = error "pathPrel not known yet"
    , zdefs    = error "zdefs not known yet"
 -- , pathSrc  = (map tail . filter (\v -> head v == 'I')) flags ++
 --              (map tail . filter (\v -> head v == 'i')) flags ++
 --              if isopt "keepPrelude" then pathPrel d else []
 -- , pathPrel = (map tail . filter (\v -> head v == 'P')) flags ++
 --              includePaths (compiler d) ++
 --              packageDirs (compiler d)
 --                          (map (drop 8) $
 --                           filter ("package="`isPrefixOf`) flags)
 -- , zdefs    = (map tail . filter (\v -> head v == 'Z')) flags ++
 --              cppSymbols (compiler d) ++
                 (if isHaskell98 (compiler d) then haskell98SymsForCpp else [])
    , defs     = (map tail . filter (\v -> head v == 'D')) flags
    , ignoreHi = (map tail . filter (\v -> head v == 'N')) flags
    , dflag    = False	-- isopt "od"
    , quiet    = isopt "q"
    , keepPrel = isopt "keepPrelude"
    , isUnix   = True			-- not (isopt "RiscOS")
    , hat      = isopt "hat"
    , debug    = if isopt "watch" then (\s->hPutStrLn stderr s)
                 else (\s->return ())
    , ifnotopt = \opts s -> if not (or (map isopt opts)) then s else ""
    , ifopt    = \opts s -> if any isopt opts then s else ""
    , goalDir  = case filter (\v-> head v == 'd') flags of
                   []  -> Nothing
                   [x] -> Just (tail x)
                   _   -> error "hmake: only one -dobjdir option allowed\n" 
    , hiDir    = (withDefault Nothing (Just . drop 6 . last)
                     . filter ("hidir=" `isPrefixOf`)) flags
    , hiSuffix = (withDefault "hi" (drop 10 . last)
                     . filter ("hi-suffix=" `isPrefixOf`)) flags
    , oSuffix  = (withDefault "o"  (drop  9 . last)
                     . filter ("o-suffix="  `isPrefixOf`)) flags
    , config   = case filter (\v-> head v == 'f') flags of
                   []  -> unsafePerformIO
                            (readPersonalConfig (defaultConfigLocation False))
                   [x] -> PersonalConfig
                            { globalConfig = readConfig (tail x)
                            , localConfig = Nothing }
                   _   -> error "hmake: only one -fconfigfile option allowed\n" 
    , compiler = error "compiler not known yet"
 -- , compiler = case filter (\v-> "hc=" `isPrefixOf` v) flags of
 --                []  -> usualCompiler (config d)
 --                [x] -> matchCompiler (drop 3 x) (config d)
 --                _   -> error "hmake: only one -hc=compiler option allowed\n" 
    }
  in do
  cc <- unDyn $ case filter (\v-> "hc=" `isPrefixOf` v) flags of
                   []  -> usualCompiler (config d)
                   [x] -> matchCompiler (drop 3 x) (config d)
                   _   -> error "hmake: only one -hc=compiler option allowed\n" 
  let d' = d {
         pathSrc  = (map tail . filter (\v -> head v == 'I')) flags ++
                    (map tail . filter (\v -> head v == 'i')) flags ++
                    if isopt "keepPrelude" then pathPrel d' else []
       , pathPrel = (map tail . filter (\v -> head v == 'P')) flags ++
                    includePaths (compiler d') ++
                    packageDirs (compiler d')
                                (map (drop 8) $
                                 filter ("package="`isPrefixOf`) flags)
       , zdefs    = (map tail . filter (\v -> head v == 'Z')) flags ++
                    cppSymbols (compiler d') ++
                    (if isHaskell98 (compiler d') then haskell98SymsForCpp
                                                  else [])
       , compiler = cc
       }
  return d'

 where
  flags = (map tail . filter isflag) progArgs

  isflag [] = False
  isflag (c : _) = c == '+' || c == '-'

  isopt opt = opt `elem` flags

  -- Look at the file argument, including the suffix, and decide
  -- whether it's a 'Program' or an 'Object'.
  wrapGoal :: String -> Goal
  wrapGoal file =
      let (s,n) = break (=='.') (reverse file)
      in findFirst (\suf -> if s == reverse suf then
                                 Just (Object (reverse (tail n)) suf)
                            else Nothing)
                   (Program file)
                   suffixes
                   
  findFirst :: (a->Maybe b) -> b -> [a] -> b
  findFirst f z []     = z
  findFirst f z (x:xs) = case f x of
                            Just y  -> y
                            Nothing -> findFirst f z xs

  withDefault :: a -> ([b]->a) -> ([b]->a)
  withDefault s f [] = s
  withDefault s f xs = f xs

  suffixes = [ "lhs"	-- literate Haskell
             , "gc"	-- GreenCard
             , "hsc"	-- hsc2hs
             , "hs"	-- Haskell
             , "o"	-- object file
             , "hi"	-- interface file
             , "T.o"	-- tracing object file
             , "p.o"	-- heap-profiling object file
             , "z.o"	-- time-profiling object file
             , "T.hi"	-- tracing interface file
             ]

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
九色综合国产一区二区三区| 午夜激情综合网| 欧美xxxxx牲另类人与| 91丨九色丨尤物| 成人丝袜视频网| 国产麻豆91精品| 韩国成人在线视频| 免费在线欧美视频| 视频一区在线播放| 亚洲一本大道在线| 亚洲综合偷拍欧美一区色| 国产精品天美传媒| 国产精品狼人久久影院观看方式| 欧美精品一区二区三区在线播放| 精品国产乱码久久久久久浪潮 | 91婷婷韩国欧美一区二区| 成人免费毛片高清视频| 成人精品鲁一区一区二区| www.欧美日韩| 91色porny蝌蚪| 欧美日本乱大交xxxxx| 日韩欧美国产麻豆| 国产女人18水真多18精品一级做| 国产日韩欧美精品在线| 欧美激情一区不卡| 亚洲综合图片区| 麻豆精品国产91久久久久久| 国产一区二区三区电影在线观看 | 国产1区2区3区精品美女| av色综合久久天堂av综合| 在线亚洲免费视频| 日韩一区二区三区免费观看| 亚洲国产精品激情在线观看| 有码一区二区三区| 久久91精品国产91久久小草| 成人国产精品免费观看视频| 欧美日本一区二区三区| 精品欧美久久久| 亚洲影院免费观看| 国产一区二区在线免费观看| 色一情一伦一子一伦一区| 欧美一区二区三区小说| 成人免费在线播放视频| 日韩电影在线看| 色老汉av一区二区三区| 日韩精品一区二区三区在线观看| 亚洲欧美在线高清| 国产毛片精品视频| 91精品国产综合久久婷婷香蕉| 中文在线一区二区| 国产一区二区三区四区五区美女 | 成人av集中营| 精品剧情v国产在线观看在线| 亚洲欧美另类久久久精品2019| 精品一区二区免费| 欧美一区二区视频在线观看2020| 亚洲一二三四久久| 91黄色免费网站| 中文字幕一区在线| 成人99免费视频| 国产精品福利一区二区| 国产**成人网毛片九色| 日韩精品一区二区三区视频在线观看| 日韩一区欧美二区| 日韩电影在线免费| 欧美精品1区2区| 欧美日韩你懂得| 亚洲一级片在线观看| 宅男噜噜噜66一区二区66| 99精品视频在线免费观看| 精品一区精品二区高清| 亚洲第一久久影院| 亚洲欧洲成人自拍| 国产亚洲福利社区一区| 777a∨成人精品桃花网| 99这里都是精品| 国产成人av自拍| 精品一区二区在线观看| 午夜av一区二区| 亚洲一区精品在线| 亚洲欧洲在线观看av| 国产精品网站在线播放| 久久蜜桃一区二区| 久久综合中文字幕| 精品国产免费久久| 亚洲成av人片在线| 婷婷综合另类小说色区| 亚洲图片欧美综合| 亚洲成av人片在线观看| 亚洲一区在线播放| 五月激情六月综合| 奇米888四色在线精品| 奇米精品一区二区三区四区 | 亚洲久本草在线中文字幕| 日韩一区欧美一区| 亚洲精品视频在线观看免费| 国产精品天干天干在线综合| 国产精品污污网站在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 国产亚洲制服色| 国产精品入口麻豆九色| 成人欧美一区二区三区视频网页| 国产精品美女一区二区| 尤物av一区二区| 久久国产精品一区二区| 日韩欧美一区二区三区在线| 欧美精品一区二区久久久| 国产三级久久久| 亚洲成人自拍网| 国产精品91一区二区| 91高清视频免费看| 久久蜜臀精品av| 亚洲猫色日本管| 久久精品国产色蜜蜜麻豆| 99九九99九九九视频精品| 欧美精品xxxxbbbb| 国产午夜一区二区三区| 亚洲va欧美va国产va天堂影院| 精品一区在线看| 在线免费观看日韩欧美| 久久美女艺术照精彩视频福利播放| 1000精品久久久久久久久| 青青国产91久久久久久| 色婷婷激情久久| 久久精品视频免费观看| 日本亚洲电影天堂| 91久久奴性调教| 国产精品午夜在线| 老司机午夜精品| 欧美日韩国产大片| 亚洲精品伦理在线| 成人黄动漫网站免费app| 欧美一区二区三区视频免费播放| 亚洲欧美另类综合偷拍| 国产成人av自拍| 久久久99精品免费观看不卡| 久久97超碰国产精品超碰| 欧美一级二级三级乱码| 亚洲一本大道在线| 欧美亚洲国产一区在线观看网站| 欧美激情一区二区| 成人涩涩免费视频| 国产精品视频第一区| 成人黄页在线观看| 亚洲三级免费观看| 色哟哟一区二区三区| 综合欧美一区二区三区| 99re这里只有精品6| 亚洲日本护士毛茸茸| 欧美丝袜丝nylons| 亚洲成人一区二区在线观看| 欧美色手机在线观看| 午夜精品福利在线| 欧美电影免费观看高清完整版| 免费成人深夜小野草| 久久久久久一二三区| av电影一区二区| 一区二区三区不卡视频| 欧美日本一区二区| 黄页视频在线91| 日韩一区中文字幕| 欧美一级片免费看| 国产在线国偷精品产拍免费yy| 国产欧美日韩一区二区三区在线观看| 成人亚洲精品久久久久软件| 亚洲男人的天堂在线aⅴ视频| 欧美日韩一区二区三区在线| 免费一级片91| 亚洲欧洲另类国产综合| 欧美日韩mp4| 成人激情视频网站| 青青草国产精品97视觉盛宴| 日本一区免费视频| 欧美乱妇15p| 91麻豆国产精品久久| 美腿丝袜亚洲一区| 亚洲品质自拍视频| 国产婷婷色一区二区三区| 欧美视频一二三区| 波多野洁衣一区| 国产一区视频导航| 日本成人在线看| 亚洲国产日韩av| 亚洲视频 欧洲视频| 久久久久国产精品免费免费搜索| 在线区一区二视频| 97se亚洲国产综合自在线| 捆绑变态av一区二区三区| 亚洲一区二区三区美女| 自拍偷拍欧美精品| 中文字幕乱码亚洲精品一区| 精品国产1区2区3区| 日韩免费高清av| 欧美一区二区三区的| 69堂国产成人免费视频| 欧美日韩精品三区| 在线观看区一区二| 欧美日韩中文一区| 欧美日韩国产小视频在线观看| 色综合中文字幕国产 |