mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-10-21 23:23:11 -06:00
gfcc in Types
This commit is contained in:
1 parent
8caa3ed737
commit
6e1f41b26a
7 files changed
+125
-153
No files matched your search
+9
-10
@@ -4,10 +4,9 @@ abstract Imper = {
|
|||||||
Program ;
|
Program ;
|
||||||
Rec ListTyp ;
|
Rec ListTyp ;
|
||||||
Typ ;
|
Typ ;
|
||||||
NumTyp ;
|
IsNum Typ ;
|
||||||
ListTyp ;
|
ListTyp ;
|
||||||
Fun ListTyp Typ ;
|
Fun ListTyp Typ ;
|
||||||
Body ListTyp ;
|
|
||||||
Stm ;
|
Stm ;
|
||||||
Exp Typ ;
|
Exp Typ ;
|
||||||
Var Typ ;
|
Var Typ ;
|
||||||
@@ -25,8 +24,8 @@ abstract Imper = {
|
|||||||
|
|
||||||
Decl : (A : Typ) -> (Var A -> Stm) -> Stm ;
|
Decl : (A : Typ) -> (Var A -> Stm) -> Stm ;
|
||||||
Assign : (A : Typ) -> Var A -> Exp A -> Stm -> Stm ;
|
Assign : (A : Typ) -> Var A -> Exp A -> Stm -> Stm ;
|
||||||
While : Exp (TNum TInt) -> Stm -> Stm -> Stm ;
|
While : Exp TInt -> Stm -> Stm -> Stm ;
|
||||||
IfElse : Exp (TNum TInt) -> Stm -> Stm -> Stm -> Stm ;
|
IfElse : Exp TInt -> Stm -> Stm -> Stm -> Stm ;
|
||||||
Block : Stm -> Stm -> Stm ;
|
Block : Stm -> Stm -> Stm ;
|
||||||
Printf : (A : Typ) -> Exp A -> Stm -> Stm ;
|
Printf : (A : Typ) -> Exp A -> Stm -> Stm ;
|
||||||
Return : (A : Typ) -> Exp A -> Stm ;
|
Return : (A : Typ) -> Exp A -> Stm ;
|
||||||
@@ -34,15 +33,15 @@ abstract Imper = {
|
|||||||
End : Stm ;
|
End : Stm ;
|
||||||
|
|
||||||
EVar : (A : Typ) -> Var A -> Exp A ;
|
EVar : (A : Typ) -> Var A -> Exp A ;
|
||||||
EInt : Int -> Exp (TNum TInt) ;
|
EInt : Int -> Exp TInt ;
|
||||||
EFloat : Int -> Int -> Exp (TNum TFloat) ;
|
EFloat : Int -> Int -> Exp TFloat ;
|
||||||
ELt : (n : NumTyp) -> let Ex = Exp (TNum n) in Ex -> Ex -> Exp (TNum TInt) ;
|
ELt : (n : Typ) -> IsNum n -> Exp n -> Exp n -> Exp TInt ;
|
||||||
EAdd, EMul, ESub : (n : NumTyp) -> let Ex = Exp (TNum n) in Ex -> Ex -> Ex ;
|
EAdd, EMul, ESub : (n : Typ) -> IsNum n -> Exp n -> Exp n -> Exp n ;
|
||||||
EAppNil : (V : Typ) -> Fun NilTyp V -> Exp V ;
|
EAppNil : (V : Typ) -> Fun NilTyp V -> Exp V ;
|
||||||
EApp : (AS : ListTyp) -> (V : Typ) -> Fun AS V -> ListExp AS -> Exp V ;
|
EApp : (AS : ListTyp) -> (V : Typ) -> Fun AS V -> ListExp AS -> Exp V ;
|
||||||
|
|
||||||
TNum : NumTyp -> Typ ;
|
TInt, TFloat : Typ ;
|
||||||
TInt, TFloat : NumTyp ;
|
isNumInt : IsNum TInt ; isNumFloat : IsNum TFloat ;
|
||||||
NilTyp : ListTyp ;
|
NilTyp : ListTyp ;
|
||||||
ConsTyp : Typ -> ListTyp -> ListTyp ;
|
ConsTyp : Typ -> ListTyp -> ListTyp ;
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ concrete ImperC of Imper = open ResImper in {
|
|||||||
|
|
||||||
lincat
|
lincat
|
||||||
Exp = PrecExp ;
|
Exp = PrecExp ;
|
||||||
Typ, NumTyp = {s,s2 : Str} ;
|
Typ = {s,s2 : Str} ;
|
||||||
Rec = {s,s2,s3 : Str} ;
|
Rec = {s,s2,s3 : Str} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
@@ -39,15 +39,14 @@ concrete ImperC of Imper = open ResImper in {
|
|||||||
EVar _ x = constant x.s ;
|
EVar _ x = constant x.s ;
|
||||||
EInt n = constant n.s ;
|
EInt n = constant n.s ;
|
||||||
EFloat a b = constant (a.s ++ "." ++ b.s) ;
|
EFloat a b = constant (a.s ++ "." ++ b.s) ;
|
||||||
EMul _ = infixL 3 "*" ;
|
EMul _ _ = infixL 3 "*" ;
|
||||||
EAdd _ = infixL 2 "+" ;
|
EAdd _ _ = infixL 2 "+" ;
|
||||||
ESub _ = infixL 2 "-" ;
|
ESub _ _ = infixL 2 "-" ;
|
||||||
ELt _ = infixN 1 "<" ;
|
ELt _ _ = infixN 1 "<" ;
|
||||||
|
|
||||||
EAppNil val f = constant (f.s ++ paren []) ;
|
EAppNil val f = constant (f.s ++ paren []) ;
|
||||||
EApp args val f exps = constant (f.s ++ paren exps.s) ;
|
EApp args val f exps = constant (f.s ++ paren exps.s) ;
|
||||||
|
|
||||||
TNum t = t ;
|
|
||||||
TInt = {s = "int" ; s2 = "\"%d\""} ;
|
TInt = {s = "int" ; s2 = "\"%d\""} ;
|
||||||
TFloat = {s = "float" ; s2 = "\"%f\""} ;
|
TFloat = {s = "float" ; s2 = "\"%f\""} ;
|
||||||
NilTyp = ss [] ;
|
NilTyp = ss [] ;
|
||||||
|
|||||||
+14
-14
@@ -5,6 +5,7 @@ flags lexer=codevars ; unlexer=code ; startcat=Stm ;
|
|||||||
|
|
||||||
lincat
|
lincat
|
||||||
Rec = {s,s2,s3 : Str} ; -- code, storage for locals, continuation
|
Rec = {s,s2,s3 : Str} ; -- code, storage for locals, continuation
|
||||||
|
Typ = {s : Str ; t : TypIdent} ;
|
||||||
Stm = Instr ;
|
Stm = Instr ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
@@ -36,7 +37,7 @@ flags lexer=codevars ; unlexer=code ; startcat=Stm ;
|
|||||||
Decl typ cont = instrb typ.s (
|
Decl typ cont = instrb typ.s (
|
||||||
["alloc"] ++ typ.s ++ cont.$0
|
["alloc"] ++ typ.s ++ cont.$0
|
||||||
) cont ;
|
) cont ;
|
||||||
Assign t x exp = instrc (exp.s ++ t.s ++ "_store" ++ x.s) ;
|
Assign t x exp = instrc (exp.s ++ typInstr "store" t.t ++ x.s) ;
|
||||||
While exp loop =
|
While exp loop =
|
||||||
let
|
let
|
||||||
test = "TEST_" ++ loop.s2 ;
|
test = "TEST_" ++ loop.s2 ;
|
||||||
@@ -62,30 +63,29 @@ flags lexer=codevars ; unlexer=code ; startcat=Stm ;
|
|||||||
f.s ++
|
f.s ++
|
||||||
"label" ++ true
|
"label" ++ true
|
||||||
) ;
|
) ;
|
||||||
Block stm = instrc stm.s ;
|
Block stm = instrc stm.s ;
|
||||||
Printf t e = instrc (e.s ++ "invokestatic" ++ t.s ++ "runtime/printf" ++ paren (t.s) ++ "v") ;
|
Printf t e = instrc (e.s ++ "runtime" ++ typInstr "printf" t.t ++ paren (t.s) ++ "V") ;
|
||||||
Return t exp = instr (exp.s ++ t.s ++ "_return") ;
|
Return t exp = instr (exp.s ++ typInstr "return" t.t) ;
|
||||||
Returnv = instr "return" ;
|
Returnv = instr "return" ;
|
||||||
End = ss [] ** {s2,s3 = []} ;
|
End = ss [] ** {s2,s3 = []} ;
|
||||||
|
|
||||||
EVar t x = instr (t.s ++ "_load" ++ x.s) ;
|
EVar t x = instr (typInstr "load" t.t ++ x.s) ;
|
||||||
EInt n = instr ("ldc" ++ n.s) ;
|
EInt n = instr ("ldc" ++ n.s) ;
|
||||||
EFloat a b = instr ("ldc" ++ a.s ++ "." ++ b.s) ;
|
EFloat a b = instr ("ldc" ++ a.s ++ "." ++ b.s) ;
|
||||||
EAdd = binopt "_add" ;
|
EAdd t _ = binopt "add" t.t ;
|
||||||
ESub = binopt "_sub" ;
|
ESub t _ = binopt "sub" t.t ;
|
||||||
EMul = binopt "_mul" ;
|
EMul t _ = binopt "mul" t.t ;
|
||||||
ELt t = binop ("invokestatic" ++ t.s ++ "runtime/lt" ++ paren (t.s ++ t.s) ++ "i") ;
|
ELt t _ = binop ("runtime" ++ typInstr "lt" t.t ++ paren (t.s ++ t.s) ++ "I") ;
|
||||||
EAppNil val f = instr (
|
EAppNil val f = instr (
|
||||||
"invokestatic" ++ f.s ++ paren [] ++ val.s
|
"static" ++ f.s ++ paren [] ++ val.s
|
||||||
) ;
|
) ;
|
||||||
EApp args val f exps = instr (
|
EApp args val f exps = instr (
|
||||||
exps.s ++
|
exps.s ++
|
||||||
"invokestatic" ++ f.s ++ paren args.s ++ val.s
|
"static" ++ f.s ++ paren args.s ++ val.s
|
||||||
) ;
|
) ;
|
||||||
|
|
||||||
TNum t = t ;
|
TInt = {s = "I" ; t = TIInt} ;
|
||||||
TInt = ss "i" ;
|
TFloat = {s = "F" ; t = TIFloat} ;
|
||||||
TFloat = ss "f" ;
|
|
||||||
NilTyp = ss [] ;
|
NilTyp = ss [] ;
|
||||||
ConsTyp = cc2 ;
|
ConsTyp = cc2 ;
|
||||||
OneExp _ e = e ;
|
OneExp _ e = e ;
|
||||||
|
|||||||
@@ -61,6 +61,14 @@ resource ResImper = open Predef in {
|
|||||||
|
|
||||||
-- operations for JVM
|
-- operations for JVM
|
||||||
|
|
||||||
|
param TypIdent = TIInt | TIFloat ; -- to be continued
|
||||||
|
|
||||||
|
oper
|
||||||
|
typInstr : Str -> TypIdent -> Str = \instr,t -> case t of {
|
||||||
|
TIInt => "i" + instr ;
|
||||||
|
TIFloat => "f" + instr
|
||||||
|
} ;
|
||||||
|
|
||||||
Instr : Type = {s,s2,s3 : Str} ; -- code, variables, labels
|
Instr : Type = {s,s2,s3 : Str} ; -- code, variables, labels
|
||||||
instr : Str -> Instr = \s ->
|
instr : Str -> Instr = \s ->
|
||||||
statement s ** {s2,s3 = []} ;
|
statement s ** {s2,s3 = []} ;
|
||||||
@@ -72,6 +80,6 @@ resource ResImper = open Predef in {
|
|||||||
ss (s ++ ";" ++ i.s) ** {s2 = v ++ i.s2 ; s3 = i.s3} ;
|
ss (s ++ ";" ++ i.s) ** {s2 = v ++ i.s2 ; s3 = i.s3} ;
|
||||||
binop : Str -> SS -> SS -> SS = \op, x, y ->
|
binop : Str -> SS -> SS -> SS = \op, x, y ->
|
||||||
ss (x.s ++ y.s ++ op ++ ";") ;
|
ss (x.s ++ y.s ++ op ++ ";") ;
|
||||||
binopt : Str -> SS -> SS -> SS -> SS = \op, t ->
|
binopt : Str -> TypIdent -> SS -> SS -> SS = \op, t ->
|
||||||
binop (t.s ++ op) ;
|
binop (typInstr op t) ;
|
||||||
}
|
}
|
||||||
@@ -24,27 +24,23 @@ mkJVM cls = unlines . reverse . fst . foldl trans ([],([],0)) . lines where
|
|||||||
| f == "main" ->
|
| f == "main" ->
|
||||||
(".method public static main([Ljava/lang/String;)V":code,([],1))
|
(".method public static main([Ljava/lang/String;)V":code,([],1))
|
||||||
| otherwise ->
|
| otherwise ->
|
||||||
(unwords [".method",p,s, f ++ typesig ns] : code,([],0))
|
(unwords [".method",p,s, f ++ glue ns] : code,([],0))
|
||||||
"alloc":t:x:_ -> (("; " ++ s):code, ((x,v):env, v + size t))
|
"alloc":t:x:_ -> (("; " ++ s):code, ((x,v):env, v + size t))
|
||||||
".limit":"locals":ns -> chCode (".limit locals " ++ show (length ns))
|
".limit":"locals":ns -> chCode (".limit locals " ++ show (length ns))
|
||||||
"invokestatic":t:f:ns
|
"runtime":f:ns -> chCode $ "invokestatic " ++ "runtime/" ++ f ++ glue ns
|
||||||
| take 8 f == "runtime/" ->
|
"static":f:ns -> chCode $ "invokestatic " ++ cls ++ "/" ++ f ++ glue ns
|
||||||
chCode $ "invokestatic " ++ "runtime/" ++ t ++ drop 8 f ++ typesig ns
|
|
||||||
"invokestatic":f:ns ->
|
|
||||||
chCode $ "invokestatic " ++ cls ++ "/" ++ f ++ typesig ns
|
|
||||||
"alloc":ns -> chCode $ "; " ++ s
|
"alloc":ns -> chCode $ "; " ++ s
|
||||||
t:('_':instr):[";"] -> chCode $ t ++ instr
|
ins:x:_ | symb ins -> chCode $ ins ++ " " ++ look x
|
||||||
t:('_':instr):x:_ -> chCode $ t ++ instr ++ " " ++ look x
|
"goto":ns -> chCode $ "goto " ++ glue ns
|
||||||
"goto":ns -> chCode $ "goto " ++ label ns
|
"ifeq":ns -> chCode $ "ifeq " ++ glue ns
|
||||||
"ifeq":ns -> chCode $ "ifeq " ++ label ns
|
"label":ns -> chCode $ glue ns ++ ":"
|
||||||
"label":ns -> chCode $ label ns ++ ":"
|
|
||||||
";":[] -> chCode ""
|
";":[] -> chCode ""
|
||||||
_ -> chCode s
|
_ -> chCode s
|
||||||
where
|
where
|
||||||
chCode c = (c:code,(env,v))
|
chCode c = (c:code,(env,v))
|
||||||
look x = maybe (error $ x ++ show env) show $ lookup x env
|
look x = maybe (error $ x ++ show env) show $ lookup x env
|
||||||
typesig = init . map toUpper . concat
|
glue = init . concat
|
||||||
label = init . concat
|
symb = flip elem ["load","store"] . tail
|
||||||
size t = case t of
|
size t = case t of
|
||||||
"d" -> 2
|
"d" -> 2
|
||||||
_ -> 1
|
_ -> 1
|
||||||
|
|||||||
@@ -60,20 +60,18 @@ prToken t = case t of
|
|||||||
|
|
||||||
_ -> show t
|
_ -> show t
|
||||||
|
|
||||||
|
data BTree = N | B String Tok BTree BTree deriving (Show)
|
||||||
|
|
||||||
eitherResIdent :: (String -> Tok) -> String -> Tok
|
eitherResIdent :: (String -> Tok) -> String -> Tok
|
||||||
eitherResIdent tv s = if isResWord s then (TS s) else (tv s) where
|
eitherResIdent tv s = treeFind resWords
|
||||||
isResWord s = isInTree s $
|
where
|
||||||
B "int" (B "float" (B "else" N N) (B "if" N N)) (B "return" (B "printf" N N) (B "while" N N))
|
treeFind N = tv s
|
||||||
|
treeFind (B a t left right) | s < a = treeFind left
|
||||||
|
| s > a = treeFind right
|
||||||
|
| s == a = t
|
||||||
|
|
||||||
data BTree = N | B String BTree BTree deriving (Show)
|
resWords = b "int" (b "float" (b "else" N N) (b "if" N N)) (b "return" (b "printf" N N) (b "while" N N))
|
||||||
|
where b s = B s (TS s)
|
||||||
isInTree :: String -> BTree -> Bool
|
|
||||||
isInTree x tree = case tree of
|
|
||||||
N -> False
|
|
||||||
B a left right
|
|
||||||
| x < a -> isInTree x left
|
|
||||||
| x > a -> isInTree x right
|
|
||||||
| x == a -> True
|
|
||||||
|
|
||||||
unescapeInitTail :: String -> String
|
unescapeInitTail :: String -> String
|
||||||
unescapeInitTail = unesc . tail where
|
unescapeInitTail = unesc . tail where
|
||||||
|
|||||||
@@ -109,18 +109,6 @@ happyIn21 x = unsafeCoerce# x
|
|||||||
happyOut21 :: (HappyAbsSyn t6 t7) -> (CFTree)
|
happyOut21 :: (HappyAbsSyn t6 t7) -> (CFTree)
|
||||||
happyOut21 x = unsafeCoerce# x
|
happyOut21 x = unsafeCoerce# x
|
||||||
{-# INLINE happyOut21 #-}
|
{-# INLINE happyOut21 #-}
|
||||||
happyIn22 :: (CFTree) -> (HappyAbsSyn t6 t7)
|
|
||||||
happyIn22 x = unsafeCoerce# x
|
|
||||||
{-# INLINE happyIn22 #-}
|
|
||||||
happyOut22 :: (HappyAbsSyn t6 t7) -> (CFTree)
|
|
||||||
happyOut22 x = unsafeCoerce# x
|
|
||||||
{-# INLINE happyOut22 #-}
|
|
||||||
happyIn23 :: (CFTree) -> (HappyAbsSyn t6 t7)
|
|
||||||
happyIn23 x = unsafeCoerce# x
|
|
||||||
{-# INLINE happyIn23 #-}
|
|
||||||
happyOut23 :: (HappyAbsSyn t6 t7) -> (CFTree)
|
|
||||||
happyOut23 x = unsafeCoerce# x
|
|
||||||
{-# INLINE happyOut23 #-}
|
|
||||||
happyInTok :: Token -> (HappyAbsSyn t6 t7)
|
happyInTok :: Token -> (HappyAbsSyn t6 t7)
|
||||||
happyInTok x = unsafeCoerce# x
|
happyInTok x = unsafeCoerce# x
|
||||||
{-# INLINE happyInTok #-}
|
{-# INLINE happyInTok #-}
|
||||||
@@ -129,21 +117,21 @@ happyOutTok x = unsafeCoerce# x
|
|||||||
{-# INLINE happyOutTok #-}
|
{-# INLINE happyOutTok #-}
|
||||||
|
|
||||||
happyActOffsets :: HappyAddr
|
happyActOffsets :: HappyAddr
|
||||||
happyActOffsets = HappyA# "\xf8\xff\xfc\xff\x05\x00\xcc\x00\x00\x00\xde\x00\xd5\x00\xc8\x00\x00\x00\xc4\x00\xd1\x00\x00\x00\x05\x00\x00\x00\xda\x00\xc2\x00\xc6\x00\x00\x00\xfc\xff\x00\x00\xd9\x00\x00\x00\xd8\x00\x03\x00\xd7\x00\xc1\x00\xbd\x00\xd4\x00\x05\x00\xd0\x00\x00\x00\x2c\x00\x05\x00\xcb\x00\xcf\x00\x05\x00\xcd\x00\x05\x00\x05\x00\x05\x00\x05\x00\xb4\x00\x01\x00\xc3\x00\x89\x00\x00\x00\x00\x00\x7d\x00\xfb\xff\x7d\x00\x00\x00\x00\x00\xc5\x00\xfc\xff\xfc\xff\x87\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x00\x11\x00\x6c\x00\x76\x00\x6b\x00\xfc\xff\x05\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\x05\x00\x00\x00\x00\x00\x63\x00\x6a\x00\xfc\xff\xfc\xff\x61\x00\x59\x00\xf8\xff\xfc\xff\x64\x00\x00\x00\x60\x00\xfc\xff\xfc\xff\xfc\xff\x5a\x00\x00\x00\x52\x00\x00\x00\x48\x00\xf8\xff\x00\x00\x00\x00\x00\x00\xf8\xff\x00\x00\x29\x00\x00\x00"#
|
happyActOffsets = HappyA# "\x1c\x00\xfc\xff\x05\x00\xc0\x00\x00\x00\xcb\x00\xc2\x00\xbf\x00\x00\x00\x21\x00\xbe\x00\x00\x00\x05\x00\x00\x00\xc7\x00\xba\x00\xb3\x00\xfc\xff\x00\x00\xc5\x00\x00\x00\xc4\x00\x03\x00\xc3\x00\xb1\x00\xaa\x00\xc1\x00\x05\x00\xbd\x00\x00\x00\x0c\x00\x05\x00\xb9\x00\xbc\x00\x05\x00\xbb\x00\x05\x00\x05\x00\x05\x00\x05\x00\xa4\x00\x01\x00\xb7\x00\xb8\x00\x00\x00\x00\x00\xaf\x00\xfb\xff\xaf\x00\x00\x00\x00\x00\xb5\x00\xfc\xff\xfc\xff\xb6\x00\xb0\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x11\x00\x9f\x00\xb2\x00\xae\x00\xfc\xff\x05\x00\xfc\xff\x00\x00\x00\x00\xfc\xff\x00\x00\x05\x00\x00\x00\x00\x00\xa3\x00\xad\x00\xfc\xff\xfc\xff\xa9\x00\xa5\x00\x1c\x00\xfc\xff\x9c\x00\x00\x00\x59\x00\xfc\xff\xfc\xff\xfc\xff\x56\x00\x00\x00\x53\x00\x00\x00\x47\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x35\x00\x00\x00"#
|
||||||
|
|
||||||
happyGotoOffsets :: HappyAddr
|
happyGotoOffsets :: HappyAddr
|
||||||
happyGotoOffsets = HappyA# "\x49\x00\x7a\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x1d\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x0c\x00\x9b\x00\x00\x00\x00\x00\x94\x00\x00\x00\x36\x00\xc7\x00\xbe\x00\xc0\x00\x14\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x0b\x00\x00\x00\x00\x00\x62\x00\x8d\x00\x5c\x00\x00\x00\x00\x00\x56\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x4a\x00\x00\x00\x00\x00\x15\x00\x32\x00\x00\x00\x00\x00\x00\x00\x44\x00\x3e\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00"#
|
happyGotoOffsets = HappyA# "\xa2\x00\x5c\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x33\x00\x74\x00\x00\x00\x00\x00\x6d\x00\x00\x00\xa7\x00\xa0\x00\x97\x00\x99\x00\x2f\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x0b\x00\x00\x00\x00\x00\x4d\x00\x66\x00\x4c\x00\x00\x00\x00\x00\x49\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x3e\x00\x00\x00\x00\x00\xff\xff\x16\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x3a\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00"#
|
||||||
|
|
||||||
happyDefActions :: HappyAddr
|
happyDefActions :: HappyAddr
|
||||||
happyDefActions = HappyA# "\xd4\xff\xe9\xff\x00\x00\x00\x00\xfc\xff\xed\xff\xee\xff\x00\x00\xfa\xff\xf9\xff\xf7\xff\xf4\xff\x00\x00\xfb\xff\x00\x00\x00\x00\x00\x00\xe2\xff\xe9\xff\xdf\xff\x00\x00\xde\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\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\xd7\xff\x00\x00\xf0\xff\xef\xff\xf5\xff\xf8\xff\xf6\xff\xf3\xff\xf2\xff\x00\x00\xe9\xff\xe9\xff\x00\x00\x00\x00\xe3\xff\xe1\xff\xe0\xff\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xff\x00\x00\xe9\xff\xeb\xff\xea\xff\xe9\xff\xf1\xff\x00\x00\xd8\xff\xec\xff\x00\x00\x00\x00\xe9\xff\xe9\xff\x00\x00\xda\xff\x00\x00\xe9\xff\x00\x00\xe4\xff\x00\x00\xe9\xff\xe9\xff\xe9\xff\x00\x00\xd9\xff\x00\x00\xdb\xff\x00\x00\xd4\xff\xe7\xff\xe8\xff\xd2\xff\xd4\xff\xd3\xff\xdc\xff"#
|
happyDefActions = HappyA# "\xd6\xff\xe9\xff\x00\x00\x00\x00\xfc\xff\xed\xff\xee\xff\x00\x00\xfa\xff\xf9\xff\xf7\xff\xf4\xff\x00\x00\xfb\xff\x00\x00\x00\x00\x00\x00\xe9\xff\xe1\xff\x00\x00\xe0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\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\xd9\xff\x00\x00\xf0\xff\xef\xff\xf5\xff\xf8\xff\xf6\xff\xf3\xff\xf2\xff\x00\x00\xe9\xff\xe9\xff\x00\x00\x00\x00\xe3\xff\xe2\xff\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\xff\x00\x00\xe9\xff\xeb\xff\xea\xff\xe9\xff\xf1\xff\x00\x00\xda\xff\xec\xff\x00\x00\x00\x00\xe9\xff\xe9\xff\x00\x00\xdc\xff\x00\x00\xe9\xff\x00\x00\xe4\xff\x00\x00\xe9\xff\xe9\xff\xe9\xff\x00\x00\xdb\xff\x00\x00\xdd\xff\x00\x00\xd6\xff\xe7\xff\xe8\xff\xd4\xff\xd6\xff\xd5\xff\xde\xff"#
|
||||||
|
|
||||||
happyCheck :: HappyAddr
|
happyCheck :: HappyAddr
|
||||||
happyCheck = HappyA# "\xff\xff\x05\x00\x01\x00\x02\x00\x01\x00\x0a\x00\x01\x00\x04\x00\x10\x00\x0e\x00\x12\x00\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x02\x00\x08\x00\x01\x00\x0a\x00\x16\x00\x17\x00\x16\x00\x17\x00\x16\x00\x17\x00\x00\x00\x09\x00\x00\x00\x0b\x00\x10\x00\x0d\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x0f\x00\x08\x00\x09\x00\x00\x00\x01\x00\x00\x00\x07\x00\x0f\x00\x09\x00\x06\x00\x0b\x00\x00\x00\x07\x00\x0e\x00\x09\x00\x19\x00\x0b\x00\x00\x00\x07\x00\x09\x00\x09\x00\x0b\x00\x0b\x00\x00\x00\x07\x00\x04\x00\x09\x00\x11\x00\x0b\x00\x00\x00\x07\x00\x09\x00\x09\x00\x0b\x00\x0b\x00\x00\x00\x07\x00\x06\x00\x09\x00\x11\x00\x0b\x00\x00\x00\x07\x00\x04\x00\x09\x00\x07\x00\x0b\x00\x00\x00\x07\x00\x04\x00\x09\x00\x05\x00\x0b\x00\x00\x00\x07\x00\x06\x00\x09\x00\x02\x00\x0b\x00\x00\x00\x07\x00\x05\x00\x09\x00\x0f\x00\x0b\x00\x00\x00\x07\x00\x07\x00\x09\x00\x02\x00\x0b\x00\x00\x00\x07\x00\x09\x00\x09\x00\x0b\x00\x0b\x00\x0d\x00\x07\x00\x16\x00\x09\x00\x09\x00\x0b\x00\x0b\x00\x0c\x00\x02\x00\x02\x00\x0d\x00\x02\x00\x11\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x00\x00\x01\x00\x04\x00\x05\x00\x06\x00\x05\x00\x06\x00\x00\x00\x01\x00\x04\x00\x07\x00\x17\x00\x05\x00\x06\x00\x0a\x00\x02\x00\x0c\x00\x06\x00\x0e\x00\x04\x00\x04\x00\x01\x00\x19\x00\x16\x00\x01\x00\x01\x00\x01\x00\x19\x00\x16\x00\x03\x00\x0d\x00\x01\x00\x0b\x00\x19\x00\x16\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"#
|
happyCheck = HappyA# "\xff\xff\x05\x00\x01\x00\x02\x00\x01\x00\x0a\x00\x01\x00\x04\x00\x09\x00\x0e\x00\x0b\x00\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x02\x00\x08\x00\x09\x00\x00\x00\x16\x00\x17\x00\x16\x00\x17\x00\x16\x00\x17\x00\x07\x00\x09\x00\x09\x00\x0b\x00\x10\x00\x0c\x00\x12\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x0a\x00\x10\x00\x0c\x00\x12\x00\x0e\x00\x01\x00\x0d\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x07\x00\x07\x00\x09\x00\x09\x00\x07\x00\x07\x00\x09\x00\x09\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x19\x00\x07\x00\x07\x00\x09\x00\x09\x00\x07\x00\x07\x00\x09\x00\x09\x00\x00\x00\x00\x00\x06\x00\x04\x00\x00\x00\x00\x00\x04\x00\x07\x00\x07\x00\x09\x00\x09\x00\x07\x00\x07\x00\x09\x00\x09\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x00\x00\x01\x00\x00\x00\x01\x00\x04\x00\x05\x00\x06\x00\x05\x00\x06\x00\x00\x00\x01\x00\x06\x00\x09\x00\x0a\x00\x05\x00\x06\x00\x00\x00\x01\x00\x0f\x00\x09\x00\x09\x00\x07\x00\x06\x00\x05\x00\x02\x00\x0f\x00\x0f\x00\x0f\x00\x05\x00\x02\x00\x16\x00\x02\x00\x07\x00\x02\x00\x04\x00\x02\x00\x17\x00\x0d\x00\x02\x00\x07\x00\x06\x00\x04\x00\x04\x00\x01\x00\x19\x00\x01\x00\x01\x00\x01\x00\x16\x00\xff\xff\x16\x00\x03\x00\x0d\x00\x01\x00\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\xff\xff\xff\xff\x16\x00\xff\xff\x19\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"#
|
||||||
|
|
||||||
happyTable :: HappyAddr
|
happyTable :: HappyAddr
|
||||||
happyTable = HappyA# "\x00\x00\x13\x00\x0d\x00\x2e\x00\x0d\x00\x27\x00\x0d\x00\x1f\x00\x14\x00\x29\x00\x16\x00\x51\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x05\x00\x42\x00\x38\x00\x2e\x00\x39\x00\x05\x00\x0e\x00\x05\x00\x0e\x00\x05\x00\x0e\x00\x1b\x00\x3f\x00\x22\x00\x11\x00\x14\x00\x5d\x00\x16\x00\x05\x00\x06\x00\x2b\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x2b\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0e\x00\x4a\x00\x3b\x00\x3c\x00\x05\x00\x06\x00\x0e\x00\x5b\x00\x2c\x00\x10\x00\x32\x00\x11\x00\x0e\x00\x60\x00\x5c\x00\x10\x00\xdc\xff\x11\x00\x0e\x00\x61\x00\x19\x00\x10\x00\x11\x00\x11\x00\x0e\x00\x58\x00\x64\x00\x10\x00\x62\x00\x11\x00\x0e\x00\x54\x00\x19\x00\x10\x00\x11\x00\x11\x00\x0e\x00\x55\x00\x5f\x00\x10\x00\x1a\x00\x11\x00\x0e\x00\x4b\x00\x60\x00\x10\x00\x53\x00\x11\x00\x0e\x00\x4c\x00\x5a\x00\x10\x00\x54\x00\x11\x00\x0e\x00\x4e\x00\x5b\x00\x10\x00\x57\x00\x11\x00\x0e\x00\x45\x00\x50\x00\x10\x00\x58\x00\x11\x00\x0e\x00\x46\x00\x44\x00\x10\x00\x51\x00\x11\x00\x0e\x00\x21\x00\x3f\x00\x10\x00\x11\x00\x11\x00\x40\x00\x0f\x00\x05\x00\x10\x00\x19\x00\x11\x00\x11\x00\x64\x00\x43\x00\x45\x00\x26\x00\x49\x00\x65\x00\x05\x00\x06\x00\x4d\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x34\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x37\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x3d\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x1d\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x24\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x05\x00\x06\x00\x30\x00\x0a\x00\x0b\x00\x2f\x00\x0b\x00\x05\x00\x06\x00\x48\x00\x4a\x00\x0e\x00\x31\x00\x0b\x00\x27\x00\x34\x00\x28\x00\x37\x00\x29\x00\x36\x00\x3d\x00\x3f\x00\xff\xff\x05\x00\x1d\x00\x20\x00\x21\x00\xff\xff\x05\x00\x24\x00\x26\x00\x2b\x00\x2a\x00\xff\xff\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x12\x00\x0d\x00\x2d\x00\x0d\x00\x26\x00\x0d\x00\x1e\x00\x3d\x00\x28\x00\x5b\x00\x4f\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x05\x00\x40\x00\x39\x00\x3a\x00\x0e\x00\x05\x00\x0e\x00\x05\x00\x0e\x00\x05\x00\x0e\x00\x59\x00\x3d\x00\x10\x00\x3e\x00\x13\x00\x5a\x00\x15\x00\x05\x00\x06\x00\x2a\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x26\x00\x13\x00\x27\x00\x15\x00\x28\x00\x2d\x00\x48\x00\x05\x00\x06\x00\x2a\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0e\x00\x0e\x00\x37\x00\x1a\x00\x0e\x00\x0e\x00\x2b\x00\x5e\x00\x5f\x00\x10\x00\x10\x00\x56\x00\x52\x00\x10\x00\x10\x00\x0e\x00\x0e\x00\x21\x00\x62\x00\x0e\x00\x0e\x00\xde\xff\x53\x00\x49\x00\x10\x00\x10\x00\x4a\x00\x4c\x00\x10\x00\x10\x00\x0e\x00\x0e\x00\x5d\x00\x5e\x00\x0e\x00\x0e\x00\x58\x00\x43\x00\x44\x00\x10\x00\x10\x00\x20\x00\x0f\x00\x10\x00\x10\x00\x05\x00\x06\x00\x4b\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x33\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x36\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x3b\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x1c\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x23\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\x05\x00\x06\x00\x2f\x00\x0a\x00\x0b\x00\x2e\x00\x0b\x00\x05\x00\x06\x00\x59\x00\x18\x00\x62\x00\x30\x00\x0b\x00\x05\x00\x06\x00\x63\x00\x18\x00\x18\x00\x51\x00\x31\x00\x52\x00\x55\x00\x60\x00\x19\x00\x56\x00\x4e\x00\x4f\x00\x05\x00\x41\x00\x42\x00\x43\x00\x46\x00\x47\x00\x0e\x00\x25\x00\x33\x00\x48\x00\x36\x00\x35\x00\x3b\x00\x3d\x00\xff\xff\x1c\x00\x1f\x00\x20\x00\x05\x00\x00\x00\x05\x00\x23\x00\x25\x00\x2a\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x05\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"#
|
||||||
|
|
||||||
happyReduceArr = array (3, 45) [
|
happyReduceArr = array (3, 43) [
|
||||||
(3 , happyReduce_3),
|
(3 , happyReduce_3),
|
||||||
(4 , happyReduce_4),
|
(4 , happyReduce_4),
|
||||||
(5 , happyReduce_5),
|
(5 , happyReduce_5),
|
||||||
@@ -184,13 +172,11 @@ happyReduceArr = array (3, 45) [
|
|||||||
(40 , happyReduce_40),
|
(40 , happyReduce_40),
|
||||||
(41 , happyReduce_41),
|
(41 , happyReduce_41),
|
||||||
(42 , happyReduce_42),
|
(42 , happyReduce_42),
|
||||||
(43 , happyReduce_43),
|
(43 , happyReduce_43)
|
||||||
(44 , happyReduce_44),
|
|
||||||
(45 , happyReduce_45)
|
|
||||||
]
|
]
|
||||||
|
|
||||||
happy_n_terms = 26 :: Int
|
happy_n_terms = 26 :: Int
|
||||||
happy_n_nonterms = 18 :: Int
|
happy_n_nonterms = 16 :: Int
|
||||||
|
|
||||||
happyReduce_3 = happySpecReduce_1 0# happyReduction_3
|
happyReduce_3 = happySpecReduce_1 0# happyReduction_3
|
||||||
happyReduction_3 happy_x_1
|
happyReduction_3 happy_x_1
|
||||||
@@ -227,7 +213,7 @@ happyReduction_7 happy_x_3
|
|||||||
= case happyOut10 happy_x_1 of { happy_var_1 ->
|
= case happyOut10 happy_x_1 of { happy_var_1 ->
|
||||||
case happyOut10 happy_x_3 of { happy_var_3 ->
|
case happyOut10 happy_x_3 of { happy_var_3 ->
|
||||||
happyIn9
|
happyIn9
|
||||||
(mkFunTree "ELt" [([],[]),([],[0]),([],[1])] [ happy_var_1 , happy_var_3 ]
|
(mkFunTree "ELt" [([],[]),([],[]),([],[0]),([],[1])] [ happy_var_1 , happy_var_3 ]
|
||||||
)}}
|
)}}
|
||||||
|
|
||||||
happyReduce_8 = happySpecReduce_1 4# happyReduction_8
|
happyReduce_8 = happySpecReduce_1 4# happyReduction_8
|
||||||
@@ -244,7 +230,7 @@ happyReduction_9 happy_x_3
|
|||||||
= case happyOut10 happy_x_1 of { happy_var_1 ->
|
= case happyOut10 happy_x_1 of { happy_var_1 ->
|
||||||
case happyOut11 happy_x_3 of { happy_var_3 ->
|
case happyOut11 happy_x_3 of { happy_var_3 ->
|
||||||
happyIn10
|
happyIn10
|
||||||
(mkFunTree "EAdd" [([],[]),([],[0]),([],[1])] [ happy_var_1 , happy_var_3 ]
|
(mkFunTree "EAdd" [([],[]),([],[]),([],[0]),([],[1])] [ happy_var_1 , happy_var_3 ]
|
||||||
)}}
|
)}}
|
||||||
|
|
||||||
happyReduce_10 = happySpecReduce_3 4# happyReduction_10
|
happyReduce_10 = happySpecReduce_3 4# happyReduction_10
|
||||||
@@ -254,7 +240,7 @@ happyReduction_10 happy_x_3
|
|||||||
= case happyOut10 happy_x_1 of { happy_var_1 ->
|
= case happyOut10 happy_x_1 of { happy_var_1 ->
|
||||||
case happyOut11 happy_x_3 of { happy_var_3 ->
|
case happyOut11 happy_x_3 of { happy_var_3 ->
|
||||||
happyIn10
|
happyIn10
|
||||||
(mkFunTree "ESub" [([],[]),([],[0]),([],[1])] [ happy_var_1 , happy_var_3 ]
|
(mkFunTree "ESub" [([],[]),([],[]),([],[0]),([],[1])] [ happy_var_1 , happy_var_3 ]
|
||||||
)}}
|
)}}
|
||||||
|
|
||||||
happyReduce_11 = happySpecReduce_1 5# happyReduction_11
|
happyReduce_11 = happySpecReduce_1 5# happyReduction_11
|
||||||
@@ -271,7 +257,7 @@ happyReduction_12 happy_x_3
|
|||||||
= case happyOut11 happy_x_1 of { happy_var_1 ->
|
= case happyOut11 happy_x_1 of { happy_var_1 ->
|
||||||
case happyOut12 happy_x_3 of { happy_var_3 ->
|
case happyOut12 happy_x_3 of { happy_var_3 ->
|
||||||
happyIn11
|
happyIn11
|
||||||
(mkFunTree "EMul" [([],[]),([],[0]),([],[1])] [ happy_var_1 , happy_var_3 ]
|
(mkFunTree "EMul" [([],[]),([],[]),([],[0]),([],[1])] [ happy_var_1 , happy_var_3 ]
|
||||||
)}}
|
)}}
|
||||||
|
|
||||||
happyReduce_13 = happySpecReduce_3 6# happyReduction_13
|
happyReduce_13 = happySpecReduce_3 6# happyReduction_13
|
||||||
@@ -290,7 +276,7 @@ happyReduction_14 (happy_x_4 `HappyStk`
|
|||||||
happy_x_1 `HappyStk`
|
happy_x_1 `HappyStk`
|
||||||
happyRest)
|
happyRest)
|
||||||
= case happyOut6 happy_x_1 of { happy_var_1 ->
|
= case happyOut6 happy_x_1 of { happy_var_1 ->
|
||||||
case happyOut21 happy_x_3 of { happy_var_3 ->
|
case happyOut19 happy_x_3 of { happy_var_3 ->
|
||||||
happyIn12
|
happyIn12
|
||||||
(mkFunTree "EApp" [([],[]),([],[]),([],[0]),([],[1])] [ happy_var_1 , happy_var_3 ]
|
(mkFunTree "EApp" [([],[]),([],[]),([],[0]),([],[1])] [ happy_var_1 , happy_var_3 ]
|
||||||
) `HappyStk` happyRest}}
|
) `HappyStk` happyRest}}
|
||||||
@@ -440,123 +426,109 @@ happyReduction_27 (happy_x_6 `HappyStk`
|
|||||||
|
|
||||||
happyReduce_28 = happySpecReduce_1 8# happyReduction_28
|
happyReduce_28 = happySpecReduce_1 8# happyReduction_28
|
||||||
happyReduction_28 happy_x_1
|
happyReduction_28 happy_x_1
|
||||||
= case happyOut16 happy_x_1 of { happy_var_1 ->
|
= happyIn14
|
||||||
happyIn14
|
(mkFunTree "TFloat" [] [ ]
|
||||||
(mkFunTree "TNum" [([],[0])] [ happy_var_1 ]
|
)
|
||||||
)}
|
|
||||||
|
|
||||||
happyReduce_29 = happySpecReduce_1 9# happyReduction_29
|
happyReduce_29 = happySpecReduce_1 8# happyReduction_29
|
||||||
happyReduction_29 happy_x_1
|
happyReduction_29 happy_x_1
|
||||||
= case happyOut17 happy_x_1 of { happy_var_1 ->
|
= happyIn14
|
||||||
happyIn15
|
(mkFunTree "TInt" [] [ ]
|
||||||
(mkFunTree "TNum" [([],[0])] [ happy_var_1 ]
|
)
|
||||||
)}
|
|
||||||
|
|
||||||
happyReduce_30 = happySpecReduce_1 10# happyReduction_30
|
happyReduce_30 = happySpecReduce_1 9# happyReduction_30
|
||||||
happyReduction_30 happy_x_1
|
happyReduction_30 happy_x_1
|
||||||
= happyIn16
|
= happyIn15
|
||||||
(mkFunTree "TFloat" [] [ ]
|
(mkFunTree "TFloat" [] [ ]
|
||||||
)
|
)
|
||||||
|
|
||||||
happyReduce_31 = happySpecReduce_1 10# happyReduction_31
|
happyReduce_31 = happySpecReduce_1 9# happyReduction_31
|
||||||
happyReduction_31 happy_x_1
|
happyReduction_31 happy_x_1
|
||||||
= happyIn16
|
= happyIn15
|
||||||
(mkFunTree "TInt" [] [ ]
|
(mkFunTree "TInt" [] [ ]
|
||||||
)
|
)
|
||||||
|
|
||||||
happyReduce_32 = happySpecReduce_1 11# happyReduction_32
|
happyReduce_32 = happySpecReduce_1 10# happyReduction_32
|
||||||
happyReduction_32 happy_x_1
|
happyReduction_32 happy_x_1
|
||||||
= happyIn17
|
= case happyOut21 happy_x_1 of { happy_var_1 ->
|
||||||
(mkFunTree "TFloat" [] [ ]
|
happyIn16
|
||||||
)
|
|
||||||
|
|
||||||
happyReduce_33 = happySpecReduce_1 11# happyReduction_33
|
|
||||||
happyReduction_33 happy_x_1
|
|
||||||
= happyIn17
|
|
||||||
(mkFunTree "TInt" [] [ ]
|
|
||||||
)
|
|
||||||
|
|
||||||
happyReduce_34 = happySpecReduce_1 12# happyReduction_34
|
|
||||||
happyReduction_34 happy_x_1
|
|
||||||
= case happyOut23 happy_x_1 of { happy_var_1 ->
|
|
||||||
happyIn18
|
|
||||||
(mkFunTree "RecCons" [([],[]),([],[]),([[]],[]),([],[0])] [ happy_var_1 ]
|
(mkFunTree "RecCons" [([],[]),([],[]),([[]],[]),([],[0])] [ happy_var_1 ]
|
||||||
)}
|
)}
|
||||||
|
|
||||||
happyReduce_35 = happySpecReduce_1 12# happyReduction_35
|
happyReduce_33 = happySpecReduce_1 10# happyReduction_33
|
||||||
happyReduction_35 happy_x_1
|
happyReduction_33 happy_x_1
|
||||||
= case happyOut23 happy_x_1 of { happy_var_1 ->
|
= case happyOut21 happy_x_1 of { happy_var_1 ->
|
||||||
happyIn18
|
happyIn16
|
||||||
(mkFunTree "RecOne" [([],[]),([[]],[]),([],[0])] [ happy_var_1 ]
|
(mkFunTree "RecOne" [([],[]),([[]],[]),([],[0])] [ happy_var_1 ]
|
||||||
)}
|
)}
|
||||||
|
|
||||||
happyReduce_36 = happyReduce 4# 13# happyReduction_36
|
happyReduce_34 = happyReduce 4# 11# happyReduction_34
|
||||||
happyReduction_36 (happy_x_4 `HappyStk`
|
happyReduction_34 (happy_x_4 `HappyStk`
|
||||||
happy_x_3 `HappyStk`
|
happy_x_3 `HappyStk`
|
||||||
happy_x_2 `HappyStk`
|
happy_x_2 `HappyStk`
|
||||||
happy_x_1 `HappyStk`
|
happy_x_1 `HappyStk`
|
||||||
happyRest)
|
happyRest)
|
||||||
= case happyOut15 happy_x_1 of { happy_var_1 ->
|
= case happyOut15 happy_x_1 of { happy_var_1 ->
|
||||||
case happyOut6 happy_x_2 of { happy_var_2 ->
|
case happyOut6 happy_x_2 of { happy_var_2 ->
|
||||||
case happyOut19 happy_x_4 of { happy_var_4 ->
|
case happyOut17 happy_x_4 of { happy_var_4 ->
|
||||||
happyIn19
|
happyIn17
|
||||||
(mkFunTree "RecCons" [([],[0]),([],[]),([[1]],[2]),([],[])] [ happy_var_1 , happy_var_2 , happy_var_4 ]
|
(mkFunTree "RecCons" [([],[0]),([],[]),([[1]],[2]),([],[])] [ happy_var_1 , happy_var_2 , happy_var_4 ]
|
||||||
) `HappyStk` happyRest}}}
|
) `HappyStk` happyRest}}}
|
||||||
|
|
||||||
happyReduce_37 = happySpecReduce_2 13# happyReduction_37
|
happyReduce_35 = happySpecReduce_2 11# happyReduction_35
|
||||||
happyReduction_37 happy_x_2
|
happyReduction_35 happy_x_2
|
||||||
happy_x_1
|
happy_x_1
|
||||||
= case happyOut15 happy_x_1 of { happy_var_1 ->
|
= case happyOut15 happy_x_1 of { happy_var_1 ->
|
||||||
case happyOut6 happy_x_2 of { happy_var_2 ->
|
case happyOut6 happy_x_2 of { happy_var_2 ->
|
||||||
happyIn19
|
happyIn17
|
||||||
(mkFunTree "RecOne" [([],[0]),([[1]],[]),([],[])] [ happy_var_1 , happy_var_2 ]
|
(mkFunTree "RecOne" [([],[0]),([[1]],[]),([],[])] [ happy_var_1 , happy_var_2 ]
|
||||||
)}}
|
)}}
|
||||||
|
|
||||||
happyReduce_38 = happySpecReduce_1 14# happyReduction_38
|
happyReduce_36 = happySpecReduce_1 12# happyReduction_36
|
||||||
happyReduction_38 happy_x_1
|
happyReduction_36 happy_x_1
|
||||||
= case happyOut13 happy_x_1 of { happy_var_1 ->
|
= case happyOut13 happy_x_1 of { happy_var_1 ->
|
||||||
happyIn20
|
happyIn18
|
||||||
(mkFunTree "RecOne" [([],[]),([[]],[0]),([],[])] [ happy_var_1 ]
|
(mkFunTree "RecOne" [([],[]),([[]],[0]),([],[])] [ happy_var_1 ]
|
||||||
)}
|
)}
|
||||||
|
|
||||||
happyReduce_39 = happySpecReduce_3 15# happyReduction_39
|
happyReduce_37 = happySpecReduce_3 13# happyReduction_37
|
||||||
happyReduction_39 happy_x_3
|
happyReduction_37 happy_x_3
|
||||||
happy_x_2
|
happy_x_2
|
||||||
happy_x_1
|
happy_x_1
|
||||||
= case happyOut8 happy_x_1 of { happy_var_1 ->
|
= case happyOut8 happy_x_1 of { happy_var_1 ->
|
||||||
case happyOut21 happy_x_3 of { happy_var_3 ->
|
case happyOut19 happy_x_3 of { happy_var_3 ->
|
||||||
happyIn21
|
happyIn19
|
||||||
(mkFunTree "ConsExp" [([],[]),([],[]),([],[0]),([],[1])] [ happy_var_1 , happy_var_3 ]
|
(mkFunTree "ConsExp" [([],[]),([],[]),([],[0]),([],[1])] [ happy_var_1 , happy_var_3 ]
|
||||||
)}}
|
)}}
|
||||||
|
|
||||||
happyReduce_40 = happySpecReduce_1 15# happyReduction_40
|
happyReduce_38 = happySpecReduce_1 13# happyReduction_38
|
||||||
happyReduction_40 happy_x_1
|
happyReduction_38 happy_x_1
|
||||||
= case happyOut8 happy_x_1 of { happy_var_1 ->
|
= case happyOut8 happy_x_1 of { happy_var_1 ->
|
||||||
happyIn21
|
happyIn19
|
||||||
(mkFunTree "OneExp" [([],[]),([],[0])] [ happy_var_1 ]
|
(mkFunTree "OneExp" [([],[]),([],[0])] [ happy_var_1 ]
|
||||||
)}
|
)}
|
||||||
|
|
||||||
happyReduce_41 = happySpecReduce_2 16# happyReduction_41
|
happyReduce_39 = happySpecReduce_2 14# happyReduction_39
|
||||||
happyReduction_41 happy_x_2
|
happyReduction_39 happy_x_2
|
||||||
happy_x_1
|
happy_x_1
|
||||||
= case happyOut15 happy_x_1 of { happy_var_1 ->
|
= case happyOut15 happy_x_1 of { happy_var_1 ->
|
||||||
case happyOut22 happy_x_2 of { happy_var_2 ->
|
case happyOut20 happy_x_2 of { happy_var_2 ->
|
||||||
happyIn22
|
happyIn20
|
||||||
(mkFunTree "ConsTyp" [([],[0]),([],[1])] [ happy_var_1 , happy_var_2 ]
|
(mkFunTree "ConsTyp" [([],[0]),([],[1])] [ happy_var_1 , happy_var_2 ]
|
||||||
)}}
|
)}}
|
||||||
|
|
||||||
happyReduce_42 = happySpecReduce_0 16# happyReduction_42
|
happyReduce_40 = happySpecReduce_0 14# happyReduction_40
|
||||||
happyReduction_42 = happyIn22
|
happyReduction_40 = happyIn20
|
||||||
(mkFunTree "NilTyp" [] [ ]
|
(mkFunTree "NilTyp" [] [ ]
|
||||||
)
|
)
|
||||||
|
|
||||||
happyReduce_43 = happySpecReduce_0 17# happyReduction_43
|
happyReduce_41 = happySpecReduce_0 15# happyReduction_41
|
||||||
happyReduction_43 = happyIn23
|
happyReduction_41 = happyIn21
|
||||||
(mkFunTree "Empty" [] [ ]
|
(mkFunTree "Empty" [] [ ]
|
||||||
)
|
)
|
||||||
|
|
||||||
happyReduce_44 = happyReduce 10# 17# happyReduction_44
|
happyReduce_42 = happyReduce 10# 15# happyReduction_42
|
||||||
happyReduction_44 (happy_x_10 `HappyStk`
|
happyReduction_42 (happy_x_10 `HappyStk`
|
||||||
happy_x_9 `HappyStk`
|
happy_x_9 `HappyStk`
|
||||||
happy_x_8 `HappyStk`
|
happy_x_8 `HappyStk`
|
||||||
happy_x_7 `HappyStk`
|
happy_x_7 `HappyStk`
|
||||||
@@ -569,15 +541,15 @@ happyReduction_44 (happy_x_10 `HappyStk`
|
|||||||
happyRest)
|
happyRest)
|
||||||
= case happyOut15 happy_x_1 of { happy_var_1 ->
|
= case happyOut15 happy_x_1 of { happy_var_1 ->
|
||||||
case happyOut6 happy_x_2 of { happy_var_2 ->
|
case happyOut6 happy_x_2 of { happy_var_2 ->
|
||||||
case happyOut19 happy_x_4 of { happy_var_4 ->
|
case happyOut17 happy_x_4 of { happy_var_4 ->
|
||||||
case happyOut20 happy_x_7 of { happy_var_7 ->
|
case happyOut18 happy_x_7 of { happy_var_7 ->
|
||||||
case happyOut18 happy_x_10 of { happy_var_10 ->
|
case happyOut16 happy_x_10 of { happy_var_10 ->
|
||||||
happyIn23
|
happyIn21
|
||||||
(mkFunTree "Funct" [([],[]),([],[0]),([[1]],[2,3,4])] [ happy_var_1 , happy_var_2 , happy_var_4 , happy_var_7 , happy_var_10 ]
|
(mkFunTree "Funct" [([],[]),([],[0]),([[1]],[2,3,4])] [ happy_var_1 , happy_var_2 , happy_var_4 , happy_var_7 , happy_var_10 ]
|
||||||
) `HappyStk` happyRest}}}}}
|
) `HappyStk` happyRest}}}}}
|
||||||
|
|
||||||
happyReduce_45 = happyReduce 9# 17# happyReduction_45
|
happyReduce_43 = happyReduce 9# 15# happyReduction_43
|
||||||
happyReduction_45 (happy_x_9 `HappyStk`
|
happyReduction_43 (happy_x_9 `HappyStk`
|
||||||
happy_x_8 `HappyStk`
|
happy_x_8 `HappyStk`
|
||||||
happy_x_7 `HappyStk`
|
happy_x_7 `HappyStk`
|
||||||
happy_x_6 `HappyStk`
|
happy_x_6 `HappyStk`
|
||||||
@@ -590,8 +562,8 @@ happyReduction_45 (happy_x_9 `HappyStk`
|
|||||||
= case happyOut15 happy_x_1 of { happy_var_1 ->
|
= case happyOut15 happy_x_1 of { happy_var_1 ->
|
||||||
case happyOut6 happy_x_2 of { happy_var_2 ->
|
case happyOut6 happy_x_2 of { happy_var_2 ->
|
||||||
case happyOut13 happy_x_6 of { happy_var_6 ->
|
case happyOut13 happy_x_6 of { happy_var_6 ->
|
||||||
case happyOut23 happy_x_9 of { happy_var_9 ->
|
case happyOut21 happy_x_9 of { happy_var_9 ->
|
||||||
happyIn23
|
happyIn21
|
||||||
(mkFunTree "FunctNil" [([],[0]),([],[2]),([[1]],[3])] [ happy_var_1 , happy_var_2 , happy_var_6 , happy_var_9 ]
|
(mkFunTree "FunctNil" [([],[0]),([],[2]),([[1]],[3])] [ happy_var_1 , happy_var_2 , happy_var_6 , happy_var_9 ]
|
||||||
) `HappyStk` happyRest}}}}
|
) `HappyStk` happyRest}}}}
|
||||||
|
|
||||||
@@ -635,7 +607,7 @@ happyReturn = (returnM)
|
|||||||
happyThen1 m k tks = (thenM) m (\a -> k a tks)
|
happyThen1 m k tks = (thenM) m (\a -> k a tks)
|
||||||
happyReturn1 = \a tks -> (returnM) a
|
happyReturn1 = \a tks -> (returnM) a
|
||||||
|
|
||||||
pProgram tks = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut23 x))
|
pProgram tks = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut21 x))
|
||||||
|
|
||||||
pStm tks = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut13 x))
|
pStm tks = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut13 x))
|
||||||
|
|
||||||
@@ -655,7 +627,7 @@ happyError ts =
|
|||||||
|
|
||||||
myLexer = tokens
|
myLexer = tokens
|
||||||
{-# LINE 1 "GenericTemplate.hs" #-}
|
{-# LINE 1 "GenericTemplate.hs" #-}
|
||||||
-- $Id: ParImperC.hs,v 1.2 2004/11/09 19:12:51 aarne Exp $
|
-- $Id: ParImperC.hs,v 1.3 2004/12/20 08:57:05 aarne Exp $
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user