mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 11:42:49 -06:00
introducing multiple inheritance
This commit is contained in:
7
grammars/multiple/City.gf
Normal file
7
grammars/multiple/City.gf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
abstract City = {
|
||||||
|
cat
|
||||||
|
City ;
|
||||||
|
fun
|
||||||
|
MkCity : String -> City ;
|
||||||
|
} ;
|
||||||
|
|
||||||
5
grammars/multiple/CityEng.gf
Normal file
5
grammars/multiple/CityEng.gf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
concrete CityEng of City = open Prelude in {
|
||||||
|
lin
|
||||||
|
MkCity s = s ;
|
||||||
|
} ;
|
||||||
|
|
||||||
7
grammars/multiple/Math.gf
Normal file
7
grammars/multiple/Math.gf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
abstract Math = {
|
||||||
|
cat
|
||||||
|
Number ;
|
||||||
|
fun
|
||||||
|
MkNumber : Int -> Number ;
|
||||||
|
} ;
|
||||||
|
|
||||||
5
grammars/multiple/MathEng.gf
Normal file
5
grammars/multiple/MathEng.gf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
concrete MathEng of Math = open Prelude in {
|
||||||
|
lin
|
||||||
|
MkNumber i = i ;
|
||||||
|
} ;
|
||||||
|
|
||||||
4
grammars/multiple/System.gf
Normal file
4
grammars/multiple/System.gf
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
abstract System = {
|
||||||
|
cat Reply ;
|
||||||
|
fun Bye : Reply ;
|
||||||
|
}
|
||||||
4
grammars/multiple/SystemCity.gf
Normal file
4
grammars/multiple/SystemCity.gf
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
abstract SystemCity = System, City ** {
|
||||||
|
fun
|
||||||
|
RDistance : City -> City -> Int -> Reply ;
|
||||||
|
} ;
|
||||||
6
grammars/multiple/SystemCityEng.gf
Normal file
6
grammars/multiple/SystemCityEng.gf
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
concrete SystemCityEng of SystemCity = SystemEng, CityEng ** open
|
||||||
|
Prelude in {
|
||||||
|
lin
|
||||||
|
RDistance x y d =
|
||||||
|
ss (["the distance from"] ++ x.s ++ "to" ++ y.s ++ "is" ++ d.s) ;
|
||||||
|
} ;
|
||||||
3
grammars/multiple/SystemEng.gf
Normal file
3
grammars/multiple/SystemEng.gf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
concrete SystemEng of System = open Prelude in {
|
||||||
|
lin Bye = ss "bye" ;
|
||||||
|
}
|
||||||
4
grammars/multiple/SystemMath.gf
Normal file
4
grammars/multiple/SystemMath.gf
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
abstract SystemMath = System, Math ** {
|
||||||
|
fun
|
||||||
|
RSum : Number -> Number -> Int -> Reply ;
|
||||||
|
} ;
|
||||||
6
grammars/multiple/SystemMathEng.gf
Normal file
6
grammars/multiple/SystemMathEng.gf
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
concrete SystemMathEng of SystemMath = SystemEng, MathEng ** open
|
||||||
|
Prelude in {
|
||||||
|
lin
|
||||||
|
RSum x y d =
|
||||||
|
ss (["the sum of"] ++ x.s ++ "and" ++ y.s ++ "is" ++ d.s) ;
|
||||||
|
} ;
|
||||||
7
grammars/multiple/Top.gf
Normal file
7
grammars/multiple/Top.gf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
abstract Top = User, System ** {
|
||||||
|
cat
|
||||||
|
Move ;
|
||||||
|
fun
|
||||||
|
MUser : Query -> Move ;
|
||||||
|
MSystem : Reply -> Move ;
|
||||||
|
}
|
||||||
1
grammars/multiple/TopCity.gf
Normal file
1
grammars/multiple/TopCity.gf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
abstract TopCity = Top, UserCity, SystemCity ** {} ;
|
||||||
3
grammars/multiple/TopCityEng.gf
Normal file
3
grammars/multiple/TopCityEng.gf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--# -path=.:../prelude
|
||||||
|
|
||||||
|
concrete TopCityEng of TopCity = TopEng, UserCityEng, SystemCityEng ** {} ;
|
||||||
6
grammars/multiple/TopEng.gf
Normal file
6
grammars/multiple/TopEng.gf
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
concrete TopEng of Top = UserEng, SystemEng ** open Prelude in {
|
||||||
|
lin
|
||||||
|
MUser q = q ;
|
||||||
|
MSystem r = r ;
|
||||||
|
}
|
||||||
1
grammars/multiple/TopMath.gf
Normal file
1
grammars/multiple/TopMath.gf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
abstract TopMath = Top, UserMath, SystemMath ** {} ;
|
||||||
3
grammars/multiple/TopMathEng.gf
Normal file
3
grammars/multiple/TopMathEng.gf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--# -path=.:../prelude
|
||||||
|
|
||||||
|
concrete TopMathEng of TopMath = TopEng, UserMathEng, SystemMathEng ** {} ;
|
||||||
7
grammars/multiple/User.gf
Normal file
7
grammars/multiple/User.gf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
abstract User = {
|
||||||
|
cat
|
||||||
|
Query ;
|
||||||
|
fun
|
||||||
|
QQuit : Query ;
|
||||||
|
} ;
|
||||||
|
|
||||||
5
grammars/multiple/UserCity.gf
Normal file
5
grammars/multiple/UserCity.gf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
abstract UserCity = User, City ** {
|
||||||
|
fun
|
||||||
|
QDistance : City -> City -> Query ;
|
||||||
|
} ;
|
||||||
|
|
||||||
6
grammars/multiple/UserCityEng.gf
Normal file
6
grammars/multiple/UserCityEng.gf
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
concrete UserCityEng of UserCity = UserEng, CityEng ** open Prelude in
|
||||||
|
{
|
||||||
|
lin
|
||||||
|
QDistance x y = ss (["what is the distance from"] ++ x.s ++ "to" ++ y.s) ;
|
||||||
|
}
|
||||||
|
|
||||||
5
grammars/multiple/UserEng.gf
Normal file
5
grammars/multiple/UserEng.gf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
concrete UserEng of User = open Prelude in {
|
||||||
|
lin
|
||||||
|
QQuit = ss ["that's enough"] ;
|
||||||
|
} ;
|
||||||
|
|
||||||
5
grammars/multiple/UserMath.gf
Normal file
5
grammars/multiple/UserMath.gf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
abstract UserMath = User, Math ** {
|
||||||
|
fun
|
||||||
|
QSum : Number -> Number -> Query ;
|
||||||
|
} ;
|
||||||
|
|
||||||
6
grammars/multiple/UserMathEng.gf
Normal file
6
grammars/multiple/UserMathEng.gf
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
concrete UserMathEng of UserMath = UserEng, MathEng ** open Prelude in
|
||||||
|
{
|
||||||
|
lin
|
||||||
|
QSum x y = ss (["what is the sum of"] ++ x.s ++ "and" ++ y.s) ;
|
||||||
|
}
|
||||||
|
|
||||||
1
grammars/multiple/UserUnionCity.gf
Normal file
1
grammars/multiple/UserUnionCity.gf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
abstract UserUnionCity = union User, City ;
|
||||||
32
grammars/multiple/map.txt
Normal file
32
grammars/multiple/map.txt
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
Using multiple inheritance in GF. AR 15/9/2004.
|
||||||
|
|
||||||
|
The following diagrams show inheritance between abstract syntaxes in two simple systems.
|
||||||
|
|
||||||
|
TopCity
|
||||||
|
/ | \
|
||||||
|
/ | \
|
||||||
|
SystemCity UserCity Top
|
||||||
|
/ \ / \
|
||||||
|
System City User
|
||||||
|
|
||||||
|
|
||||||
|
TopMath
|
||||||
|
/ | \
|
||||||
|
/ | \
|
||||||
|
SystemMath UserMath Top
|
||||||
|
/ \ / \
|
||||||
|
System Math User
|
||||||
|
|
||||||
|
|
||||||
|
Idea of each module:
|
||||||
|
|
||||||
|
User -- User's moves on any domain
|
||||||
|
System -- System's moves on any domain
|
||||||
|
Top -- grammar covering both kinds of moves
|
||||||
|
X = Math, City -- possible domains
|
||||||
|
UserX -- User's domain specific moves
|
||||||
|
SystemX -- System's domain specific moves
|
||||||
|
TopX -- all moves on the domain X
|
||||||
|
|
||||||
|
In parallel to the abstract syntax hierarchies, we have of course
|
||||||
|
hierarchies of concrete syntaxes for any language; this directory contains Eng.
|
||||||
@@ -23,7 +23,7 @@ data ModType =
|
|||||||
deriving (Eq,Ord,Show)
|
deriving (Eq,Ord,Show)
|
||||||
|
|
||||||
data Extend =
|
data Extend =
|
||||||
Ext Ident
|
Ext [Ident]
|
||||||
| NoExt
|
| NoExt
|
||||||
deriving (Eq,Ord,Show)
|
deriving (Eq,Ord,Show)
|
||||||
|
|
||||||
|
|||||||
@@ -41,9 +41,7 @@ canon2sourceModule (i,mi) = do
|
|||||||
return (i',info')
|
return (i',info')
|
||||||
where
|
where
|
||||||
redExtOpen m = do
|
redExtOpen m = do
|
||||||
e' <- case M.extends m of
|
e' <- mapM redIdent $ M.extends m
|
||||||
Just e -> liftM Just $ redIdent e
|
|
||||||
_ -> return Nothing
|
|
||||||
os' <- mapM (\ (M.OSimple q i) -> liftM (\i -> M.OQualif q i i) (redIdent i)) $
|
os' <- mapM (\ (M.OSimple q i) -> liftM (\i -> M.OQualif q i i) (redIdent i)) $
|
||||||
M.opens m
|
M.opens m
|
||||||
return (e',os')
|
return (e',os')
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ MTTrans. ModType ::= "transfer" Ident ":" Ident "->" Ident ;
|
|||||||
|
|
||||||
separator Module "" ;
|
separator Module "" ;
|
||||||
|
|
||||||
Ext. Extend ::= Ident "**" ;
|
Ext. Extend ::= [Ident] "**" ;
|
||||||
NoExt. Extend ::= ;
|
NoExt. Extend ::= ;
|
||||||
|
|
||||||
Opens. Open ::= "open" [Ident] "in" ;
|
Opens. Open ::= "open" [Ident] "in" ;
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ canon2grammar (Gr modules) = M.MGrammar $ map mod2info modules where
|
|||||||
MTCnc a x -> (a,M.MTConcrete x)
|
MTCnc a x -> (a,M.MTConcrete x)
|
||||||
MTTrans a x y -> (a,M.MTTransfer (M.oSimple x) (M.oSimple y))
|
MTTrans a x y -> (a,M.MTTransfer (M.oSimple x) (M.oSimple y))
|
||||||
in (a,M.ModMod (M.Module mt' M.MSComplete flags (ee e) (oo os) defs'))
|
in (a,M.ModMod (M.Module mt' M.MSComplete flags (ee e) (oo os) defs'))
|
||||||
ee (Ext m) = Just m
|
ee (Ext m) = m
|
||||||
ee _ = Nothing
|
ee _ = []
|
||||||
oo (Opens ms) = map M.oSimple ms
|
oo (Opens ms) = map M.oSimple ms
|
||||||
oo _ = []
|
oo _ = []
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ info2mod m = case m of
|
|||||||
in
|
in
|
||||||
Mod mt' (gfcE me) (gfcO os) flags defs'
|
Mod mt' (gfcE me) (gfcO os) flags defs'
|
||||||
where
|
where
|
||||||
gfcE = maybe NoExt Ext
|
gfcE = ifNull NoExt Ext
|
||||||
gfcO os = if null os then NoOpens else Opens [m | M.OSimple _ m <- os]
|
gfcO os = if null os then NoOpens else Opens [m | M.OSimple _ m <- os]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -340,19 +340,19 @@ happyOutTok x = unsafeCoerce# x
|
|||||||
{-# INLINE happyOutTok #-}
|
{-# INLINE happyOutTok #-}
|
||||||
|
|
||||||
happyActOffsets :: HappyAddr
|
happyActOffsets :: HappyAddr
|
||||||
happyActOffsets = HappyA# "\x07\x02\x03\x02\x00\x00\x02\x02\x2d\x01\xfe\x01\x11\x02\x01\x02\x00\x00\x24\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x1f\x02\x00\x00\x00\x02\x00\x00\xf3\x01\xf3\x01\xf3\x01\x00\x00\x21\x02\x15\x02\xfd\x01\xf1\x01\xf1\x01\x1a\x02\x00\x00\x16\x02\xee\x01\x00\x00\x00\x00\x2d\x01\xfb\x01\x00\x00\xed\x01\x00\x00\xfa\x01\x00\x00\x17\x02\x67\x00\xea\x01\x14\x02\xf7\x01\x13\x02\x00\x00\xe5\x01\xe5\x01\xe5\x01\xe5\x01\xe5\x01\xe5\x01\xe5\x01\x00\x00\x10\x02\x0f\x02\x0b\x02\x0d\x02\x09\x02\x05\x02\xff\x01\x00\x00\xe4\x01\x00\x00\xcf\x01\x00\x00\xcf\x01\xcf\x01\x0a\x00\xcf\x01\x58\x00\x58\x00\xcf\x01\x0a\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x01\x0a\x00\xcb\x01\xcb\x01\xd4\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x01\x00\x00\x00\x00\xf8\x01\x3d\x00\x58\x00\x00\x00\xf6\x01\xf5\x01\xec\x01\xe8\x01\xe3\x01\xe9\x01\x00\x00\xb9\x01\xe6\x01\x0a\x00\x0a\x00\xdc\x01\x12\x00\xd2\x01\x00\x00\xd9\x01\xd7\x01\xd5\x01\xa9\x01\x12\x00\xa7\x01\x58\x00\x00\x00\x00\x00\xc8\x01\x10\x01\xc9\x01\xcd\x01\xc5\x01\x00\x00\x0a\x00\xa4\x01\x00\x00\xc7\x01\x6e\x00\x00\x00\x0a\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\xbc\x01\xb6\x01\xb1\x01\x00\x00\x00\x00\x3d\x00\x1c\x00\x12\x00\x95\x01\x95\x01\x58\x00\xb5\x01\x00\x00\x00\x00\x58\x00\x3d\x00\x58\x00\xb2\x00\x94\x01\x00\x00\x00\x00\x00\x00\x00\x00\x94\x01\x26\x01\xa8\x01\xbb\x01\x12\x00\x12\x00\xaa\x01\x00\x00\x00\x00\x00\x00\xb3\x01\x00\x00\x00\x00\xaf\x00\x00\x00\x00\x00\xb4\x01\xb2\x01\xaf\x01\x51\x00\x3d\x00\x74\x01\x74\x01\xa3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x82\x01\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x01\x98\x01\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x3d\x00\x0c\x00\x00\x00\x47\x00\x9e\x01\x41\x00\x00\x00\x91\x01\x8f\x01\x12\x00\x71\x01\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x9f\x01\x99\x01\x57\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x89\x01\x62\x01\x0a\x00\x9f\x00\x00\x00\x00\x00\x00\x00\x92\x01\x70\x00\x8e\x01\x00\x00\x00\x00\x3d\x00\x60\x01\x00\x00\x12\x00\x00\x00\x8d\x01\x12\x00\x7a\x01\x00\x00\x7a\x01\x00\x00\x8c\x01\x8b\x01\x87\x01\x78\x01\x00\x00\x68\x00\x00\x00\x51\x01\x00\x00\x00\x00\x3d\x00\x5b\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
|
happyActOffsets = HappyA# "\x0a\x02\x06\x02\x00\x00\x04\x02\xdd\x00\x02\x02\x14\x02\x00\x02\x00\x00\x29\x02\xfc\x01\xfc\x01\xfc\x01\xfc\x01\x25\x02\x00\x00\xff\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\x00\x00\x22\x02\xfd\x01\x1d\x02\xf8\x01\xf8\x01\x1b\x02\x00\x00\x00\x00\x1c\x02\xf0\x01\x00\x00\xdd\x00\xf5\x01\x00\x00\xee\x01\x00\x00\xf6\x01\x00\x00\x15\x02\x66\x00\xed\x01\x13\x02\xef\x01\x0d\x02\x00\x00\xda\x01\xda\x01\xda\x01\xda\x01\xda\x01\xda\x01\xda\x01\x00\x00\x07\x02\x05\x02\x01\x02\xfb\x01\xf7\x01\xf4\x01\xf3\x01\x00\x00\xd6\x01\x00\x00\xc8\x01\x00\x00\xc8\x01\xc8\x01\x11\x00\xc8\x01\x44\x00\x44\x00\xc8\x01\x11\x00\xe9\x01\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x01\x11\x00\xc7\x01\xc7\x01\xc3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x01\x00\x00\x00\x00\xe8\x01\x5d\x00\x44\x00\x00\x00\xe7\x01\xe6\x01\xe4\x01\xe2\x01\xdc\x01\xe1\x01\x00\x00\xb3\x01\xd7\x01\x11\x00\x11\x00\xce\x01\x0d\x00\xc4\x01\x00\x00\xd5\x01\xd0\x01\xcf\x01\xa2\x01\x0d\x00\xa1\x01\x44\x00\x00\x00\x00\x00\xc0\x01\xa3\x00\xba\x01\xbf\x01\xc2\x01\x00\x00\x11\x00\x93\x01\x00\x00\xc1\x01\x69\x00\x00\x00\x11\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\xb6\x01\xaa\x01\xaf\x01\x00\x00\x00\x00\x5d\x00\x72\x00\x0d\x00\x8f\x01\x8f\x01\x44\x00\xb2\x01\x00\x00\x00\x00\x44\x00\x5d\x00\x44\x00\xa6\x00\x84\x01\x00\x00\x00\x00\x00\x00\x00\x00\x84\x01\xcf\x00\x99\x01\xac\x01\x0d\x00\x0d\x00\xa4\x01\x00\x00\x00\x00\x00\x00\xad\x01\x00\x00\x00\x00\xfd\xff\x00\x00\x00\x00\xae\x01\xab\x01\x9f\x01\x4c\x00\x5d\x00\x70\x01\x70\x01\x90\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x71\x01\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x01\x95\x01\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x5d\x00\x15\x00\x00\x00\x42\x00\x96\x01\x3c\x00\x00\x00\x8b\x01\x89\x01\x0d\x00\x6b\x01\x00\x00\x00\x00\x65\x00\x00\x00\x00\x00\x8e\x01\x8a\x01\x56\x00\x00\x00\x00\x00\x51\x00\x00\x00\x7c\x01\x57\x01\x11\x00\x85\x00\x00\x00\x00\x00\x00\x00\x8c\x01\xf9\xff\x88\x01\x00\x00\x00\x00\x5d\x00\x4f\x01\x00\x00\x0d\x00\x00\x00\x87\x01\x0d\x00\x7b\x01\x00\x00\x7b\x01\x00\x00\x86\x01\x7d\x01\x78\x01\x74\x01\x00\x00\xf7\xff\x00\x00\x4a\x01\x00\x00\x00\x00\x5d\x00\x57\x00\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
|
||||||
|
|
||||||
happyGotoOffsets :: HappyAddr
|
happyGotoOffsets :: HappyAddr
|
||||||
happyGotoOffsets = HappyA# "\x59\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x7f\x01\x7e\x01\x7d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x11\x01\x7c\x01\x02\x00\x00\x00\x00\x00\x00\x00\x72\x01\x79\x01\x70\x01\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x69\x01\xd6\x00\x00\x00\x48\x01\x6d\x01\x00\x00\x17\x00\x00\x00\x00\x00\x84\x00\x6a\x01\x00\x00\x5c\x01\x00\x00\x00\x00\x67\x01\x5e\x01\x5a\x01\x57\x01\x50\x01\x4f\x01\x44\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x01\x00\x00\x42\x01\x21\x01\xf4\x01\x3c\x01\x32\x01\x09\x01\x40\x00\xe2\x01\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x01\x38\x01\xd0\x01\x0c\x01\x2c\x01\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\xbe\x01\xac\x01\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x01\x0a\x01\x08\x00\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x9a\x01\x12\x01\x00\x00\x00\x00\xe7\x00\x00\x00\x88\x01\x00\x00\x76\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x01\x01\x03\x01\x00\x01\xc5\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x05\x00\x7d\x00\x00\x00\x6f\x00\x00\x00\x00\x00\xe5\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\xea\x00\x2a\x01\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\x3a\x01\x11\x00\xdb\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\xe3\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x7b\x00\x9b\x00\x00\x00\x33\x01\xea\xff\x33\x01\x00\x00\x00\x00\x00\x00\xd8\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x3b\x01\x00\x00\x00\x00\x91\x00\x52\x01\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x07\x00\xb6\x00\x00\x00\xb9\x00\x00\x00\xe4\xff\xb0\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\xff\x4f\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x06\x00\x22\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
|
happyGotoOffsets = HappyA# "\x51\x01\x00\x00\x00\x00\x00\x00\xc9\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x01\x79\x01\x77\x01\x76\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x6d\x01\x03\x00\x00\x00\x00\x00\x63\x01\x00\x00\x6a\x01\x69\x01\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x58\x01\xc9\x00\x00\x00\x36\x01\x5a\x01\x00\x00\x93\x00\x00\x00\x00\x00\x1a\x00\x55\x01\x00\x00\x4c\x01\x00\x00\x00\x00\x44\x01\x40\x01\x3f\x01\x39\x01\x38\x01\x28\x01\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x01\x00\x00\x16\x01\x26\x01\x03\x02\x5b\x01\xfb\x00\xea\x00\x0c\x00\xf1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x02\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x0e\x01\xdf\x01\x59\x01\x0c\x01\x08\x01\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\xcd\x01\xbb\x01\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x18\x01\x0b\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x01\x00\x00\xa9\x01\xf8\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x97\x01\x00\x00\x85\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x06\x01\x52\x01\xd6\x00\xd7\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x05\x00\xa4\x00\x00\x00\x6b\x00\x00\x00\x00\x00\xab\x00\x00\x00\x2f\x01\x00\x00\x00\x00\x00\x00\xf4\x00\x30\x01\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x49\x01\x0e\x00\xb0\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x01\xd3\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x7f\x00\x82\x00\x00\x00\x42\x01\xed\x00\x42\x01\x00\x00\x00\x00\x00\x00\xd0\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x00\x00\x00\x00\x00\x20\x01\x00\x00\x00\x00\x76\x00\x61\x01\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x09\x00\xaf\x00\x00\x00\xbe\x00\x00\x00\xf3\xff\xac\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\xfc\x00\x00\x00\x10\x00\x00\x00\x00\x00\x07\x00\x61\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
|
||||||
|
|
||||||
happyDefActions :: HappyAddr
|
happyDefActions :: HappyAddr
|
||||||
happyDefActions = HappyA# "\xf4\xff\x00\x00\xfe\xff\x00\x00\xfa\xff\x7d\xff\x7c\xff\x00\x00\xf3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\xff\x00\x00\xf8\xff\xf1\xff\x00\x00\x7d\xff\x7b\xff\x00\x00\x00\x00\xef\xff\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x7d\xff\xf2\xff\xf4\xff\xfb\xff\x00\x00\xa0\xff\x00\x00\xf5\xff\x9e\xff\xf0\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe3\xff\x00\x00\xf9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xff\x00\x00\xe4\xff\x00\x00\xee\xff\x00\x00\xd1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9c\xff\x00\x00\x00\x00\xc6\xff\xc5\xff\xca\xff\xdc\xff\xeb\xff\xe0\xff\xc4\xff\xdb\xff\xcc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xff\xda\xff\xfd\xff\xfc\xff\x99\xff\x9b\xff\xea\xff\xc0\xff\x00\x00\x8f\xff\x00\x00\xbf\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\xe6\xff\xd1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\xff\x8e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9c\xff\xe5\xff\xc7\xff\xc8\xff\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xe1\xff\x00\x00\x00\x00\xe2\xff\x00\x00\x00\x00\xdd\xff\x00\x00\xd9\xff\x00\x00\xc9\xff\x98\xff\x9a\xff\x00\x00\xae\xff\xbc\xff\xb1\xff\xaf\xff\xe9\xff\xb8\xff\xbd\xff\x95\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xff\xc2\xff\x00\x00\x8f\xff\x00\x00\x00\x00\x92\xff\xec\xff\xc3\xff\x97\xff\xcf\xff\xed\xff\x00\x00\x91\xff\x00\x00\x00\x00\x00\x00\x00\x00\x8d\xff\xbe\xff\x89\xff\x00\x00\xba\xff\x89\xff\x00\x00\xb7\xff\x87\xff\x94\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\xd5\xff\xd4\xff\xd3\xff\xcd\xff\x00\x00\x00\x00\xd2\xff\xcb\xff\xce\xff\xd7\xff\x00\x00\x00\x00\xa7\xff\xb5\xff\xb3\xff\xb9\xff\x00\x00\x95\xff\x00\x00\xb6\xff\x00\x00\x7f\xff\x00\x00\xc1\xff\xb0\xff\xe8\xff\x00\x00\x92\xff\x96\xff\x90\xff\x00\x00\x88\xff\xb2\xff\x8b\xff\x00\x00\x00\x00\xbb\xff\x86\xff\x85\xff\x93\xff\xac\xff\x00\x00\x00\x00\x00\x00\xd6\xff\xdf\xff\xa6\xff\x84\xff\x00\x00\x00\x00\xa4\xff\x7e\xff\x82\xff\x00\x00\xa3\xff\x00\x00\xb4\xff\x7f\xff\x00\x00\xe7\xff\x8a\xff\xab\xff\x7f\xff\x00\x00\x81\xff\x00\x00\x00\x00\x87\xff\x85\xff\x83\xff\xaa\xff\xad\xff\xa2\xff\x82\xff\x00\x00\x00\x00\xa5\xff\xa1\xff\x80\xff"#
|
happyDefActions = HappyA# "\xf4\xff\x00\x00\xfe\xff\x00\x00\xfa\xff\x7d\xff\x7c\xff\x00\x00\xf3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\xff\x00\x00\xf8\xff\xf1\xff\x00\x00\x7d\xff\x7b\xff\x00\x00\xef\xff\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\xf2\xff\x00\x00\x7d\xff\xf4\xff\xfb\xff\x00\x00\xa0\xff\x00\x00\xf5\xff\x9e\xff\xf0\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe3\xff\x00\x00\xf9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xff\x00\x00\xe4\xff\x00\x00\xee\xff\x00\x00\xd1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9c\xff\x00\x00\x00\x00\xc6\xff\xc5\xff\xca\xff\xdc\xff\xeb\xff\xe0\xff\xc4\xff\xdb\xff\xcc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xff\xda\xff\xfd\xff\xfc\xff\x99\xff\x9b\xff\xea\xff\xc0\xff\x00\x00\x8f\xff\x00\x00\xbf\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\xe6\xff\xd1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\xff\x8e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9c\xff\xe5\xff\xc7\xff\xc8\xff\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xe1\xff\x00\x00\x00\x00\xe2\xff\x00\x00\x00\x00\xdd\xff\x00\x00\xd9\xff\x00\x00\xc9\xff\x98\xff\x9a\xff\x00\x00\xae\xff\xbc\xff\xb1\xff\xaf\xff\xe9\xff\xb8\xff\xbd\xff\x95\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xff\xc2\xff\x00\x00\x8f\xff\x00\x00\x00\x00\x92\xff\xec\xff\xc3\xff\x97\xff\xcf\xff\xed\xff\x00\x00\x91\xff\x00\x00\x00\x00\x00\x00\x00\x00\x8d\xff\xbe\xff\x89\xff\x00\x00\xba\xff\x89\xff\x00\x00\xb7\xff\x87\xff\x94\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\xd5\xff\xd4\xff\xd3\xff\xcd\xff\x00\x00\x00\x00\xd2\xff\xcb\xff\xce\xff\xd7\xff\x00\x00\x00\x00\xa7\xff\xb5\xff\xb3\xff\xb9\xff\x00\x00\x95\xff\x00\x00\xb6\xff\x00\x00\x7f\xff\x00\x00\xc1\xff\xb0\xff\xe8\xff\x00\x00\x92\xff\x96\xff\x90\xff\x00\x00\x88\xff\xb2\xff\x8b\xff\x00\x00\x00\x00\xbb\xff\x86\xff\x85\xff\x93\xff\xac\xff\x00\x00\x00\x00\x00\x00\xd6\xff\xdf\xff\xa6\xff\x84\xff\x00\x00\x00\x00\xa4\xff\x7e\xff\x82\xff\x00\x00\xa3\xff\x00\x00\xb4\xff\x7f\xff\x00\x00\xe7\xff\x8a\xff\xab\xff\x7f\xff\x00\x00\x81\xff\x00\x00\x00\x00\x87\xff\x85\xff\x83\xff\xaa\xff\xad\xff\xa2\xff\x82\xff\x00\x00\x00\x00\xa5\xff\xa1\xff\x80\xff"#
|
||||||
|
|
||||||
happyCheck :: HappyAddr
|
happyCheck :: HappyAddr
|
||||||
happyCheck = HappyA# "\xff\xff\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x20\x00\x30\x00\x15\x00\x03\x00\x01\x00\x03\x00\x00\x00\x00\x00\x2e\x00\x0b\x00\x0a\x00\x03\x00\x0c\x00\x33\x00\x2e\x00\x0f\x00\x08\x00\x11\x00\x12\x00\x33\x00\x0c\x00\x1a\x00\x09\x00\x0f\x00\x00\x00\x11\x00\x03\x00\x09\x00\x1c\x00\x22\x00\x22\x00\x22\x00\x20\x00\x25\x00\x25\x00\x0c\x00\x0d\x00\x0e\x00\x28\x00\x00\x00\x2d\x00\x22\x00\x24\x00\x34\x00\x34\x00\x34\x00\x32\x00\x32\x00\x30\x00\x31\x00\x32\x00\x31\x00\x27\x00\x2d\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x03\x00\x04\x00\x24\x00\x2b\x00\x33\x00\x08\x00\x03\x00\x0b\x00\x00\x00\x0c\x00\x11\x00\x08\x00\x0f\x00\x30\x00\x11\x00\x0c\x00\x03\x00\x24\x00\x0f\x00\x10\x00\x11\x00\x08\x00\x03\x00\x03\x00\x03\x00\x0c\x00\x03\x00\x06\x00\x0f\x00\x01\x00\x11\x00\x0c\x00\x0c\x00\x0e\x00\x1a\x00\x0c\x00\x28\x00\x0e\x00\x13\x00\x04\x00\x00\x00\x30\x00\x22\x00\x00\x00\x21\x00\x30\x00\x31\x00\x1b\x00\x06\x00\x15\x00\x01\x00\x30\x00\x31\x00\x2d\x00\x0c\x00\x00\x00\x0e\x00\x00\x00\x16\x00\x30\x00\x31\x00\x30\x00\x31\x00\x00\x00\x00\x00\x1e\x00\x16\x00\x30\x00\x30\x00\x22\x00\x0d\x00\x30\x00\x25\x00\x26\x00\x0a\x00\x23\x00\x29\x00\x2a\x00\x23\x00\x02\x00\x16\x00\x2e\x00\x19\x00\x30\x00\x2c\x00\x31\x00\x1f\x00\x2c\x00\x01\x00\x22\x00\x30\x00\x31\x00\x32\x00\x31\x00\x1f\x00\x00\x00\x0c\x00\x22\x00\x2b\x00\x0f\x00\x00\x00\x11\x00\x12\x00\x0c\x00\x0d\x00\x0e\x00\x2b\x00\x31\x00\x00\x00\x01\x00\x0b\x00\x01\x00\x1c\x00\x0d\x00\x00\x00\x14\x00\x20\x00\x00\x00\x01\x00\x18\x00\x0d\x00\x0d\x00\x17\x00\x18\x00\x15\x00\x19\x00\x02\x00\x0d\x00\x15\x00\x00\x00\x0d\x00\x15\x00\x30\x00\x31\x00\x32\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x30\x00\x31\x00\x32\x00\x0d\x00\x23\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x00\x00\x01\x00\x04\x00\x05\x00\x23\x00\x02\x00\x19\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x0d\x00\x2f\x00\x00\x00\x01\x00\x02\x00\x00\x00\x01\x00\x0d\x00\x0d\x00\x0d\x00\x30\x00\x0d\x00\x0d\x00\x2f\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x0d\x00\x19\x00\x19\x00\x13\x00\x23\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x23\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x23\x00\x0d\x00\x2a\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x01\x00\x05\x00\x0d\x00\x0d\x00\x07\x00\x0d\x00\x02\x00\x0b\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x0d\x00\x00\x00\x19\x00\x29\x00\x23\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x02\x00\x00\x00\x01\x00\x00\x00\x23\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x00\x00\x00\x00\x01\x00\x14\x00\x23\x00\x0d\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x17\x00\x18\x00\x0d\x00\x0d\x00\x16\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x1c\x00\x0d\x00\x1e\x00\x0d\x00\x1d\x00\x19\x00\x1f\x00\x23\x00\x1b\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x01\x00\x02\x00\x1b\x00\x23\x00\x00\x00\x1e\x00\x2c\x00\x00\x00\x2e\x00\x21\x00\x23\x00\x00\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x00\x00\x0c\x00\x17\x00\x00\x00\x30\x00\x31\x00\x00\x00\x26\x00\x06\x00\x00\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x00\x00\x08\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x31\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x04\x00\x01\x00\x17\x00\x02\x00\x15\x00\x30\x00\x04\x00\x04\x00\x01\x00\x32\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x04\x00\x15\x00\x17\x00\x01\x00\x30\x00\x04\x00\x06\x00\x15\x00\x14\x00\x32\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x17\x00\x0d\x00\x17\x00\x30\x00\x04\x00\x02\x00\x01\x00\x03\x00\x0d\x00\x03\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x06\x00\x1a\x00\x17\x00\x30\x00\x30\x00\x15\x00\x0b\x00\x01\x00\x04\x00\x14\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x06\x00\x30\x00\x17\x00\x0d\x00\x30\x00\x10\x00\x04\x00\x01\x00\x32\x00\x05\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x13\x00\x0a\x00\x17\x00\x02\x00\x30\x00\x01\x00\x0b\x00\x09\x00\x05\x00\x02\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x02\x00\x02\x00\x17\x00\x02\x00\x30\x00\x00\x00\x01\x00\x02\x00\x30\x00\x19\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x32\x00\x08\x00\x24\x00\x0d\x00\x05\x00\x17\x00\x10\x00\x11\x00\x05\x00\x02\x00\x05\x00\x02\x00\x02\x00\x17\x00\x01\x00\x30\x00\x02\x00\x20\x00\x01\x00\x03\x00\x30\x00\x21\x00\x07\x00\x30\x00\x30\x00\x24\x00\x06\x00\x30\x00\x01\x00\x30\x00\x05\x00\x28\x00\x02\x00\x27\x00\x27\x00\x30\x00\x23\x00\x1a\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\x34\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"#
|
happyCheck = HappyA# "\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x07\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x16\x00\x00\x00\x16\x00\x03\x00\x01\x00\x15\x00\x20\x00\x03\x00\x08\x00\x0b\x00\x0b\x00\x03\x00\x0c\x00\x00\x00\x0a\x00\x0f\x00\x0c\x00\x11\x00\x1a\x00\x0f\x00\x2e\x00\x11\x00\x12\x00\x0a\x00\x00\x00\x33\x00\x22\x00\x31\x00\x22\x00\x31\x00\x22\x00\x25\x00\x1c\x00\x25\x00\x30\x00\x22\x00\x20\x00\x2d\x00\x28\x00\x28\x00\x34\x00\x34\x00\x34\x00\x34\x00\x32\x00\x2d\x00\x32\x00\x2f\x00\x30\x00\x31\x00\x03\x00\x04\x00\x30\x00\x31\x00\x32\x00\x08\x00\x03\x00\x31\x00\x03\x00\x0c\x00\x24\x00\x08\x00\x0f\x00\x03\x00\x11\x00\x0c\x00\x03\x00\x0c\x00\x0f\x00\x10\x00\x11\x00\x08\x00\x0c\x00\x0d\x00\x0e\x00\x0c\x00\x03\x00\x03\x00\x0f\x00\x00\x00\x11\x00\x00\x00\x1b\x00\x30\x00\x00\x00\x0c\x00\x0c\x00\x0e\x00\x0e\x00\x01\x00\x16\x00\x33\x00\x13\x00\x04\x00\x00\x00\x30\x00\x31\x00\x11\x00\x06\x00\x01\x00\x00\x00\x30\x00\x31\x00\x30\x00\x0c\x00\x1a\x00\x0e\x00\x02\x00\x30\x00\x15\x00\x09\x00\x30\x00\x31\x00\x22\x00\x00\x00\x00\x00\x23\x00\x31\x00\x01\x00\x1e\x00\x24\x00\x30\x00\x30\x00\x22\x00\x2d\x00\x2c\x00\x25\x00\x26\x00\x30\x00\x23\x00\x29\x00\x2a\x00\x0c\x00\x0d\x00\x0e\x00\x2e\x00\x24\x00\x30\x00\x2c\x00\x15\x00\x30\x00\x31\x00\x32\x00\x09\x00\x2b\x00\x1f\x00\x1f\x00\x0c\x00\x22\x00\x22\x00\x0f\x00\x00\x00\x11\x00\x12\x00\x01\x00\x05\x00\x02\x00\x2b\x00\x2b\x00\x00\x00\x01\x00\x0b\x00\x00\x00\x1c\x00\x0d\x00\x02\x00\x00\x00\x20\x00\x30\x00\x31\x00\x32\x00\x30\x00\x0d\x00\x27\x00\x15\x00\x0d\x00\x19\x00\x00\x00\x01\x00\x0d\x00\x00\x00\x01\x00\x02\x00\x30\x00\x31\x00\x32\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x0d\x00\x19\x00\x04\x00\x05\x00\x23\x00\x00\x00\x01\x00\x0b\x00\x00\x00\x13\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x0d\x00\x17\x00\x18\x00\x0d\x00\x23\x00\x00\x00\x01\x00\x0d\x00\x0d\x00\x17\x00\x18\x00\x2f\x00\x00\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x0d\x00\x19\x00\x19\x00\x2f\x00\x23\x00\x00\x00\x01\x00\x0d\x00\x0d\x00\x00\x00\x02\x00\x1d\x00\x00\x00\x1f\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x0d\x00\x19\x00\x19\x00\x29\x00\x23\x00\x00\x00\x01\x00\x0d\x00\x2c\x00\x02\x00\x2e\x00\x00\x00\x20\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x0d\x00\x19\x00\x16\x00\x00\x00\x23\x00\x00\x00\x01\x00\x00\x00\x2e\x00\x12\x00\x21\x00\x00\x00\x15\x00\x33\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x01\x00\x30\x00\x31\x00\x14\x00\x00\x00\x00\x00\x01\x00\x18\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x0d\x00\x00\x00\x00\x00\x14\x00\x23\x00\x0d\x00\x0d\x00\x18\x00\x00\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x00\x00\x01\x00\x1b\x00\x1c\x00\x23\x00\x1e\x00\x0d\x00\x30\x00\x31\x00\x00\x00\x23\x00\x03\x00\x00\x00\x0d\x00\x06\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x26\x00\x1b\x00\x06\x00\x0d\x00\x1e\x00\x00\x00\x01\x00\x02\x00\x1b\x00\x23\x00\x0d\x00\x1e\x00\x0d\x00\x00\x00\x00\x00\x08\x00\x23\x00\x00\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x31\x00\x04\x00\x09\x00\x01\x00\x30\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x02\x00\x32\x00\x17\x00\x04\x00\x04\x00\x01\x00\x04\x00\x01\x00\x15\x00\x15\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x04\x00\x30\x00\x17\x00\x0d\x00\x15\x00\x14\x00\x06\x00\x30\x00\x32\x00\x04\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x17\x00\x02\x00\x17\x00\x01\x00\x03\x00\x0d\x00\x06\x00\x1a\x00\x30\x00\x03\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x14\x00\x30\x00\x17\x00\x0b\x00\x01\x00\x30\x00\x15\x00\x06\x00\x04\x00\x0d\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x10\x00\x30\x00\x17\x00\x04\x00\x32\x00\x05\x00\x01\x00\x13\x00\x0a\x00\x02\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x01\x00\x30\x00\x17\x00\x09\x00\x02\x00\x05\x00\x02\x00\x02\x00\x02\x00\x19\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x0b\x00\x32\x00\x17\x00\x30\x00\x30\x00\x05\x00\x24\x00\x08\x00\x05\x00\x02\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\x05\x00\x02\x00\x17\x00\x02\x00\x30\x00\x00\x00\x01\x00\x02\x00\x01\x00\x20\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x02\x00\x01\x00\x21\x00\x0d\x00\x24\x00\x17\x00\x10\x00\x11\x00\x30\x00\x30\x00\x03\x00\x30\x00\x06\x00\x17\x00\x01\x00\x07\x00\x28\x00\x27\x00\x27\x00\x30\x00\x30\x00\x05\x00\x02\x00\x30\x00\x23\x00\x1a\x00\xff\xff\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x30\x00\xff\xff\x34\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"#
|
||||||
|
|
||||||
happyTable :: HappyAddr
|
happyTable :: HappyAddr
|
||||||
happyTable = HappyA# "\x00\x00\x06\x00\x06\x00\x06\x00\xe4\x00\x74\x00\x74\x00\x74\x00\x5e\x00\x87\x00\xe4\x00\x09\x01\x88\x00\x55\x00\xe8\x00\xea\x00\xf5\x00\x74\x00\xff\x00\x5f\x00\x56\x00\x99\x00\x57\x00\xe6\x00\xe5\x00\x58\x00\x9a\x00\x59\x00\x5a\x00\xe6\x00\x9b\x00\x75\x00\x28\x00\x9c\x00\xf5\x00\x9d\x00\xf8\x00\xb9\x00\x5b\x00\x76\x00\x02\x01\x02\x01\x5c\x00\x03\x01\x03\x01\xf9\x00\x10\x01\xfa\x00\x8f\x00\xf5\x00\xb1\x00\xd0\x00\xf6\x00\x22\x00\x15\x00\x07\x00\x11\x01\x04\x01\x03\x00\x5d\x00\x5e\x00\x5d\x00\x29\x00\x9e\x00\x5e\x00\x9f\x00\x03\x00\x5d\x00\x99\x00\xe4\x00\x10\x01\xba\x00\x0e\x01\x9a\x00\x99\x00\x5f\x00\x74\x00\x9b\x00\x79\x00\x9a\x00\x9c\x00\x03\x00\x9d\x00\x9b\x00\x99\x00\xf6\x00\x9c\x00\xe8\x00\x9d\x00\x9a\x00\xf8\x00\x64\x00\x03\x00\x9b\x00\xf8\x00\x04\x00\x9c\x00\xfe\x00\x9d\x00\xf9\x00\x65\x00\xfa\x00\x75\x00\xf9\x00\x60\x00\xfa\x00\xfb\x00\x2f\x00\xab\x00\x03\x00\x76\x00\xab\x00\xf2\x00\x03\x00\x5d\x00\x66\x00\xc8\x00\xb0\x00\xe8\x00\x03\x00\x5d\x00\x77\x00\xc9\x00\x74\x00\xca\x00\x4b\x00\x87\xff\xf3\x00\x08\x01\x03\x00\x5d\x00\x74\x00\x2c\x00\x30\x00\x07\x01\x03\x00\x03\x00\x31\x00\x61\x00\x03\x00\x32\x00\x33\x00\x2d\x00\xac\x00\x34\x00\x35\x00\xac\x00\xf1\x00\x87\xff\x36\x00\xb0\x00\x03\x00\xe0\x00\x87\xff\xba\x00\xad\x00\xe8\x00\xbb\x00\x03\x00\x5d\x00\x5e\x00\x5d\x00\xba\x00\x69\x00\x85\x00\xbb\x00\xea\x00\x58\x00\x4b\x00\x59\x00\x5a\x00\xc9\x00\xf0\x00\xca\x00\xbc\x00\x87\xff\x90\x00\x91\x00\x86\x00\xaf\x00\x5b\x00\x61\x00\x4b\x00\xa9\x00\x5c\x00\x90\x00\x91\x00\x6b\x00\xd7\x00\x92\x00\xc0\x00\xc1\x00\xee\x00\xb2\x00\xce\x00\x01\x01\xb0\x00\x4b\x00\x92\x00\xb0\x00\x03\x00\x5d\x00\x5e\x00\x93\x00\x94\x00\xfe\x00\x96\x00\x03\x00\x5d\x00\x5e\x00\x61\x00\x97\x00\x93\x00\x94\x00\x00\x01\x96\x00\x90\x00\x91\x00\x08\x00\x09\x00\x97\x00\xcf\x00\xb4\x00\x4b\x00\x4b\x00\x90\x00\x91\x00\x4b\x00\x4b\x00\x92\x00\xd7\x00\xc3\x00\xc4\x00\xc5\x00\x90\x00\x91\x00\x61\x00\x61\x00\x92\x00\xd5\x00\xcb\x00\xdf\x00\xd9\x00\x93\x00\x94\x00\xe1\x00\x96\x00\x92\x00\x8e\x00\x73\x00\xc6\x00\x97\x00\x93\x00\x94\x00\xeb\x00\x96\x00\xb5\x00\x90\x00\x91\x00\x4b\x00\x97\x00\x93\x00\x94\x00\xdc\x00\x96\x00\x4b\x00\x90\x00\x91\x00\x4b\x00\x97\x00\x92\x00\xaa\x00\xb6\x00\x17\x00\x86\x00\x90\x00\x91\x00\x8d\x00\x61\x00\x92\x00\x18\x00\x7e\x00\x9f\x00\x86\x00\x93\x00\x94\x00\xb7\x00\x96\x00\x92\x00\x69\x00\x62\x00\x7b\x00\x97\x00\x93\x00\x94\x00\x95\x00\x96\x00\x7c\x00\x90\x00\x91\x00\x7d\x00\x97\x00\x93\x00\x94\x00\xa4\x00\x96\x00\x4b\x00\x90\x00\x91\x00\x6a\x00\x97\x00\x92\x00\x81\x00\x6b\x00\x90\x00\x91\x00\x4b\x00\xc0\x00\xc1\x00\x61\x00\x92\x00\x82\x00\x6c\x00\x42\x00\x37\x00\x93\x00\xdb\x00\x92\x00\x96\x00\x67\x00\x0b\x00\x66\x00\x0c\x00\x97\x00\xe2\x00\x38\x00\x39\x00\x96\x00\x4b\x00\x4c\x00\x4d\x00\xd1\x00\x97\x00\x3a\x00\x96\x00\x0d\x00\x3b\x00\x0e\x00\xf2\x00\x97\x00\x3c\x00\x4e\x00\x4f\x00\xf0\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\x3d\x00\x3f\x00\x53\x00\x2b\x00\xf3\x00\xf4\x00\x25\x00\x26\x00\x21\x00\x1b\x00\x4e\x00\x4f\x00\xcc\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\x1c\x00\x1d\x00\x53\x00\x16\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x0b\x01\x5d\x00\x4e\x00\x4f\x00\xc1\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\x0c\x01\x0d\x01\x53\x00\x0e\x01\xb0\x00\x03\x00\x8c\xff\x06\x01\x08\x01\x5e\x00\x4e\x00\x4f\x00\xc2\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\xfc\x00\xb0\x00\x53\x00\xfd\x00\x03\x00\x8c\xff\xee\x00\xb0\x00\xbe\x00\x5e\x00\x4e\x00\x4f\x00\x80\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\xed\x00\xce\x00\x53\x00\x03\x00\xd3\x00\xd4\x00\xd5\x00\xd9\x00\xdb\x00\xb4\x00\x4e\x00\x4f\x00\xa6\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\xde\x00\xdf\x00\x53\x00\x03\x00\x03\x00\xb0\x00\xbf\x00\xcb\x00\x8a\x00\xbe\x00\x4e\x00\x4f\x00\xa7\x00\x51\x00\x52\x00\x7f\x00\x4c\x00\x4d\x00\x8b\x00\x03\x00\x53\x00\x8c\x00\x03\x00\x8e\x00\xa1\x00\xa3\x00\x5e\x00\xa2\x00\x4e\x00\x4f\x00\x80\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\xa4\x00\xa6\x00\x53\x00\xa9\x00\x03\x00\x6e\x00\x86\x00\x6f\x00\x70\x00\x71\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\x72\x00\x73\x00\x53\x00\x7a\x00\x03\x00\x4b\x00\x4c\x00\x4d\x00\x03\x00\x7b\x00\x4e\x00\x4f\x00\x68\x00\x51\x00\x52\x00\x5e\x00\x45\x00\x44\x00\x4e\x00\x46\x00\x53\x00\x83\x00\x52\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x53\x00\x3f\x00\x03\x00\x42\x00\x41\x00\x37\x00\x24\x00\x03\x00\x2b\x00\x20\x00\x03\x00\x03\x00\x28\x00\x25\x00\x03\x00\x21\x00\x03\x00\x1b\x00\x1f\x00\x13\x00\x1a\x00\x14\x00\x03\x00\x06\x00\x15\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
|
happyTable = HappyA# "\x00\x00\x06\x00\x06\x00\x06\x00\x06\x00\x74\x00\x7d\xff\x74\x00\x17\x00\x74\x00\xd7\x00\x5e\x00\x5e\x00\x87\xff\x74\x00\x07\x01\x99\x00\xe8\x00\xb0\x00\xe4\x00\x55\x00\x9a\x00\x5f\x00\x5f\x00\xea\x00\x9b\x00\x2c\x00\x56\x00\x9c\x00\x57\x00\x9d\x00\x75\x00\x58\x00\xff\x00\x59\x00\x5a\x00\x2d\x00\xf5\x00\xe6\x00\x76\x00\x87\xff\x02\x01\x5d\x00\x02\x01\x03\x01\x5b\x00\x03\x01\x03\x00\xd0\x00\x5c\x00\xb1\x00\x8f\x00\x60\x00\x18\x00\x22\x00\x15\x00\x07\x00\x11\x01\x9e\x00\x04\x01\x9f\x00\x03\x00\x5d\x00\x99\x00\xe4\x00\x03\x00\x5d\x00\x5e\x00\x9a\x00\x99\x00\x5d\x00\x64\x00\x9b\x00\xf6\x00\x9a\x00\x9c\x00\xf8\x00\x9d\x00\x9b\x00\x99\x00\x65\x00\x9c\x00\xe8\x00\x9d\x00\x9a\x00\xf9\x00\x10\x01\xfa\x00\x9b\x00\xf8\x00\xf8\x00\x9c\x00\x74\x00\x9d\x00\xab\x00\x66\x00\x09\x01\xf5\x00\xf9\x00\xf9\x00\xfa\x00\xfa\x00\xfe\x00\x87\xff\x0e\x01\xfb\x00\x2f\x00\xab\x00\x03\x00\x5d\x00\x79\x00\xc8\x00\xe8\x00\xf5\x00\x03\x00\x5d\x00\x03\x00\xc9\x00\x75\x00\xca\x00\xf1\x00\x03\x00\xb0\x00\xb9\x00\x03\x00\x5d\x00\x76\x00\x74\x00\x74\x00\xac\x00\x87\xff\xe8\x00\x30\x00\x10\x01\x03\x00\x03\x00\x31\x00\x77\x00\xe0\x00\x32\x00\x33\x00\x03\x00\xac\x00\x34\x00\x35\x00\xc9\x00\xf0\x00\xca\x00\x36\x00\xf6\x00\x03\x00\xad\x00\xee\x00\x03\x00\x5d\x00\x5e\x00\x28\x00\xba\x00\xba\x00\xba\x00\x85\x00\xbb\x00\xbb\x00\x58\x00\x4b\x00\x59\x00\x5a\x00\xaf\x00\x8d\x00\xce\x00\xea\x00\xbc\x00\x90\x00\x91\x00\x86\x00\x4b\x00\x5b\x00\x61\x00\xcf\x00\x4b\x00\x5c\x00\x03\x00\x5d\x00\x5e\x00\xd5\x00\x92\x00\x29\x00\xb0\x00\x01\x01\xb0\x00\x90\x00\x91\x00\x61\x00\xc3\x00\xc4\x00\xc5\x00\x03\x00\x5d\x00\x5e\x00\x93\x00\x94\x00\xfe\x00\x96\x00\x92\x00\xb2\x00\x08\x00\x09\x00\x97\x00\x90\x00\x91\x00\x86\x00\x4b\x00\xc6\x00\xaa\x00\xb5\x00\x4b\x00\x4b\x00\x93\x00\x94\x00\x00\x01\x96\x00\x92\x00\xc0\x00\xc1\x00\xcb\x00\x97\x00\x90\x00\x91\x00\x61\x00\x61\x00\xc0\x00\xc1\x00\xd7\x00\x4b\x00\x4b\x00\x93\x00\x94\x00\xe1\x00\x96\x00\x92\x00\xb4\x00\x8e\x00\xd9\x00\x97\x00\x90\x00\x91\x00\x61\x00\x61\x00\x86\x00\x9f\x00\x0b\x00\x4b\x00\x0c\x00\x93\x00\x94\x00\xeb\x00\x96\x00\x92\x00\x73\x00\x62\x00\x7b\x00\x97\x00\x90\x00\x91\x00\x61\x00\x0d\x00\x7c\x00\x0e\x00\x7d\x00\xe4\x00\x81\x00\x93\x00\x94\x00\xdc\x00\x96\x00\x92\x00\x66\x00\x82\x00\x6c\x00\x97\x00\x90\x00\x91\x00\x69\x00\xe5\x00\x87\x00\xf2\x00\x42\x00\x88\x00\xe6\x00\x93\x00\x94\x00\xb7\x00\x96\x00\x92\x00\x69\x00\x37\x00\x38\x00\x97\x00\x90\x00\x91\x00\xf3\x00\x08\x01\xa9\x00\x4b\x00\x90\x00\x91\x00\x6b\x00\x93\x00\x94\x00\x95\x00\x96\x00\x92\x00\x39\x00\x3a\x00\x6a\x00\x97\x00\xdf\x00\x92\x00\x6b\x00\x3b\x00\x3c\x00\xf2\x00\x90\x00\x91\x00\x3d\x00\x93\x00\x94\x00\xa4\x00\x96\x00\x90\x00\x91\x00\x93\x00\xdb\x00\x97\x00\x96\x00\x92\x00\xf3\x00\xf4\x00\x4b\x00\x97\x00\x03\x00\x2b\x00\x92\x00\x04\x00\x3f\x00\x4b\x00\x25\x00\x4b\x00\x26\x00\xe2\x00\x21\x00\xb6\x00\x96\x00\x4b\x00\x4c\x00\x4d\x00\xd1\x00\x97\x00\x7e\x00\x96\x00\x67\x00\x1b\x00\x1c\x00\x1e\x00\x97\x00\x16\x00\x4e\x00\x4f\x00\xf0\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\x0e\x00\x0f\x00\x53\x00\x10\x00\x11\x00\x5d\x00\x0c\x01\x0b\x01\x0d\x01\x03\x00\x4e\x00\x4f\x00\xcc\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\x0e\x01\x5e\x00\x53\x00\x8c\xff\x06\x01\x08\x01\xfc\x00\xfd\x00\xb0\x00\xb0\x00\x4e\x00\x4f\x00\xc1\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\x8c\xff\x03\x00\x53\x00\xce\x00\xb0\x00\xbe\x00\xee\x00\x03\x00\x5e\x00\xd3\x00\x4e\x00\x4f\x00\xc2\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\xed\x00\xd4\x00\x53\x00\xd5\x00\xd9\x00\xdb\x00\xde\x00\xdf\x00\x03\x00\xb4\x00\x4e\x00\x4f\x00\x80\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\xbe\x00\x03\x00\x53\x00\xbf\x00\xcb\x00\x03\x00\xb0\x00\x8b\x00\x8a\x00\x8c\x00\x4e\x00\x4f\x00\xa6\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\x8e\x00\x03\x00\x53\x00\xa1\x00\x5e\x00\xa2\x00\xa3\x00\xa4\x00\xa6\x00\xa9\x00\x4e\x00\x4f\x00\xa7\x00\x51\x00\x52\x00\x7f\x00\x4c\x00\x4d\x00\x6e\x00\x03\x00\x53\x00\x6f\x00\x71\x00\x70\x00\x72\x00\x73\x00\x7a\x00\x7b\x00\x4e\x00\x4f\x00\x80\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\x86\x00\x5e\x00\x53\x00\x03\x00\x03\x00\x46\x00\x44\x00\x45\x00\x47\x00\x48\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x4b\x00\x4c\x00\x4d\x00\x49\x00\x4a\x00\x53\x00\x4b\x00\x03\x00\x4b\x00\x4c\x00\x4d\x00\x3f\x00\x41\x00\x4e\x00\x4f\x00\x68\x00\x51\x00\x52\x00\x42\x00\x37\x00\x2b\x00\x4e\x00\x28\x00\x53\x00\x83\x00\x52\x00\x03\x00\x03\x00\x24\x00\x03\x00\x25\x00\x53\x00\x21\x00\x1e\x00\x20\x00\x1a\x00\x14\x00\x03\x00\x03\x00\x1b\x00\x13\x00\x03\x00\x06\x00\x15\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x03\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
|
||||||
|
|
||||||
happyReduceArr = array (1, 132) [
|
happyReduceArr = array (1, 132) [
|
||||||
(1 , happyReduce_1),
|
(1 , happyReduce_1),
|
||||||
@@ -614,7 +614,7 @@ happyReduction_12 happy_x_2
|
|||||||
happyReduce_13 = happySpecReduce_2 7# happyReduction_13
|
happyReduce_13 = happySpecReduce_2 7# happyReduction_13
|
||||||
happyReduction_13 happy_x_2
|
happyReduction_13 happy_x_2
|
||||||
happy_x_1
|
happy_x_1
|
||||||
= case happyOut4 happy_x_1 of { happy_var_1 ->
|
= case happyOut56 happy_x_1 of { happy_var_1 ->
|
||||||
happyIn11
|
happyIn11
|
||||||
(Ext happy_var_1
|
(Ext happy_var_1
|
||||||
)}
|
)}
|
||||||
@@ -1727,7 +1727,7 @@ happyError ts =
|
|||||||
|
|
||||||
myLexer = tokens
|
myLexer = tokens
|
||||||
{-# LINE 1 "GenericTemplate.hs" #-}
|
{-# LINE 1 "GenericTemplate.hs" #-}
|
||||||
-- $Id: ParGFC.hs,v 1.2 2004/09/14 18:05:47 aarne Exp $
|
-- $Id: ParGFC.hs,v 1.3 2004/09/15 15:36:32 aarne Exp $
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ instance Print ModType where
|
|||||||
|
|
||||||
instance Print Extend where
|
instance Print Extend where
|
||||||
prt i e = case e of
|
prt i e = case e of
|
||||||
Ext id -> prPrec i 0 (concatD [prt 0 id , doc (showString "**")])
|
Ext ids -> prPrec i 0 (concatD [prt 0 ids , doc (showString "**")])
|
||||||
NoExt -> prPrec i 0 (concatD [])
|
NoExt -> prPrec i 0 (concatD [])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import Modules
|
|||||||
import ReadFiles
|
import ReadFiles
|
||||||
import ShellState
|
import ShellState
|
||||||
import MkResource
|
import MkResource
|
||||||
import MkUnion
|
---- import MkUnion
|
||||||
|
|
||||||
-- the main compiler passes
|
-- the main compiler passes
|
||||||
import GetGrammar
|
import GetGrammar
|
||||||
@@ -202,9 +202,12 @@ makeSourceModule opts env@(k,gr,can) mo@(i,mi) = case mi of
|
|||||||
mos = modules gr
|
mos = modules gr
|
||||||
--- putp " type checking reused" $ ioeErr $ showCheckModule mos mo2
|
--- putp " type checking reused" $ ioeErr $ showCheckModule mos mo2
|
||||||
return $ (k,mo2)
|
return $ (k,mo2)
|
||||||
|
{- ---- obsolete
|
||||||
MTUnion ty imps -> do
|
MTUnion ty imps -> do
|
||||||
mo' <- ioeErr $ makeUnion gr i ty imps
|
mo' <- ioeErr $ makeUnion gr i ty imps
|
||||||
compileSourceModule opts env mo'
|
compileSourceModule opts env mo'
|
||||||
|
-}
|
||||||
|
|
||||||
_ -> compileSourceModule opts env mo
|
_ -> compileSourceModule opts env mo
|
||||||
_ -> compileSourceModule opts env mo
|
_ -> compileSourceModule opts env mo
|
||||||
where
|
where
|
||||||
|
|||||||
@@ -17,21 +17,11 @@ import Monad
|
|||||||
|
|
||||||
extendModule :: [SourceModule] -> SourceModule -> Err SourceModule
|
extendModule :: [SourceModule] -> SourceModule -> Err SourceModule
|
||||||
extendModule ms (name,mod) = case mod of
|
extendModule ms (name,mod) = case mod of
|
||||||
ModMod (Module mt st fs me ops js) -> do
|
ModMod m -> do
|
||||||
|
mod' <- foldM extOne m (extends m)
|
||||||
{- --- building the {s : Str} lincat from js0
|
return (name,ModMod mod')
|
||||||
js <- case mt of
|
where
|
||||||
MTConcrete a -> do
|
extOne mod@(Module mt st fs es ops js) n = do
|
||||||
ModMod ma <- lookupModule (MGrammar ms) a
|
|
||||||
let cats = [c | (c,AbsCat _ _) <- tree2list $ jments ma]
|
|
||||||
jscs = [(c,CncCat (yes defLinType) nope nope) | c <- cats]
|
|
||||||
return $ updatesTreeNondestr jscs js0
|
|
||||||
_ -> return js0
|
|
||||||
-}
|
|
||||||
|
|
||||||
case me of
|
|
||||||
-- if the module is an extension of another one...
|
|
||||||
Just n -> do
|
|
||||||
(m0,isCompl) <- do
|
(m0,isCompl) <- do
|
||||||
m <- lookupModMod (MGrammar ms) n
|
m <- lookupModMod (MGrammar ms) n
|
||||||
|
|
||||||
@@ -44,11 +34,8 @@ extendModule ms (name,mod) = case mod of
|
|||||||
js1 <- extendMod isCompl n (jments m0) js
|
js1 <- extendMod isCompl n (jments m0) js
|
||||||
|
|
||||||
-- if incomplete, throw away extension information
|
-- if incomplete, throw away extension information
|
||||||
let me' = if isCompl then me else Nothing
|
let me' = if isCompl then es else (filter (/=n) es)
|
||||||
return $ (name,ModMod (Module mt st fs me' ops js1))
|
return $ Module mt st fs me' ops js1
|
||||||
|
|
||||||
-- if the module is not an extension, just return it
|
|
||||||
_ -> return (name,mod)
|
|
||||||
|
|
||||||
-- When extending a complete module: new information is inserted,
|
-- When extending a complete module: new information is inserted,
|
||||||
-- and the process is interrupted if unification fails.
|
-- and the process is interrupted if unification fails.
|
||||||
@@ -94,6 +81,12 @@ extendAnyInfo isc n i j = errIn ("building extension for" +++ prt n) $ case (i,j
|
|||||||
|
|
||||||
---- (AnyInd _ _, ResOper _ _) -> return j ----
|
---- (AnyInd _ _, ResOper _ _) -> return j ----
|
||||||
|
|
||||||
|
(AnyInd b1 m1, AnyInd b2 m2) -> do
|
||||||
|
testErr (b1 == b2) "inconsistent indirection status"
|
||||||
|
testErr (m1 == m2) $
|
||||||
|
"different sources of indirection: " +++ show m1 +++ show m2
|
||||||
|
return i
|
||||||
|
|
||||||
_ -> Bad $ "cannot unify information in" ++++ show i ++++ "and" ++++ show j
|
_ -> Bad $ "cannot unify information in" ++++ show i ++++ "and" ++++ show j
|
||||||
|
|
||||||
--- where
|
--- where
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ redModInfo (c,info) = do
|
|||||||
info' <- case info of
|
info' <- case info of
|
||||||
ModMod m -> do
|
ModMod m -> do
|
||||||
let isIncompl = not $ isCompleteModule m
|
let isIncompl = not $ isCompleteModule m
|
||||||
(e,os) <- if isIncompl then return (Nothing,[]) else redExtOpen m ----
|
(e,os) <- if isIncompl then return ([],[]) else redExtOpen m ----
|
||||||
flags <- mapM redFlag $ flags m
|
flags <- mapM redFlag $ flags m
|
||||||
(a,mt) <- case mtype m of
|
(a,mt) <- case mtype m of
|
||||||
MTConcrete a -> do
|
MTConcrete a -> do
|
||||||
@@ -61,8 +61,7 @@ redModInfo (c,info) = do
|
|||||||
where
|
where
|
||||||
redExtOpen m = do
|
redExtOpen m = do
|
||||||
e' <- case extends m of
|
e' <- case extends m of
|
||||||
Just e -> liftM Just $ redIdent e
|
es -> mapM redIdent es
|
||||||
_ -> return Nothing
|
|
||||||
os' <- mapM (\o -> case o of
|
os' <- mapM (\o -> case o of
|
||||||
OQualif q _ i -> liftM (OSimple q) (redIdent i)
|
OQualif q _ i -> liftM (OSimple q) (redIdent i)
|
||||||
_ -> prtBad "cannot translate unqualified open in" c) $ opens m
|
_ -> prtBad "cannot translate unqualified open in" c) $ opens m
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import Monad
|
|||||||
-- extracting resource r from abstract + concrete syntax
|
-- extracting resource r from abstract + concrete syntax
|
||||||
-- AR 21/8/2002 -- 22/6/2003 for GF with modules
|
-- AR 21/8/2002 -- 22/6/2003 for GF with modules
|
||||||
|
|
||||||
makeReuse :: SourceGrammar -> Ident -> Maybe Ident ->
|
makeReuse :: SourceGrammar -> Ident -> [Ident] ->
|
||||||
MReuseType Ident -> Err SourceRes
|
MReuseType Ident -> Err SourceRes
|
||||||
makeReuse gr r me mrc = do
|
makeReuse gr r me mrc = do
|
||||||
flags <- return [] --- no flags are passed: they would not make sense
|
flags <- return [] --- no flags are passed: they would not make sense
|
||||||
@@ -59,7 +59,7 @@ makeReuse gr r me mrc = do
|
|||||||
-- the second Boolean indicates if the definition needs be given
|
-- the second Boolean indicates if the definition needs be given
|
||||||
|
|
||||||
mkResDefs :: Bool -> Bool ->
|
mkResDefs :: Bool -> Bool ->
|
||||||
SourceGrammar -> Ident -> Ident -> Maybe Ident -> Maybe Ident ->
|
SourceGrammar -> Ident -> Ident -> [Ident] -> [Ident] ->
|
||||||
BinTree (Ident,Info) -> BinTree (Ident,Info) ->
|
BinTree (Ident,Info) -> BinTree (Ident,Info) ->
|
||||||
Err (BinTree (Ident,Info))
|
Err (BinTree (Ident,Info))
|
||||||
mkResDefs hasT isC gr r a mext maext abs cnc = mapMTree (mkOne a maext) abs where
|
mkResDefs hasT isC gr r a mext maext abs cnc = mapMTree (mkOne a maext) abs where
|
||||||
@@ -101,7 +101,7 @@ mkResDefs hasT isC gr r a mext maext abs cnc = mapMTree (mkOne a maext) abs wher
|
|||||||
-- type constant qualifications changed from abstract to resource
|
-- type constant qualifications changed from abstract to resource
|
||||||
redirTyp always a mae ty = case ty of
|
redirTyp always a mae ty = case ty of
|
||||||
Q _ c | always -> return $ Q r c
|
Q _ c | always -> return $ Q r c
|
||||||
Q n c | n == a || Just n == mae -> return $ Q r c
|
Q n c | n == a || [n] == mae -> return $ Q r c ---- FIX for non-singleton exts
|
||||||
_ -> composOp (redirTyp always a mae) ty
|
_ -> composOp (redirTyp always a mae) ty
|
||||||
|
|
||||||
lockRecType :: Ident -> Type -> Err Type
|
lockRecType :: Ident -> Type -> Err Type
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import List
|
|||||||
import Monad
|
import Monad
|
||||||
|
|
||||||
-- building union of modules
|
-- building union of modules
|
||||||
-- AR 1/3/2004
|
-- AR 1/3/2004 --- OBSOLETE 15/9/2004 with multiple inheritance
|
||||||
|
|
||||||
makeUnion :: SourceGrammar -> Ident -> ModuleType Ident -> [(Ident,[Ident])] ->
|
makeUnion :: SourceGrammar -> Ident -> ModuleType Ident -> [(Ident,[Ident])] ->
|
||||||
Err SourceModule
|
Err SourceModule
|
||||||
|
|||||||
@@ -65,9 +65,7 @@ moduleDeps ms = mapM deps ms where
|
|||||||
t -> chDep (IdentM c t) (extends m) t (opens m) t
|
t -> chDep (IdentM c t) (extends m) t (opens m) t
|
||||||
|
|
||||||
chDep it es ety os oty = do
|
chDep it es ety os oty = do
|
||||||
ests <- case es of
|
ests <- mapM (lookupModuleType gr) es
|
||||||
Just e -> liftM singleton $ lookupModuleType gr e
|
|
||||||
_ -> return []
|
|
||||||
testErr (all (compatMType ety) ests) "inappropriate extension module type"
|
testErr (all (compatMType ety) ests) "inappropriate extension module type"
|
||||||
osts <- mapM (lookupModuleType gr . openedModule) os
|
osts <- mapM (lookupModuleType gr . openedModule) os
|
||||||
testErr (all (compatOType oty) osts) "inappropriate open module type"
|
testErr (all (compatOType oty) osts) "inappropriate open module type"
|
||||||
@@ -75,7 +73,7 @@ moduleDeps ms = mapM deps ms where
|
|||||||
IdentM _ (MTConcrete a) -> [IdentM a MTAbstract]
|
IdentM _ (MTConcrete a) -> [IdentM a MTAbstract]
|
||||||
_ -> [] ----
|
_ -> [] ----
|
||||||
return (it, ab ++
|
return (it, ab ++
|
||||||
[IdentM e ety | Just e <- [es]] ++
|
[IdentM e ety | e <- es] ++
|
||||||
[IdentM (openedModule o) oty | o <- os])
|
[IdentM (openedModule o) oty | o <- os])
|
||||||
|
|
||||||
-- check for superficial compatibility, not submodule relation etc: what can be extended
|
-- check for superficial compatibility, not submodule relation etc: what can be extended
|
||||||
@@ -114,7 +112,7 @@ requiredCanModules :: (Eq i, Show i) => MGrammar i f a -> i -> [i]
|
|||||||
requiredCanModules gr = nub . iterFix (concatMap more) . singleton where
|
requiredCanModules gr = nub . iterFix (concatMap more) . singleton where
|
||||||
more i = errVal [] $ do
|
more i = errVal [] $ do
|
||||||
m <- lookupModMod gr i
|
m <- lookupModMod gr i
|
||||||
return $ maybe [] return (extends m) ++ map openedModule (opens m)
|
return $ extends m ++ map openedModule (opens m)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -34,12 +34,14 @@ rebuildModule ms mo@(i,mi) = do
|
|||||||
js' <- extendMod False i0 (jments m1) (jments m)
|
js' <- extendMod False i0 (jments m1) (jments m)
|
||||||
--- to avoid double inclusions, in instance I of I0 = J0 ** ...
|
--- to avoid double inclusions, in instance I of I0 = J0 ** ...
|
||||||
case extends m of
|
case extends m of
|
||||||
Nothing -> return $ replaceJudgements m js'
|
[] -> return $ replaceJudgements m js'
|
||||||
Just j0 -> do
|
j0:jj -> do
|
||||||
m0 <- lookupModMod gr j0
|
m0 <- lookupModMod gr j0
|
||||||
let notInM0 c = not $ isInBinTree (fst c) $ mapTree fst $ jments m0
|
let notInM0 c = not $ isInBinTree (fst c) $ mapTree fst $ jments m0
|
||||||
let js2 = sorted2tree $ filter notInM0 $ tree2list js'
|
let js2 = sorted2tree $ filter notInM0 $ tree2list js'
|
||||||
return $ replaceJudgements m js2
|
if null jj
|
||||||
|
then return $ replaceJudgements m js2
|
||||||
|
else Bad "FIXME: handle multiple inheritance in instance"
|
||||||
return $ ModMod m'
|
return $ ModMod m'
|
||||||
_ -> return mi
|
_ -> return mi
|
||||||
|
|
||||||
|
|||||||
@@ -181,11 +181,10 @@ filterAbstracts abstr cgr = M.MGrammar (nubBy (\x y -> fst x == fst y) [m | m <-
|
|||||||
Just a -> elem i $ needs a
|
Just a -> elem i $ needs a
|
||||||
_ -> True
|
_ -> True
|
||||||
needs a = [i | (i,M.ModMod m) <- ms, not (M.isModAbs m) || dep i a]
|
needs a = [i | (i,M.ModMod m) <- ms, not (M.isModAbs m) || dep i a]
|
||||||
dep i a = elem i (ext a mse)
|
dep i a = elem i (ext mse a)
|
||||||
mse = [(i,me) | (i,M.ModMod m) <- ms, M.isModAbs m, me <- [M.extends m]]
|
mse = [(i,me) | (i,M.ModMod m) <- ms, M.isModAbs m, me <- [M.extends m]]
|
||||||
ext a es = case lookup a es of
|
ext es a = case lookup a es of
|
||||||
Just (Just e) -> a : ext e es
|
Just e -> a : concatMap (ext es) e ---- FIX multiple exts
|
||||||
Just _ -> a : []
|
|
||||||
_ -> []
|
_ -> []
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ data Module i f a = Module {
|
|||||||
mtype :: ModuleType i ,
|
mtype :: ModuleType i ,
|
||||||
mstatus :: ModuleStatus ,
|
mstatus :: ModuleStatus ,
|
||||||
flags :: [f] ,
|
flags :: [f] ,
|
||||||
extends :: Maybe i ,
|
extends :: [i],
|
||||||
opens :: [OpenSpec i] ,
|
opens :: [OpenSpec i] ,
|
||||||
jments :: BinTree (i,a)
|
jments :: BinTree (i,a)
|
||||||
}
|
}
|
||||||
@@ -50,6 +50,11 @@ data ModuleType i =
|
|||||||
data MReuseType i = MRInterface i | MRInstance i i | MRResource i
|
data MReuseType i = MRInterface i | MRInstance i i | MRResource i
|
||||||
deriving (Show,Eq)
|
deriving (Show,Eq)
|
||||||
|
|
||||||
|
-- previously: single inheritance
|
||||||
|
extendm :: Module i f a -> Maybe i
|
||||||
|
extendm m = case extends m of
|
||||||
|
[i] -> Just i
|
||||||
|
_ -> Nothing
|
||||||
|
|
||||||
-- destructive update
|
-- destructive update
|
||||||
|
|
||||||
@@ -131,7 +136,7 @@ depPathModule m = fors m ++ exts m ++ opens m where
|
|||||||
MTConcrete i -> [oSimple i]
|
MTConcrete i -> [oSimple i]
|
||||||
MTInstance i -> [oSimple i]
|
MTInstance i -> [oSimple i]
|
||||||
_ -> []
|
_ -> []
|
||||||
exts m = map oSimple $ maybe [] return $ extends m
|
exts m = map oSimple $ extends m
|
||||||
|
|
||||||
-- all dependencies
|
-- all dependencies
|
||||||
allDepsModule :: Ord i => MGrammar i f a -> Module i f a -> [OpenSpec i]
|
allDepsModule :: Ord i => MGrammar i f a -> Module i f a -> [OpenSpec i]
|
||||||
@@ -155,8 +160,8 @@ partOfGrammar gr (i,m) = MGrammar [mo | mo@(j,_) <- mods, elem j modsFor]
|
|||||||
allExtends :: (Show i,Ord i) => MGrammar i f a -> i -> [i]
|
allExtends :: (Show i,Ord i) => MGrammar i f a -> i -> [i]
|
||||||
allExtends gr i = case lookupModule gr i of
|
allExtends gr i = case lookupModule gr i of
|
||||||
Ok (ModMod m) -> case extends m of
|
Ok (ModMod m) -> case extends m of
|
||||||
Just i1 -> i : allExtends gr i1
|
[] -> [i]
|
||||||
_ -> [i]
|
is -> i : concatMap (allExtends gr) is
|
||||||
_ -> []
|
_ -> []
|
||||||
|
|
||||||
-- this plus that an instance extends its interface
|
-- this plus that an instance extends its interface
|
||||||
@@ -165,7 +170,7 @@ allExtendsPlus gr i = case lookupModule gr i of
|
|||||||
Ok (ModMod m) -> i : concatMap (allExtendsPlus gr) (exts m)
|
Ok (ModMod m) -> i : concatMap (allExtendsPlus gr) (exts m)
|
||||||
_ -> []
|
_ -> []
|
||||||
where
|
where
|
||||||
exts m = [j | Just j <- [extends m]] ++ [j | MTInstance j <- [mtype m]]
|
exts m = extends m ++ [j | MTInstance j <- [mtype m]]
|
||||||
|
|
||||||
-- conversely: all modules that extend a given module, incl. instances of interface
|
-- conversely: all modules that extend a given module, incl. instances of interface
|
||||||
allExtensions :: (Show i,Ord i) => MGrammar i f a -> i -> [i]
|
allExtensions :: (Show i,Ord i) => MGrammar i f a -> i -> [i]
|
||||||
@@ -173,7 +178,7 @@ allExtensions gr i = case lookupModule gr i of
|
|||||||
Ok (ModMod m) -> let es = exts i in es ++ concatMap (allExtensions gr) es
|
Ok (ModMod m) -> let es = exts i in es ++ concatMap (allExtensions gr) es
|
||||||
_ -> []
|
_ -> []
|
||||||
where
|
where
|
||||||
exts i = [j | (j,m) <- mods, elem (Just i) [extends m]
|
exts i = [j | (j,m) <- mods, elem i (extends m)
|
||||||
|| elem (MTInstance i) [mtype m]]
|
|| elem (MTInstance i) [mtype m]]
|
||||||
mods = [(j,m) | (j,ModMod m) <- modules gr]
|
mods = [(j,m) | (j,ModMod m) <- modules gr]
|
||||||
|
|
||||||
@@ -193,7 +198,7 @@ emptyModInfo :: ModInfo i f a
|
|||||||
emptyModInfo = ModMod emptyModule
|
emptyModInfo = ModMod emptyModule
|
||||||
|
|
||||||
emptyModule :: Module i f a
|
emptyModule :: Module i f a
|
||||||
emptyModule = Module MTResource MSComplete [] Nothing [] NT
|
emptyModule = Module MTResource MSComplete [] [] [] NT
|
||||||
|
|
||||||
-- we store the module type with the identifier
|
-- we store the module type with the identifier
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ data Command =
|
|||||||
| CGenerateRandom
|
| CGenerateRandom
|
||||||
| CGenerateTrees
|
| CGenerateTrees
|
||||||
| CPutTerm
|
| CPutTerm
|
||||||
| CReadTerm
|
|
||||||
| CWrapTerm I.Ident
|
| CWrapTerm I.Ident
|
||||||
| CMorphoAnalyse
|
| CMorphoAnalyse
|
||||||
| CTestTokenizer
|
| CTestTokenizer
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ trModule (i,mo) = case mo of
|
|||||||
(mkOpens (map trOpen (opens m)))
|
(mkOpens (map trOpen (opens m)))
|
||||||
(mkTopDefs (concatMap trAnyDef (tree2list (jments m)) ++ map trFlag (flags m)))
|
(mkTopDefs (concatMap trAnyDef (tree2list (jments m)) ++ map trFlag (flags m)))
|
||||||
|
|
||||||
trExtend :: Maybe Ident -> P.Extend
|
trExtend :: [Ident] -> P.Extend
|
||||||
trExtend i = maybe P.NoExt (P.Ext . singleton . tri) i
|
trExtend i = ifNull P.NoExt (P.Ext . map tri) i
|
||||||
|
|
||||||
---- this has to be completed with other mtys
|
---- this has to be completed with other mtys
|
||||||
forName (MTConcrete a) = tri a
|
forName (MTConcrete a) = tri a
|
||||||
|
|||||||
@@ -75,11 +75,11 @@ transModDef x = case x of
|
|||||||
flags' <- return [f | Right fs <- defs0, f <- fs]
|
flags' <- return [f | Right fs <- defs0, f <- fs]
|
||||||
return (id',GM.ModMod (GM.Module mtyp' mstat' flags' extends' opens' defs'))
|
return (id',GM.ModMod (GM.Module mtyp' mstat' flags' extends' opens' defs'))
|
||||||
MReuse _ -> do
|
MReuse _ -> do
|
||||||
return (id', GM.ModMod (GM.Module mtyp' mstat' [] Nothing [] NT))
|
return (id', GM.ModMod (GM.Module mtyp' mstat' [] [] [] NT))
|
||||||
MUnion imps -> do
|
MUnion imps -> do
|
||||||
imps' <- mapM transIncluded imps
|
imps' <- mapM transIncluded imps
|
||||||
return (id',
|
return (id',
|
||||||
GM.ModMod (GM.Module (GM.MTUnion mtyp' imps') mstat' [] Nothing [] NT))
|
GM.ModMod (GM.Module (GM.MTUnion mtyp' imps') mstat' [] [] [] NT))
|
||||||
|
|
||||||
MWith m opens -> do
|
MWith m opens -> do
|
||||||
m' <- transIdent m
|
m' <- transIdent m
|
||||||
@@ -137,11 +137,10 @@ transTransfer x = case x of
|
|||||||
TransferIn open -> liftM Left $ transOpen open
|
TransferIn open -> liftM Left $ transOpen open
|
||||||
TransferOut open -> liftM Right $ transOpen open
|
TransferOut open -> liftM Right $ transOpen open
|
||||||
|
|
||||||
transExtend :: Extend -> Err (Maybe Ident)
|
transExtend :: Extend -> Err [Ident]
|
||||||
transExtend x = case x of
|
transExtend x = case x of
|
||||||
Ext [id] -> transIdent id >>= return . Just
|
Ext ids -> mapM transIdent ids
|
||||||
Ext ids -> Bad "sorry, no support for multiple inheritance yet"
|
NoExt -> return []
|
||||||
NoExt -> return Nothing
|
|
||||||
|
|
||||||
transOpens :: Opens -> Err [GM.OpenSpec Ident]
|
transOpens :: Opens -> Err [GM.OpenSpec Ident]
|
||||||
transOpens x = case x of
|
transOpens x = case x of
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ include config.mk
|
|||||||
GHMAKE=$(GHC) --make
|
GHMAKE=$(GHC) --make
|
||||||
GHCXMAKE=ghcxmake
|
GHCXMAKE=ghcxmake
|
||||||
GHCFLAGS=-package lang -package util -fglasgow-exts $(CPPFLAGS) $(LDFLAGS)
|
GHCFLAGS=-package lang -package util -fglasgow-exts $(CPPFLAGS) $(LDFLAGS)
|
||||||
GHCOPTFLAGS=-O $(GHCFLAGS)
|
GHCOPTFLAGS=$(GHCFLAGS)
|
||||||
|
##GHCOPTFLAGS=-O $(GHCFLAGS)
|
||||||
GHCFUDFLAG=
|
GHCFUDFLAG=
|
||||||
JAVAFLAGS=-target 1.4 -source 1.4
|
JAVAFLAGS=-target 1.4 -source 1.4
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user