git.iko.soy/typeable/cabal2nix
on master help sign in
Registered BNFC in the Cabal build and re-factored the Nix grammar into

a re-usage Language.Nix hierarchy.

commit5c446f6e078a6cdc35d9b08190b33c70ea364ef0 authorPeter Simons <simons@cryp.to> dateFri 12 Aug 2011, 19:49 (15 years ago) parent5a98cc5
9 files changed+76−1204
Setup.hs+73 Setup.lhs−8 cabal2nix.cabal+2−4 src/Hackage4Nix/Nix.hs+1−11 src/Hackage4Nix/Nix/Abs.hs−46 src/Hackage4Nix/Nix/ErrM.hs−26 src/Hackage4Nix/Nix/Lex.hs−351 src/Hackage4Nix/Nix/Par.hs−755 src/Nix.cf → src/Language/Nix/Expr.cf−3
Setup.hsnew file+73
@@ -0,0 +1,73 @@
1+module Main ( main ) where
2+
3+import Distribution.Simple
4+import Distribution.Simple.PreProcess
5+import Distribution.PackageDescription
6+import Distribution.Simple.LocalBuildInfo
7+import Control.Exception
8+import System.Directory
9+import System.FilePath
10+import Distribution.Simple.Program
11+import Data.List
12+
13+main :: IO ()
14+main = defaultMainWithHooks simpleUserHooks
15+ { hookedPrograms = [ bnfcProgram ]
16+ , hookedPreProcessors = [ ("cf", bnfc) ]
17+ }
18+
19+bnfcProgram :: Program
20+bnfcProgram = (simpleProgram "BNFC")
21+ { programFindLocation = \v -> findProgramLocation v "bnfc"
22+ , programFindVersion = findProgramVersion "--numeric-version" id
23+ }
24+
25+bnfc :: BuildInfo -> LocalBuildInfo -> PreProcessor
26+bnfc _ lbi = PreProcessor
27+ { platformIndependent = True
28+ , runPreProcessor = \(inBaseDir, inRelativeFile) (outBaseDir, outRelativeFile) verbosity -> do
29+ (bnfcProg,_,_) <- requireProgramVersion verbosity bnfcProgram (orLaterVersion (Version [2,4,2] [])) (withPrograms lbi)
30+ (happyProg,_,_) <- requireProgramVersion verbosity happyProgram (withinVersion (Version [1] [])) (withPrograms lbi)
31+ (alexProg,_,_) <- requireProgramVersion verbosity alexProgram (withinVersion (Version [2] [])) (withPrograms lbi)
32+ let back = joinPath (replicate (length (splitDirectories outBaseDir)) "..")
33+ scope' = concat (intersperse "." (splitDirectories (takeDirectory outRelativeFile)))
34+ scope = scope' ++ "." ++ takeFileName (dropExtension outRelativeFile)
35+ bracket (setCurrentDirectory outBaseDir) (\_ -> setCurrentDirectory back) $ \_ -> do
36+ rawSystemProgram verbosity bnfcProg
37+ [ "-haskell"
38+ , "-alex2"
39+ , "-d"
40+ , "-p", scope'
41+ , back </> inBaseDir </> inRelativeFile
42+ ]
43+ writeFile outRelativeFile $
44+ "module " ++ scope ++ "\n" ++
45+ " ( module " ++ scope ++ ".Abs\n" ++
46+ " , module " ++ scope ++ ".Lex\n" ++
47+ " , module " ++ scope ++ ".Par\n" ++
48+ " , module " ++ scope ++ ".Print\n" ++
49+ " , module " ++ scope ++ ".ErrM\n" ++
50+ " , ParseFun, run\n" ++
51+ " )\n" ++
52+ " where\n" ++
53+ "import " ++ scope ++ ".Abs\n" ++
54+ "import " ++ scope ++ ".Lex\n" ++
55+ "import " ++ scope ++ ".Par\n" ++
56+ "import " ++ scope ++ ".Print\n" ++
57+ "import " ++ scope ++ ".ErrM\n" ++
58+ "\n" ++
59+ "type ParseFun a = [Token] -> Err a\n" ++
60+ "\n" ++
61+ "run :: Monad m => ParseFun a -> String -> m a\n" ++
62+ "run p s = case p (myLexer s) of\n" ++
63+ " Bad err -> fail err\n" ++
64+ " Ok tree -> return tree\n"
65+ rawSystemProgram verbosity happyProg
66+ [ "-gca"
67+ , dropExtension outRelativeFile </> "Par.y"
68+ ]
69+ rawSystemProgram verbosity alexProg
70+ [ "-g"
71+ , dropExtension outRelativeFile </> "Lex.x"
72+ ]
73+ }
Setup.lhsdeleted−8
@@ -1,8 +0,0 @@
1−#!/usr/bin/env runhaskell
2−
3−> module Main (main) where
4−>
5−> import Distribution.Simple
6−>
7−> main :: IO ()
8−> main = defaultMain
cabal2nix.cabal+2−4
@@ -58,6 +58,7 @@ Executable hackage4nix
5858 hs-source-dirs: src
5959 Build-Depends: base >= 3 && < 5, Cabal >= 1.8, pretty, filepath, directory, bytestring,
6060 regex-posix, mtl, containers, array
61+ Build-Tools: BNFC == 2.4.*, happy == 1.*, alex == 2.*
6162 Extensions: PatternGuards
6263 other-modules: Cabal2Nix.Pretty
6364 Cabal2Nix.License
@@ -66,7 +67,4 @@ Executable hackage4nix
6667 Cabal2Nix.Package
6768 Cabal2Nix.Hackage
6869 Hackage4Nix.Nix
69− Hackage4Nix.Nix.Abs
70− Hackage4Nix.Nix.ErrM
71− Hackage4Nix.Nix.Lex
72− Hackage4Nix.Nix.Par
70+ Language.Nix.Expr
src/Hackage4Nix/Nix.hs+1−11
@@ -1,9 +1,6 @@
11module Hackage4Nix.Nix ( parseNixExpr, nixExpr2CabalExpr ) where
22
3−import Hackage4Nix.Nix.Lex
4−import Hackage4Nix.Nix.Par
5−import Hackage4Nix.Nix.ErrM
6−import Hackage4Nix.Nix.Abs
3+import Language.Nix.Expr
74import Cabal2Nix.Package
85import Data.List
96import Distribution.Package
@@ -81,10 +78,3 @@ flattenReference (Reference rs) = concat (intersperse "." [ r | Ident r <- rs ])
8178
8279parseNixExpr :: Monad m => String -> m Expr
8380parseNixExpr = run pExpr
84−
85−type ParseFun a = [Token] -> Err a
86−
87−run :: Monad m => ParseFun a -> String -> m a
88−run p s = case p (myLexer s) of
89− Bad err -> fail err
90− Ok tree -> return tree
src/Hackage4Nix/Nix/Abs.hsdeleted−46
@@ -1,46 +0,0 @@
1−module Hackage4Nix.Nix.Abs where
2−
3−-- Haskell module generated by the BNF converter
4−
5−
6−newtype Ident = Ident String deriving (Eq,Ord,Show)
7−newtype QString = QString String deriving (Eq,Ord,Show)
8−newtype URL = URL String deriving (Eq,Ord,Show)
9−newtype Path = Path String deriving (Eq,Ord,Show)
10−data Expr =
11− Expr [Argument] Argument Dictionary
12− deriving (Eq,Ord,Show)
13−
14−data Argument =
15− Argument Ident
16− deriving (Eq,Ord,Show)
17−
18−data Dictionary =
19− Dictionary [Attribute]
20− deriving (Eq,Ord,Show)
21−
22−data Attribute =
23− Attribute Reference Value
24− deriving (Eq,Ord,Show)
25−
26−data Reference =
27− Reference [Ident]
28− deriving (Eq,Ord,Show)
29−
30−data Value =
31− StringV String
32− | QStringV QString
33− | URLV URL
34− | PathV Path
35− | BoolV Boolean
36− | AttributeV Reference
37− | ListV [Value]
38− | DictionaryV Dictionary
39− | FunctionV Reference Dictionary
40− deriving (Eq,Ord,Show)
41−
42−data Boolean =
43− Yes
44− | No
45− deriving (Eq,Ord,Show)
46−
src/Hackage4Nix/Nix/ErrM.hsdeleted−26
@@ -1,26 +0,0 @@
1−-- BNF Converter: Error Monad
2−-- Copyright (C) 2004 Author: Aarne Ranta
3−
4−-- This file comes with NO WARRANTY and may be used FOR ANY PURPOSE.
5−module Hackage4Nix.Nix.ErrM where
6−
7−-- the Error monad: like Maybe type with error msgs
8−
9−import Control.Monad (MonadPlus(..), liftM)
10−
11−data Err a = Ok a | Bad String
12− deriving (Read, Show, Eq, Ord)
13−
14−instance Monad Err where
15− return = Ok
16− fail = Bad
17− Ok a >>= f = f a
18− Bad s >>= f = Bad s
19−
20−instance Functor Err where
21− fmap = liftM
22−
23−instance MonadPlus Err where
24− mzero = Bad "Err.mzero"
25− mplus (Bad _) y = y
26− mplus x _ = x
src/Hackage4Nix/Nix/Lex.hsdeleted−351
@@ -1,351 +0,0 @@
1−{-# LANGUAGE CPP,MagicHash #-}
2−{-# LINE 3 "Hackage4Nix/Nix/Lex.x" #-}
3−
4−{-# OPTIONS -fno-warn-incomplete-patterns #-}
5−module Hackage4Nix.Nix.Lex where
6−
7−
8−
9−
10−#if __GLASGOW_HASKELL__ >= 603
11−#include "ghcconfig.h"
12−#elif defined(__GLASGOW_HASKELL__)
13−#include "config.h"
14−#endif
15−#if __GLASGOW_HASKELL__ >= 503
16−import Data.Array
17−import Data.Char (ord)
18−import Data.Array.Base (unsafeAt)
19−#else
20−import Array
21−import Char (ord)
22−#endif
23−#if __GLASGOW_HASKELL__ >= 503
24−import GHC.Exts
25−#else
26−import GlaExts
27−#endif
28−alex_base :: AlexAddr
29−alex_base = AlexA# "\xf8\xff\xff\xff\xfc\xff\xff\xff\xfd\xff\xff\xff\xde\xff\xff\xff\x00\x00\x00\x00\xdf\xff\xff\xff\xe0\xff\xff\xff\xe1\xff\xff\xff\xe2\xff\xff\xff\xe3\xff\xff\xff\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xff\xff\xff\xa3\xff\xff\xff\xd1\x00\x00\x00\xa1\x01\x00\x00\x71\x02\x00\x00\x41\x03\x00\x00\x11\x04\x00\x00\xac\xff\xff\xff\xd5\xff\xff\xff\xb7\xff\xff\xff\xab\xff\xff\xff\xb5\xff\xff\xff\xad\xff\xff\xff\xc1\xff\xff\xff\xb1\xff\xff\xff\xc0\xff\xff\xff\xbb\xff\xff\xff\xbd\xff\xff\xff\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\xf1\x00\x00\x00\xc1\x01\x00\x00\xe1\x04\x00\x00\xb1\x05\x00\x00\x25\x00\x00\x00\x27\x00\x00\x00\x91\x02\x00\x00\x61\x03\x00\x00\x81\x06\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x93\x00\x00\x00\x4a\x04\x00\x00"#
30−
31−alex_table :: AlexAddr
32−alex_table = AlexA# "\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\xff\xff\xff\xff\x06\x00\x06\x00\x05\x00\x06\x00\x06\x00\x07\x00\x03\x00\x04\x00\x14\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x2b\x00\x15\x00\x0a\x00\x16\x00\x2e\x00\x01\x00\x17\x00\x18\x00\x19\x00\x23\x00\x0b\x00\x0b\x00\x1b\x00\x1a\x00\x0b\x00\x1c\x00\x0d\x00\x09\x00\x0a\x00\x1d\x00\x1e\x00\x0c\x00\x1f\x00\x22\x00\x22\x00\x00\x00\x1f\x00\x20\x00\x0b\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x0b\x00\x25\x00\x0b\x00\x28\x00\x00\x00\x00\x00\x26\x00\x26\x00\x10\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x30\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x30\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\xff\xff\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\xff\xff\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x11\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\xff\xff\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x27\x00\x12\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\xff\xff\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x13\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2f\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x0f\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x00\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x00\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x00\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00"#
33−
34−alex_check :: AlexAddr
35−alex_check = AlexA# "\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2f\x00\x2f\x00\x6d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2f\x00\x6b\x00\x20\x00\x44\x00\x22\x00\x23\x00\x65\x00\x72\x00\x69\x00\x27\x00\x28\x00\x29\x00\x61\x00\x76\x00\x2c\x00\x74\x00\x2e\x00\x2f\x00\x20\x00\x69\x00\x6f\x00\x6e\x00\x27\x00\x27\x00\x27\x00\xff\xff\x27\x00\x27\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x2f\x00\x5d\x00\x2f\x00\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\xff\xff\x7d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x5c\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x3b\x00\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x3b\x00\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x3b\x00\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x3b\x00\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\x7d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x22\x00\xff\xff\xff\xff\xff\xff\x5f\x00\x27\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\x27\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xff\xff\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00"#
36−
37−alex_deflt :: AlexAddr
38−alex_deflt = AlexA# "\xff\xff\x02\x00\x02\x00\x08\x00\xff\xff\x08\x00\x08\x00\x08\x00\x08\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x21\x00\x21\x00\x21\x00\xff\xff\x24\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x2a\x00\xff\xff\xff\xff\x2f\x00\x2f\x00\xff\xff"#
39−
40−alex_accept = listArray (0::Int,48) [[],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAccSkip)],[],[],[],[],[],[(AlexAccSkip)],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_7))],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_4))],[],[],[],[],[(AlexAcc (alex_action_5))],[],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_7))],[],[],[(AlexAcc (alex_action_6))],[],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[],[],[]]
41−{-# LINE 40 "Hackage4Nix/Nix/Lex.x" #-}
42−
43−
44−tok f p s = f p s
45−
46−share :: String -> String
47−share = id
48−
49−data Tok =
50− TS !String !Int -- reserved words and symbols
51− | TL !String -- string literals
52− | TI !String -- integer literals
53− | TV !String -- identifiers
54− | TD !String -- double precision float literals
55− | TC !String -- character literals
56− | T_QString !String
57− | T_URL !String
58− | T_Path !String
59−
60− deriving (Eq,Show,Ord)
61−
62−data Token =
63− PT Posn Tok
64− | Err Posn
65− deriving (Eq,Show,Ord)
66−
67−tokenPos (PT (Pn _ l _) _ :_) = "line " ++ show l
68−tokenPos (Err (Pn _ l _) :_) = "line " ++ show l
69−tokenPos _ = "end of file"
70−
71−posLineCol (Pn _ l c) = (l,c)
72−mkPosToken t@(PT p _) = (posLineCol p, prToken t)
73−
74−prToken t = case t of
75− PT _ (TS s _) -> s
76− PT _ (TL s) -> s
77− PT _ (TI s) -> s
78− PT _ (TV s) -> s
79− PT _ (TD s) -> s
80− PT _ (TC s) -> s
81− PT _ (T_QString s) -> s
82− PT _ (T_URL s) -> s
83− PT _ (T_Path s) -> s
84−
85−
86−data BTree = N | B String Tok BTree BTree deriving (Show)
87−
88−eitherResIdent :: (String -> Tok) -> String -> Tok
89−eitherResIdent tv s = treeFind resWords
90− where
91− treeFind N = tv s
92− treeFind (B a t left right) | s < a = treeFind left
93− | s > a = treeFind right
94− | s == a = t
95−
96−resWords = b "[" 8 (b "." 4 (b ")" 2 (b "(" 1 N N) (b "," 3 N N)) (b ";" 6 (b ":" 5 N N) (b "=" 7 N N))) (b "true" 12 (b "cabal.mkDerivation" 10 (b "]" 9 N N) (b "false" 11 N N)) (b "}" 14 (b "{" 13 N N) N))
97− where b s n = let bs = id s
98− in B bs (TS bs n)
99−
100−unescapeInitTail :: String -> String
101−unescapeInitTail = id . unesc . tail . id where
102− unesc s = case s of
103− '\\':c:cs | elem c ['\"', '\\', '\''] -> c : unesc cs
104− '\\':'n':cs -> '\n' : unesc cs
105− '\\':'t':cs -> '\t' : unesc cs
106− '"':[] -> []
107− c:cs -> c : unesc cs
108− _ -> []
109−
110−-------------------------------------------------------------------
111−-- Alex wrapper code.
112−-- A modified "posn" wrapper.
113−-------------------------------------------------------------------
114−
115−data Posn = Pn !Int !Int !Int
116− deriving (Eq, Show,Ord)
117−
118−alexStartPos :: Posn
119−alexStartPos = Pn 0 1 1
120−
121−alexMove :: Posn -> Char -> Posn
122−alexMove (Pn a l c) '\t' = Pn (a+1) l (((c+7) `div` 8)*8+1)
123−alexMove (Pn a l c) '\n' = Pn (a+1) (l+1) 1
124−alexMove (Pn a l c) _ = Pn (a+1) l (c+1)
125−
126−type AlexInput = (Posn, -- current position,
127− Char, -- previous char
128− String) -- current input string
129−
130−tokens :: String -> [Token]
131−tokens str = go (alexStartPos, '\n', str)
132− where
133− go :: AlexInput -> [Token]
134− go inp@(pos, _, str) =
135− case alexScan inp 0 of
136− AlexEOF -> []
137− AlexError (pos, _, _) -> [Err pos]
138− AlexSkip inp' len -> go inp'
139− AlexToken inp' len act -> act pos (take len str) : (go inp')
140−
141−alexGetChar :: AlexInput -> Maybe (Char,AlexInput)
142−alexGetChar (p, _, s) =
143− case s of
144− [] -> Nothing
145− (c:s) ->
146− let p' = alexMove p c
147− in p' `seq` Just (c, (p', c, s))
148−
149−alexInputPrevChar :: AlexInput -> Char
150−alexInputPrevChar (p, c, s) = c
151−
152−alex_action_3 = tok (\p s -> PT p (eitherResIdent (TV . share) s))
153−alex_action_4 = tok (\p s -> PT p (eitherResIdent (T_QString . share) s))
154−alex_action_5 = tok (\p s -> PT p (eitherResIdent (T_URL . share) s))
155−alex_action_6 = tok (\p s -> PT p (eitherResIdent (T_Path . share) s))
156−alex_action_7 = tok (\p s -> PT p (eitherResIdent (TV . share) s))
157−alex_action_8 = tok (\p s -> PT p (TL $ share $ unescapeInitTail s))
158−{-# LINE 1 "templates/GenericTemplate.hs" #-}
159−{-# LINE 1 "templates/GenericTemplate.hs" #-}
160−{-# LINE 1 "<built-in>" #-}
161−{-# LINE 1 "<command-line>" #-}
162−{-# LINE 1 "templates/GenericTemplate.hs" #-}
163−-- -----------------------------------------------------------------------------
164−-- ALEX TEMPLATE
165−--
166−-- This code is in the PUBLIC DOMAIN; you may copy it freely and use
167−-- it for any purpose whatsoever.
168−
169−-- -----------------------------------------------------------------------------
170−-- INTERNALS and main scanner engine
171−
172−{-# LINE 37 "templates/GenericTemplate.hs" #-}
173−
174−{-# LINE 47 "templates/GenericTemplate.hs" #-}
175−
176−
177−data AlexAddr = AlexA# Addr#
178−
179−#if __GLASGOW_HASKELL__ < 503
180−uncheckedShiftL# = shiftL#
181−#endif
182−
183−{-# INLINE alexIndexInt16OffAddr #-}
184−alexIndexInt16OffAddr (AlexA# arr) off =
185−#ifdef WORDS_BIGENDIAN
186− narrow16Int# i
187− where
188− i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)
189− high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
190− low = int2Word# (ord# (indexCharOffAddr# arr off'))
191− off' = off *# 2#
192−#else
193− indexInt16OffAddr# arr off
194−#endif
195−
196−
197−
198−
199−
200−{-# INLINE alexIndexInt32OffAddr #-}
201−alexIndexInt32OffAddr (AlexA# arr) off =
202−#ifdef WORDS_BIGENDIAN
203− narrow32Int# i
204− where
205− i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`
206− (b2 `uncheckedShiftL#` 16#) `or#`
207− (b1 `uncheckedShiftL#` 8#) `or#` b0)
208− b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))
209− b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))
210− b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
211− b0 = int2Word# (ord# (indexCharOffAddr# arr off'))
212− off' = off *# 4#
213−#else
214− indexInt32OffAddr# arr off
215−#endif
216−
217−
218−
219−
220−
221−#if __GLASGOW_HASKELL__ < 503
222−quickIndex arr i = arr ! i
223−#else
224−-- GHC >= 503, unsafeAt is available from Data.Array.Base.
225−quickIndex = unsafeAt
226−#endif
227−
228−
229−
230−
231−-- -----------------------------------------------------------------------------
232−-- Main lexing routines
233−
234−data AlexReturn a
235− = AlexEOF
236− | AlexError !AlexInput
237− | AlexSkip !AlexInput !Int
238− | AlexToken !AlexInput !Int a
239−
240−-- alexScan :: AlexInput -> StartCode -> AlexReturn a
241−alexScan input (I# (sc))
242− = alexScanUser undefined input (I# (sc))
243−
244−alexScanUser user input (I# (sc))
245− = case alex_scan_tkn user input 0# input sc AlexNone of
246− (AlexNone, input') ->
247− case alexGetChar input of
248− Nothing ->
249−
250−
251−
252− AlexEOF
253− Just _ ->
254−
255−
256−
257− AlexError input'
258−
259− (AlexLastSkip input'' len, _) ->
260−
261−
262−
263− AlexSkip input'' len
264−
265− (AlexLastAcc k input''' len, _) ->
266−
267−
268−
269− AlexToken input''' len k
270−
271−
272−-- Push the input through the DFA, remembering the most recent accepting
273−-- state it encountered.
274−
275−alex_scan_tkn user orig_input len input s last_acc =
276− input `seq` -- strict in the input
277− let
278− new_acc = check_accs (alex_accept `quickIndex` (I# (s)))
279− in
280− new_acc `seq`
281− case alexGetChar input of
282− Nothing -> (new_acc, input)
283− Just (c, new_input) ->
284−
285−
286−
287− let
288− (base) = alexIndexInt32OffAddr alex_base s
289− ((I# (ord_c))) = ord c
290− (offset) = (base +# ord_c)
291− (check) = alexIndexInt16OffAddr alex_check offset
292−
293− (new_s) = if (offset >=# 0#) && (check ==# ord_c)
294− then alexIndexInt16OffAddr alex_table offset
295− else alexIndexInt16OffAddr alex_deflt s
296− in
297− case new_s of
298− -1# -> (new_acc, input)
299− -- on an error, we want to keep the input *before* the
300− -- character that failed, not after.
301− _ -> alex_scan_tkn user orig_input (len +# 1#)
302− new_input new_s new_acc
303−
304− where
305− check_accs [] = last_acc
306− check_accs (AlexAcc a : _) = AlexLastAcc a input (I# (len))
307− check_accs (AlexAccSkip : _) = AlexLastSkip input (I# (len))
308− check_accs (AlexAccPred a predx : rest)
309− | predx user orig_input (I# (len)) input
310− = AlexLastAcc a input (I# (len))
311− check_accs (AlexAccSkipPred predx : rest)
312− | predx user orig_input (I# (len)) input
313− = AlexLastSkip input (I# (len))
314− check_accs (_ : rest) = check_accs rest
315−
316−data AlexLastAcc a
317− = AlexNone
318− | AlexLastAcc a !AlexInput !Int
319− | AlexLastSkip !AlexInput !Int
320−
321−data AlexAcc a user
322− = AlexAcc a
323− | AlexAccSkip
324− | AlexAccPred a (AlexAccPred user)
325− | AlexAccSkipPred (AlexAccPred user)
326−
327−type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool
328−
329−-- -----------------------------------------------------------------------------
330−-- Predicates on a rule
331−
332−alexAndPred p1 p2 user in1 len in2
333− = p1 user in1 len in2 && p2 user in1 len in2
334−
335−--alexPrevCharIsPred :: Char -> AlexAccPred _
336−alexPrevCharIs c _ input _ _ = c == alexInputPrevChar input
337−
338−--alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _
339−alexPrevCharIsOneOf arr _ input _ _ = arr ! alexInputPrevChar input
340−
341−--alexRightContext :: Int -> AlexAccPred _
342−alexRightContext (I# (sc)) user _ _ input =
343− case alex_scan_tkn user input 0# input sc AlexNone of
344− (AlexNone, _) -> False
345− _ -> True
346− -- TODO: there's no need to find the longest
347− -- match when checking the right context, just
348− -- the first match will do.
349−
350−-- used by wrappers
351−iUnbox (I# (i)) = i
src/Hackage4Nix/Nix/Par.hsdeleted−755
@@ -1,755 +0,0 @@
1−{-# OPTIONS_GHC -w #-}
2−{-# OPTIONS -fglasgow-exts -cpp #-}
3−{-# OPTIONS -fno-warn-incomplete-patterns -fno-warn-overlapping-patterns #-}
4−module Hackage4Nix.Nix.Par where
5−import Hackage4Nix.Nix.Abs
6−import Hackage4Nix.Nix.Lex
7−import Hackage4Nix.Nix.ErrM
8−import qualified Data.Array as Happy_Data_Array
9−import qualified GHC.Exts as Happy_GHC_Exts
10−
11−-- parser produced by Happy Version 1.18.6
12−
13−newtype HappyAbsSyn = HappyAbsSyn HappyAny
14−#if __GLASGOW_HASKELL__ >= 607
15−type HappyAny = Happy_GHC_Exts.Any
16−#else
17−type HappyAny = forall a . a
18−#endif
19−happyIn14 :: (Ident) -> (HappyAbsSyn )
20−happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x
21−{-# INLINE happyIn14 #-}
22−happyOut14 :: (HappyAbsSyn ) -> (Ident)
23−happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
24−{-# INLINE happyOut14 #-}
25−happyIn15 :: (String) -> (HappyAbsSyn )
26−happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x
27−{-# INLINE happyIn15 #-}
28−happyOut15 :: (HappyAbsSyn ) -> (String)
29−happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
30−{-# INLINE happyOut15 #-}
31−happyIn16 :: (QString) -> (HappyAbsSyn )
32−happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x
33−{-# INLINE happyIn16 #-}
34−happyOut16 :: (HappyAbsSyn ) -> (QString)
35−happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
36−{-# INLINE happyOut16 #-}
37−happyIn17 :: (URL) -> (HappyAbsSyn )
38−happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x
39−{-# INLINE happyIn17 #-}
40−happyOut17 :: (HappyAbsSyn ) -> (URL)
41−happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
42−{-# INLINE happyOut17 #-}
43−happyIn18 :: (Path) -> (HappyAbsSyn )
44−happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x
45−{-# INLINE happyIn18 #-}
46−happyOut18 :: (HappyAbsSyn ) -> (Path)
47−happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
48−{-# INLINE happyOut18 #-}
49−happyIn19 :: (Expr) -> (HappyAbsSyn )
50−happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x
51−{-# INLINE happyIn19 #-}
52−happyOut19 :: (HappyAbsSyn ) -> (Expr)
53−happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
54−{-# INLINE happyOut19 #-}
55−happyIn20 :: (Argument) -> (HappyAbsSyn )
56−happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x
57−{-# INLINE happyIn20 #-}
58−happyOut20 :: (HappyAbsSyn ) -> (Argument)
59−happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
60−{-# INLINE happyOut20 #-}
61−happyIn21 :: ([Argument]) -> (HappyAbsSyn )
62−happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x
63−{-# INLINE happyIn21 #-}
64−happyOut21 :: (HappyAbsSyn ) -> ([Argument])
65−happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
66−{-# INLINE happyOut21 #-}
67−happyIn22 :: (Dictionary) -> (HappyAbsSyn )
68−happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x
69−{-# INLINE happyIn22 #-}
70−happyOut22 :: (HappyAbsSyn ) -> (Dictionary)
71−happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
72−{-# INLINE happyOut22 #-}
73−happyIn23 :: (Attribute) -> (HappyAbsSyn )
74−happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x
75−{-# INLINE happyIn23 #-}
76−happyOut23 :: (HappyAbsSyn ) -> (Attribute)
77−happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
78−{-# INLINE happyOut23 #-}
79−happyIn24 :: ([Attribute]) -> (HappyAbsSyn )
80−happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x
81−{-# INLINE happyIn24 #-}
82−happyOut24 :: (HappyAbsSyn ) -> ([Attribute])
83−happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x
84−{-# INLINE happyOut24 #-}
85−happyIn25 :: (Reference) -> (HappyAbsSyn )
86−happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x
87−{-# INLINE happyIn25 #-}
88−happyOut25 :: (HappyAbsSyn ) -> (Reference)
89−happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x
90−{-# INLINE happyOut25 #-}
91−happyIn26 :: ([Ident]) -> (HappyAbsSyn )
92−happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x
93−{-# INLINE happyIn26 #-}
94−happyOut26 :: (HappyAbsSyn ) -> ([Ident])
95−happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x
96−{-# INLINE happyOut26 #-}
97−happyIn27 :: (Value) -> (HappyAbsSyn )
98−happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x
99−{-# INLINE happyIn27 #-}
100−happyOut27 :: (HappyAbsSyn ) -> (Value)
101−happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x
102−{-# INLINE happyOut27 #-}
103−happyIn28 :: ([Value]) -> (HappyAbsSyn )
104−happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x
105−{-# INLINE happyIn28 #-}
106−happyOut28 :: (HappyAbsSyn ) -> ([Value])
107−happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x
108−{-# INLINE happyOut28 #-}
109−happyIn29 :: (Boolean) -> (HappyAbsSyn )
110−happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x
111−{-# INLINE happyIn29 #-}
112−happyOut29 :: (HappyAbsSyn ) -> (Boolean)
113−happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x
114−{-# INLINE happyOut29 #-}
115−happyInTok :: (Token) -> (HappyAbsSyn )
116−happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
117−{-# INLINE happyInTok #-}
118−happyOutTok :: (HappyAbsSyn ) -> (Token)
119−happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
120−{-# INLINE happyOutTok #-}
121−
122−
123−happyActOffsets :: HappyAddr
124−happyActOffsets = HappyA# "\x80\x00\x7d\x00\x7d\x00\x7e\x00\x7a\x00\x00\x00\x7a\x00\x7a\x00\x52\x00\x00\x00\x1b\x00\x7a\x00\x00\x00\x79\x00\x00\x00\x00\x00\x37\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x75\x00\x5e\x00\x75\x00\x76\x00\x72\x00\x00\x00\x78\x00\x70\x00\x70\x00\x70\x00\x6f\x00\x6e\x00\x6b\x00\x52\x00\x73\x00\xf8\xff\x46\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x00\x6d\x00\x74\x00\x65\x00\x66\x00\x5c\x00\x5a\x00\x00\x00\x00\x00"#
125−
126−happyGotoOffsets :: HappyAddr
127−happyGotoOffsets = HappyA# "\x56\x00\x6c\x00\x6a\x00\x48\x00\x1f\x00\x4a\x00\x0b\x00\x41\x00\x31\x00\x29\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x28\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x60\x00\x11\x00\x00\x00\x0f\x00\x01\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00"#
128−
129−happyDefActions :: HappyAddr
130−happyDefActions = HappyA# "\x00\x00\x00\x00\xed\xff\x00\x00\x00\x00\xe8\xff\x00\x00\x00\x00\x00\x00\xda\xff\x00\x00\x00\x00\xf4\xff\x00\x00\xd7\xff\xd8\xff\x00\x00\xe5\xff\xe3\xff\xe2\xff\xe1\xff\xe0\xff\xdc\xff\xde\xff\xe6\xff\x00\x00\xdf\xff\xda\xff\xe8\xff\xf3\xff\xf2\xff\xf1\xff\xf0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\xff\xec\xff\x00\x00\x00\x00\x00\x00\xed\xff\x00\x00\xed\xff\x00\x00\x00\x00\x00\x00\x00\x00\xdb\xff\x00\x00\xd9\xff\xe4\xff\xdd\xff\xea\xff\xe7\xff\xe9\xff\xeb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff"#
131−
132−happyCheck :: HappyAddr
133−happyCheck = HappyA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0e\x00\x0f\x00\x0a\x00\x08\x00\x08\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0b\x00\x0c\x00\x09\x00\x08\x00\x0b\x00\x0c\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0b\x00\x0c\x00\x09\x00\x08\x00\x0b\x00\x0c\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x0e\x00\x0e\x00\x08\x00\x08\x00\x0f\x00\x0c\x00\x0b\x00\x0c\x00\x0d\x00\x08\x00\x0f\x00\x00\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x06\x00\x15\x00\x0c\x00\x08\x00\x09\x00\x08\x00\x0b\x00\x0c\x00\x0d\x00\x0a\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x08\x00\x05\x00\x02\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x06\x00\x07\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\x0f\x00\x06\x00\x07\x00\x06\x00\x07\x00\x06\x00\x15\x00\x0f\x00\x01\x00\x05\x00\x0a\x00\x0f\x00\x06\x00\x0f\x00\x03\x00\x0e\x00\x07\x00\x0f\x00\x04\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x15\x00\xff\xff\x15\x00\xff\xff\x0f\x00\x15\x00\x0d\x00\x0f\x00\x0d\x00\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
134−
135−happyTable :: HappyAddr
136−happyTable = HappyA# "\x00\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x39\x00\x0d\x00\x31\x00\x16\x00\x42\x00\x11\x00\x17\x00\x18\x00\x35\x00\x11\x00\x1a\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x22\x00\x18\x00\x30\x00\x16\x00\x25\x00\x18\x00\x17\x00\x18\x00\x3a\x00\x11\x00\x1a\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x0f\x00\x10\x00\x24\x00\x16\x00\x25\x00\x18\x00\x17\x00\x18\x00\x35\x00\x11\x00\x1a\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x32\x00\x10\x00\x33\x00\x16\x00\x0d\x00\x36\x00\x17\x00\x18\x00\x19\x00\x1c\x00\x1a\x00\x11\x00\x0f\x00\x10\x00\x1d\x00\x27\x00\x0d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x40\x00\xff\xff\x21\x00\x1c\x00\x38\x00\x26\x00\x0f\x00\x10\x00\x1d\x00\x23\x00\x0d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x1c\x00\x2b\x00\x44\x00\x0f\x00\x10\x00\x1d\x00\x27\x00\x0d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x28\x00\x3b\x00\x27\x00\x1d\x00\x27\x00\x42\x00\x27\x00\x0d\x00\x28\x00\x2d\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x0d\x00\x40\x00\x3e\x00\x3f\x00\x0d\x00\x3a\x00\x0d\x00\x2f\x00\x3d\x00\x30\x00\x0d\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\xff\xff\x00\x00\xff\xff\x00\x00\x0d\x00\xff\xff\x1d\x00\x0d\x00\x2d\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
137−
138−happyReduceArr = Happy_Data_Array.array (11, 40) [
139− (11 , happyReduce_11),
140− (12 , happyReduce_12),
141− (13 , happyReduce_13),
142− (14 , happyReduce_14),
143− (15 , happyReduce_15),
144− (16 , happyReduce_16),
145− (17 , happyReduce_17),
146− (18 , happyReduce_18),
147− (19 , happyReduce_19),
148− (20 , happyReduce_20),
149− (21 , happyReduce_21),
150− (22 , happyReduce_22),
151− (23 , happyReduce_23),
152− (24 , happyReduce_24),
153− (25 , happyReduce_25),
154− (26 , happyReduce_26),
155− (27 , happyReduce_27),
156− (28 , happyReduce_28),
157− (29 , happyReduce_29),
158− (30 , happyReduce_30),
159− (31 , happyReduce_31),
160− (32 , happyReduce_32),
161− (33 , happyReduce_33),
162− (34 , happyReduce_34),
163− (35 , happyReduce_35),
164− (36 , happyReduce_36),
165− (37 , happyReduce_37),
166− (38 , happyReduce_38),
167− (39 , happyReduce_39),
168− (40 , happyReduce_40)
169− ]
170−
171−happy_n_terms = 22 :: Int
172−happy_n_nonterms = 16 :: Int
173−
174−happyReduce_11 = happySpecReduce_1 0# happyReduction_11
175−happyReduction_11 happy_x_1
176− = case happyOutTok happy_x_1 of { (PT _ (TV happy_var_1)) ->
177− happyIn14
178− (Ident happy_var_1
179− )}
180−
181−happyReduce_12 = happySpecReduce_1 1# happyReduction_12
182−happyReduction_12 happy_x_1
183− = case happyOutTok happy_x_1 of { (PT _ (TL happy_var_1)) ->
184− happyIn15
185− (happy_var_1
186− )}
187−
188−happyReduce_13 = happySpecReduce_1 2# happyReduction_13
189−happyReduction_13 happy_x_1
190− = case happyOutTok happy_x_1 of { (PT _ (T_QString happy_var_1)) ->
191− happyIn16
192− (QString (happy_var_1)
193− )}
194−
195−happyReduce_14 = happySpecReduce_1 3# happyReduction_14
196−happyReduction_14 happy_x_1
197− = case happyOutTok happy_x_1 of { (PT _ (T_URL happy_var_1)) ->
198− happyIn17
199− (URL (happy_var_1)
200− )}
201−
202−happyReduce_15 = happySpecReduce_1 4# happyReduction_15
203−happyReduction_15 happy_x_1
204− = case happyOutTok happy_x_1 of { (PT _ (T_Path happy_var_1)) ->
205− happyIn18
206− (Path (happy_var_1)
207− )}
208−
209−happyReduce_16 = happyReduce 10# 5# happyReduction_16
210−happyReduction_16 (happy_x_10 `HappyStk`
211− happy_x_9 `HappyStk`
212− happy_x_8 `HappyStk`
213− happy_x_7 `HappyStk`
214− happy_x_6 `HappyStk`
215− happy_x_5 `HappyStk`
216− happy_x_4 `HappyStk`
217− happy_x_3 `HappyStk`
218− happy_x_2 `HappyStk`
219− happy_x_1 `HappyStk`
220− happyRest)
221− = case happyOut21 happy_x_2 of { happy_var_2 ->
222− case happyOut20 happy_x_7 of { happy_var_7 ->
223− case happyOut22 happy_x_9 of { happy_var_9 ->
224− happyIn19
225− (Expr happy_var_2 happy_var_7 happy_var_9
226− ) `HappyStk` happyRest}}}
227−
228−happyReduce_17 = happySpecReduce_1 6# happyReduction_17
229−happyReduction_17 happy_x_1
230− = case happyOut14 happy_x_1 of { happy_var_1 ->
231− happyIn20
232− (Argument happy_var_1
233− )}
234−
235−happyReduce_18 = happySpecReduce_0 7# happyReduction_18
236−happyReduction_18 = happyIn21
237− ([]
238− )
239−
240−happyReduce_19 = happySpecReduce_1 7# happyReduction_19
241−happyReduction_19 happy_x_1
242− = case happyOut20 happy_x_1 of { happy_var_1 ->
243− happyIn21
244− ((:[]) happy_var_1
245− )}
246−
247−happyReduce_20 = happySpecReduce_3 7# happyReduction_20
248−happyReduction_20 happy_x_3
249− happy_x_2
250− happy_x_1
251− = case happyOut20 happy_x_1 of { happy_var_1 ->
252− case happyOut21 happy_x_3 of { happy_var_3 ->
253− happyIn21
254− ((:) happy_var_1 happy_var_3
255− )}}
256−
257−happyReduce_21 = happySpecReduce_3 8# happyReduction_21
258−happyReduction_21 happy_x_3
259− happy_x_2
260− happy_x_1
261− = case happyOut24 happy_x_2 of { happy_var_2 ->
262− happyIn22
263− (Dictionary (reverse happy_var_2)
264− )}
265−
266−happyReduce_22 = happySpecReduce_3 9# happyReduction_22
267−happyReduction_22 happy_x_3
268− happy_x_2
269− happy_x_1
270− = case happyOut25 happy_x_1 of { happy_var_1 ->
271− case happyOut27 happy_x_3 of { happy_var_3 ->
272− happyIn23
273− (Attribute happy_var_1 happy_var_3
274− )}}
275−
276−happyReduce_23 = happySpecReduce_0 10# happyReduction_23
277−happyReduction_23 = happyIn24
278− ([]
279− )
280−
281−happyReduce_24 = happySpecReduce_3 10# happyReduction_24
282−happyReduction_24 happy_x_3
283− happy_x_2
284− happy_x_1
285− = case happyOut24 happy_x_1 of { happy_var_1 ->
286− case happyOut23 happy_x_2 of { happy_var_2 ->
287− happyIn24
288− (flip (:) happy_var_1 happy_var_2
289− )}}
290−
291−happyReduce_25 = happySpecReduce_1 11# happyReduction_25
292−happyReduction_25 happy_x_1
293− = case happyOut26 happy_x_1 of { happy_var_1 ->
294− happyIn25
295− (Reference happy_var_1
296− )}
297−
298−happyReduce_26 = happySpecReduce_1 12# happyReduction_26
299−happyReduction_26 happy_x_1
300− = case happyOut14 happy_x_1 of { happy_var_1 ->
301− happyIn26
302− ((:[]) happy_var_1
303− )}
304−
305−happyReduce_27 = happySpecReduce_3 12# happyReduction_27
306−happyReduction_27 happy_x_3
307− happy_x_2
308− happy_x_1
309− = case happyOut14 happy_x_1 of { happy_var_1 ->
310− case happyOut26 happy_x_3 of { happy_var_3 ->
311− happyIn26
312− ((:) happy_var_1 happy_var_3
313− )}}
314−
315−happyReduce_28 = happySpecReduce_1 13# happyReduction_28
316−happyReduction_28 happy_x_1
317− = case happyOut15 happy_x_1 of { happy_var_1 ->
318− happyIn27
319− (StringV happy_var_1
320− )}
321−
322−happyReduce_29 = happySpecReduce_1 13# happyReduction_29
323−happyReduction_29 happy_x_1
324− = case happyOut16 happy_x_1 of { happy_var_1 ->
325− happyIn27
326− (QStringV happy_var_1
327− )}
328−
329−happyReduce_30 = happySpecReduce_1 13# happyReduction_30
330−happyReduction_30 happy_x_1
331− = case happyOut17 happy_x_1 of { happy_var_1 ->
332− happyIn27
333− (URLV happy_var_1
334− )}
335−
336−happyReduce_31 = happySpecReduce_1 13# happyReduction_31
337−happyReduction_31 happy_x_1
338− = case happyOut18 happy_x_1 of { happy_var_1 ->
339− happyIn27
340− (PathV happy_var_1
341− )}
342−
343−happyReduce_32 = happySpecReduce_1 13# happyReduction_32
344−happyReduction_32 happy_x_1
345− = case happyOut29 happy_x_1 of { happy_var_1 ->
346− happyIn27
347− (BoolV happy_var_1
348− )}
349−
350−happyReduce_33 = happySpecReduce_1 13# happyReduction_33
351−happyReduction_33 happy_x_1
352− = case happyOut25 happy_x_1 of { happy_var_1 ->
353− happyIn27
354− (AttributeV happy_var_1
355− )}
356−
357−happyReduce_34 = happySpecReduce_3 13# happyReduction_34
358−happyReduction_34 happy_x_3
359− happy_x_2
360− happy_x_1
361− = case happyOut28 happy_x_2 of { happy_var_2 ->
362− happyIn27
363− (ListV (reverse happy_var_2)
364− )}
365−
366−happyReduce_35 = happySpecReduce_1 13# happyReduction_35
367−happyReduction_35 happy_x_1
368− = case happyOut22 happy_x_1 of { happy_var_1 ->
369− happyIn27
370− (DictionaryV happy_var_1
371− )}
372−
373−happyReduce_36 = happySpecReduce_2 13# happyReduction_36
374−happyReduction_36 happy_x_2
375− happy_x_1
376− = case happyOut25 happy_x_1 of { happy_var_1 ->
377− case happyOut22 happy_x_2 of { happy_var_2 ->
378− happyIn27
379− (FunctionV happy_var_1 happy_var_2
380− )}}
381−
382−happyReduce_37 = happySpecReduce_0 14# happyReduction_37
383−happyReduction_37 = happyIn28
384− ([]
385− )
386−
387−happyReduce_38 = happySpecReduce_2 14# happyReduction_38
388−happyReduction_38 happy_x_2
389− happy_x_1
390− = case happyOut28 happy_x_1 of { happy_var_1 ->
391− case happyOut27 happy_x_2 of { happy_var_2 ->
392− happyIn28
393− (flip (:) happy_var_1 happy_var_2
394− )}}
395−
396−happyReduce_39 = happySpecReduce_1 15# happyReduction_39
397−happyReduction_39 happy_x_1
398− = happyIn29
399− (Yes
400− )
401−
402−happyReduce_40 = happySpecReduce_1 15# happyReduction_40
403−happyReduction_40 happy_x_1
404− = happyIn29
405− (No
406− )
407−
408−happyNewToken action sts stk [] =
409− happyDoAction 21# notHappyAtAll action sts stk []
410−
411−happyNewToken action sts stk (tk:tks) =
412− let cont i = happyDoAction i tk action sts stk tks in
413− case tk of {
414− PT _ (TS _ 1) -> cont 1#;
415− PT _ (TS _ 2) -> cont 2#;
416− PT _ (TS _ 3) -> cont 3#;
417− PT _ (TS _ 4) -> cont 4#;
418− PT _ (TS _ 5) -> cont 5#;
419− PT _ (TS _ 6) -> cont 6#;
420− PT _ (TS _ 7) -> cont 7#;
421− PT _ (TS _ 8) -> cont 8#;
422− PT _ (TS _ 9) -> cont 9#;
423− PT _ (TS _ 10) -> cont 10#;
424− PT _ (TS _ 11) -> cont 11#;
425− PT _ (TS _ 12) -> cont 12#;
426− PT _ (TS _ 13) -> cont 13#;
427− PT _ (TS _ 14) -> cont 14#;
428− PT _ (TV happy_dollar_dollar) -> cont 15#;
429− PT _ (TL happy_dollar_dollar) -> cont 16#;
430− PT _ (T_QString happy_dollar_dollar) -> cont 17#;
431− PT _ (T_URL happy_dollar_dollar) -> cont 18#;
432− PT _ (T_Path happy_dollar_dollar) -> cont 19#;
433− _ -> cont 20#;
434− _ -> happyError' (tk:tks)
435− }
436−
437−happyError_ tk tks = happyError' (tk:tks)
438−
439−happyThen :: () => Err a -> (a -> Err b) -> Err b
440−happyThen = (thenM)
441−happyReturn :: () => a -> Err a
442−happyReturn = (returnM)
443−happyThen1 m k tks = (thenM) m (\a -> k a tks)
444−happyReturn1 :: () => a -> b -> Err a
445−happyReturn1 = \a tks -> (returnM) a
446−happyError' :: () => [(Token)] -> Err a
447−happyError' = happyError
448−
449−pExpr tks = happySomeParser where
450− happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut19 x))
451−
452−pArgument tks = happySomeParser where
453− happySomeParser = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut20 x))
454−
455−pListArgument tks = happySomeParser where
456− happySomeParser = happyThen (happyParse 2# tks) (\x -> happyReturn (happyOut21 x))
457−
458−pDictionary tks = happySomeParser where
459− happySomeParser = happyThen (happyParse 3# tks) (\x -> happyReturn (happyOut22 x))
460−
461−pAttribute tks = happySomeParser where
462− happySomeParser = happyThen (happyParse 4# tks) (\x -> happyReturn (happyOut23 x))
463−
464−pListAttribute tks = happySomeParser where
465− happySomeParser = happyThen (happyParse 5# tks) (\x -> happyReturn (happyOut24 x))
466−
467−pReference tks = happySomeParser where
468− happySomeParser = happyThen (happyParse 6# tks) (\x -> happyReturn (happyOut25 x))
469−
470−pListIdent tks = happySomeParser where
471− happySomeParser = happyThen (happyParse 7# tks) (\x -> happyReturn (happyOut26 x))
472−
473−pValue tks = happySomeParser where
474− happySomeParser = happyThen (happyParse 8# tks) (\x -> happyReturn (happyOut27 x))
475−
476−pListValue tks = happySomeParser where
477− happySomeParser = happyThen (happyParse 9# tks) (\x -> happyReturn (happyOut28 x))
478−
479−pBoolean tks = happySomeParser where
480− happySomeParser = happyThen (happyParse 10# tks) (\x -> happyReturn (happyOut29 x))
481−
482−happySeq = happyDontSeq
483−
484−
485−returnM :: a -> Err a
486−returnM = return
487−
488−thenM :: Err a -> (a -> Err b) -> Err b
489−thenM = (>>=)
490−
491−happyError :: [Token] -> Err a
492−happyError ts =
493− Bad $ "syntax error at " ++ tokenPos ts ++
494− case ts of
495− [] -> []
496− [Err _] -> " due to lexer error"
497− _ -> " before " ++ unwords (map (id . prToken) (take 4 ts))
498−
499−myLexer = tokens
500−{-# LINE 1 "templates/GenericTemplate.hs" #-}
501−{-# LINE 1 "templates/GenericTemplate.hs" #-}
502−{-# LINE 1 "<built-in>" #-}
503−{-# LINE 1 "<command-line>" #-}
504−{-# LINE 1 "templates/GenericTemplate.hs" #-}
505−-- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp
506−
507−{-# LINE 30 "templates/GenericTemplate.hs" #-}
508−
509−
510−data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList
511−
512−
513−
514−
515−
516−{-# LINE 51 "templates/GenericTemplate.hs" #-}
517−
518−{-# LINE 61 "templates/GenericTemplate.hs" #-}
519−
520−{-# LINE 70 "templates/GenericTemplate.hs" #-}
521−
522−infixr 9 `HappyStk`
523−data HappyStk a = HappyStk a (HappyStk a)
524−
525−-----------------------------------------------------------------------------
526−-- starting the parse
527−
528−happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll
529−
530−-----------------------------------------------------------------------------
531−-- Accepting the parse
532−
533−-- If the current token is 0#, it means we've just accepted a partial
534−-- parse (a %partial parser). We must ignore the saved token on the top of
535−-- the stack in this case.
536−happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
537− happyReturn1 ans
538−happyAccept j tk st sts (HappyStk ans _) =
539− (happyTcHack j (happyTcHack st)) (happyReturn1 ans)
540−
541−-----------------------------------------------------------------------------
542−-- Arrays only: do the next action
543−
544−
545−
546−happyDoAction i tk st
547− = {- nothing -}
548−
549−
550− case action of
551− 0# -> {- nothing -}
552− happyFail i tk st
553− -1# -> {- nothing -}
554− happyAccept i tk st
555− n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
556−
557− (happyReduceArr Happy_Data_Array.! rule) i tk st
558− where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
559− n -> {- nothing -}
560−
561−
562− happyShift new_state i tk st
563− where (new_state) = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
564− where (off) = indexShortOffAddr happyActOffsets st
565− (off_i) = (off Happy_GHC_Exts.+# i)
566− check = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#))
567− then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==# i)
568− else False
569− (action)
570− | check = indexShortOffAddr happyTable off_i
571− | otherwise = indexShortOffAddr happyDefActions st
572−
573−{-# LINE 130 "templates/GenericTemplate.hs" #-}
574−
575−
576−indexShortOffAddr (HappyA# arr) off =
577− Happy_GHC_Exts.narrow16Int# i
578− where
579− i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)
580− high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))
581− low = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))
582− off' = off Happy_GHC_Exts.*# 2#
583−
584−
585−
586−
587−
588−data HappyAddr = HappyA# Happy_GHC_Exts.Addr#
589−
590−
591−
592−
593−-----------------------------------------------------------------------------
594−-- HappyState data type (not arrays)
595−
596−{-# LINE 163 "templates/GenericTemplate.hs" #-}
597−
598−-----------------------------------------------------------------------------
599−-- Shifting a token
600−
601−happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
602− let (i) = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
603−-- trace "shifting the error token" $
604− happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)
605−
606−happyShift new_state i tk st sts stk =
607− happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)
608−
609−-- happyReduce is specialised for the common cases.
610−
611−happySpecReduce_0 i fn 0# tk st sts stk
612− = happyFail 0# tk st sts stk
613−happySpecReduce_0 nt fn j tk st@((action)) sts stk
614− = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)
615−
616−happySpecReduce_1 i fn 0# tk st sts stk
617− = happyFail 0# tk st sts stk
618−happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')
619− = let r = fn v1 in
620− happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
621−
622−happySpecReduce_2 i fn 0# tk st sts stk
623− = happyFail 0# tk st sts stk
624−happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')
625− = let r = fn v1 v2 in
626− happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
627−
628−happySpecReduce_3 i fn 0# tk st sts stk
629− = happyFail 0# tk st sts stk
630−happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
631− = let r = fn v1 v2 v3 in
632− happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
633−
634−happyReduce k i fn 0# tk st sts stk
635− = happyFail 0# tk st sts stk
636−happyReduce k nt fn j tk st sts stk
637− = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of
638− sts1@((HappyCons (st1@(action)) (_))) ->
639− let r = fn stk in -- it doesn't hurt to always seq here...
640− happyDoSeq r (happyGoto nt j tk st1 sts1 r)
641−
642−happyMonadReduce k nt fn 0# tk st sts stk
643− = happyFail 0# tk st sts stk
644−happyMonadReduce k nt fn j tk st sts stk =
645− happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
646− where (sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))
647− drop_stk = happyDropStk k stk
648−
649−happyMonad2Reduce k nt fn 0# tk st sts stk
650− = happyFail 0# tk st sts stk
651−happyMonad2Reduce k nt fn j tk st sts stk =
652− happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
653− where (sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))
654− drop_stk = happyDropStk k stk
655−
656− (off) = indexShortOffAddr happyGotoOffsets st1
657− (off_i) = (off Happy_GHC_Exts.+# nt)
658− (new_state) = indexShortOffAddr happyTable off_i
659−
660−
661−
662−
663−happyDrop 0# l = l
664−happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t
665−
666−happyDropStk 0# l = l
667−happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs
668−
669−-----------------------------------------------------------------------------
670−-- Moving to a new state after a reduction
671−
672−
673−happyGoto nt j tk st =
674− {- nothing -}
675− happyDoAction j tk new_state
676− where (off) = indexShortOffAddr happyGotoOffsets st
677− (off_i) = (off Happy_GHC_Exts.+# nt)
678− (new_state) = indexShortOffAddr happyTable off_i
679−
680−
681−
682−
683−-----------------------------------------------------------------------------
684−-- Error recovery (0# is the error token)
685−
686−-- parse error if we are in recovery and we fail again
687−happyFail 0# tk old_st _ stk =
688−-- trace "failing" $
689− happyError_ tk
690−
691−{- We don't need state discarding for our restricted implementation of
692− "error". In fact, it can cause some bogus parses, so I've disabled it
693− for now --SDM
694−
695−-- discard a state
696−happyFail 0# tk old_st (HappyCons ((action)) (sts))
697− (saved_tok `HappyStk` _ `HappyStk` stk) =
698−-- trace ("discarding state, depth " ++ show (length stk)) $
699− happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))
700−-}
701−
702−-- Enter error recovery: generate an error token,
703−-- save the old token and carry on.
704−happyFail i tk (action) sts stk =
705−-- trace "entering error recovery" $
706− happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)
707−
708−-- Internal happy errors:
709−
710−notHappyAtAll :: a
711−notHappyAtAll = error "Internal Happy error\n"
712−
713−-----------------------------------------------------------------------------
714−-- Hack to get the typechecker to accept our action functions
715−
716−
717−happyTcHack :: Happy_GHC_Exts.Int# -> a -> a
718−happyTcHack x y = y
719−{-# INLINE happyTcHack #-}
720−
721−
722−-----------------------------------------------------------------------------
723−-- Seq-ing. If the --strict flag is given, then Happy emits
724−-- happySeq = happyDoSeq
725−-- otherwise it emits
726−-- happySeq = happyDontSeq
727−
728−happyDoSeq, happyDontSeq :: a -> b -> b
729−happyDoSeq a b = a `seq` b
730−happyDontSeq a b = b
731−
732−-----------------------------------------------------------------------------
733−-- Don't inline any functions from the template. GHC has a nasty habit
734−-- of deciding to inline happyGoto everywhere, which increases the size of
735−-- the generated parser quite a bit.
736−
737−
738−{-# NOINLINE happyDoAction #-}
739−{-# NOINLINE happyTable #-}
740−{-# NOINLINE happyCheck #-}
741−{-# NOINLINE happyActOffsets #-}
742−{-# NOINLINE happyGotoOffsets #-}
743−{-# NOINLINE happyDefActions #-}
744−
745−{-# NOINLINE happyShift #-}
746−{-# NOINLINE happySpecReduce_0 #-}
747−{-# NOINLINE happySpecReduce_1 #-}
748−{-# NOINLINE happySpecReduce_2 #-}
749−{-# NOINLINE happySpecReduce_3 #-}
750−{-# NOINLINE happyReduce #-}
751−{-# NOINLINE happyMonadReduce #-}
752−{-# NOINLINE happyGoto #-}
753−{-# NOINLINE happyFail #-}
754−
755−-- end of Happy Template.
src/Nix.cf → src/Language/Nix/Expr.cfrenamed−3
@@ -1,6 +1,3 @@
1−-- Run "bnfc -p Hackage4Nix -d Nix.cf" to re-generate the parsers from
2−-- this file.
3−--
41-- The grammar works fine for 99% of all expressions. The remaining
52-- percent doesn't parse because of 'let' or 'with' statements, which
63-- don't support (and probably don't want to, because we can't resolve