Updated to simple CFGM grammar, use CFGM pretty printer when printing cfgm grammars.

This commit is contained in:
bringert
2004-09-29 15:53:46 +00:00
parent df2c63c559
commit 7492cfd236
8 changed files with 273 additions and 557 deletions

View File

@@ -3,6 +3,7 @@ module AbsCFG where
-- Haskell module generated by the BNF converter -- Haskell module generated by the BNF converter
newtype Ident = Ident String deriving (Eq,Ord,Show) newtype Ident = Ident String deriving (Eq,Ord,Show)
newtype SingleQuoteString = SingleQuoteString String deriving (Eq,Ord,Show)
data Grammars = data Grammars =
Grammars [Grammar] Grammars [Grammar]
deriving (Eq,Ord,Show) deriving (Eq,Ord,Show)
@@ -33,32 +34,10 @@ data Symbol =
deriving (Eq,Ord,Show) deriving (Eq,Ord,Show)
data Name = data Name =
Name [IdentParam] Category Name SingleQuoteString
deriving (Eq,Ord,Show) deriving (Eq,Ord,Show)
data Category = data Category =
Category IdentParam Ident [Proj] Category SingleQuoteString
deriving (Eq,Ord,Show)
data IdentParam =
IdentParam Ident [Field]
deriving (Eq,Ord,Show)
data Field =
Field KeyValue
deriving (Eq,Ord,Show)
data Proj =
Proj Param
deriving (Eq,Ord,Show)
data KeyValue =
KeyValue Ident Param
deriving (Eq,Ord,Show)
data Param =
ParamSimple Ident
| ParamPatt Ident [Param]
| ParamRec [KeyValue]
deriving (Eq,Ord,Show) deriving (Eq,Ord,Show)

View File

@@ -25,7 +25,12 @@ TermS. Symbol ::= String;
(:[]). [Symbol] ::= Symbol ; (:[]). [Symbol] ::= Symbol ;
(:). [Symbol] ::= Symbol [Symbol] ; (:). [Symbol] ::= Symbol [Symbol] ;
Name. Name ::= SingleQuoteString ;
Category. Category ::= SingleQuoteString ;
token SingleQuoteString '\'' ((char - ["'\\"]) | ('\\' ["'\\"]))* '\'' ;
{-
Name. Name ::= [IdentParam] Category; Name. Name ::= [IdentParam] Category;
terminator IdentParam "/"; terminator IdentParam "/";
@@ -46,3 +51,4 @@ ParamSimple. Param ::= Ident ;
ParamPatt. Param ::= Ident "(" [Param] ")" ; ParamPatt. Param ::= Ident "(" [Param] ")" ;
ParamRec. Param ::= "{" [KeyValue] "}" ; ParamRec. Param ::= "{" [KeyValue] "}" ;
separator Param "," ; separator Param "," ;
-}

View File

@@ -13,19 +13,19 @@ import Array
import Char (ord) import Char (ord)
#endif #endif
alex_base :: Array Int Int alex_base :: Array Int Int
alex_base = listArray (0,11) [1,57,66,0,9,154,362,0,277,485,211,51] alex_base = listArray (0,15) [-8,-3,2,0,-46,0,-6,-4,45,200,408,0,115,323,257,67]
alex_table :: Array Int Int alex_table :: Array Int Int
alex_table = listArray (0,740) [0,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,2,2,2,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,-1,-1,-1,-1,-1,3,3,-1,-1,3,4,3,3,11,11,11,11,11,11,11,11,11,11,3,3,-1,3,-1,-1,-1,2,2,2,2,2,3,0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,2,0,0,3,-1,3,-1,-1,-1,2,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,-1,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,6,6,0,0,0,0,-1,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,9,0,0,-1,6,9,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,10,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,6,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,10,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] alex_table = listArray (0,663) [0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,0,0,0,0,0,0,0,2,0,12,0,0,2,0,6,0,5,2,5,3,4,3,0,15,15,15,15,15,15,15,15,15,15,3,3,0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,3,7,3,8,0,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,15,15,15,15,15,15,15,15,15,15,-1,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,14,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,13,0,0,0,10,13,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,14,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,10,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,10,10,10,10,10,10,10,10]
alex_check :: Array Int Int alex_check :: Array Int Int
alex_check = listArray (0,740) [-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,9,10,11,12,13,62,-1,-1,-1,9,10,11,12,13,-1,-1,-1,-1,-1,-1,-1,-1,-1,32,-1,-1,91,92,93,94,95,96,32,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,39,-1,-1,-1,-1,-1,-1,-1,-1,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,215,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,34,-1,-1,247,95,39,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,92,-1,-1,-1,-1,-1,-1,-1,34,-1,-1,-1,-1,-1,-1,-1,-1,-1,110,-1,-1,-1,-1,-1,116,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,92,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,39,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,34,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,92,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1] alex_check = listArray (0,663) [-1,9,10,11,12,13,9,10,11,12,13,9,10,11,12,13,62,-1,-1,-1,-1,-1,-1,-1,32,-1,34,-1,-1,32,-1,39,-1,39,32,39,44,45,46,-1,48,49,50,51,52,53,54,55,56,57,58,59,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,39,93,92,-1,92,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,92,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,34,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,92,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,39,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,34,-1,-1,-1,95,39,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,92,-1,-1,-1,-1,-1,-1,-1,34,-1,-1,-1,-1,-1,-1,-1,-1,-1,110,-1,-1,-1,-1,-1,116,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,92,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,39,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255]
alex_deflt :: Array Int Int alex_deflt :: Array Int Int
alex_deflt = listArray (0,11) [5,-1,-1,-1,-1,-1,-1,-1,9,9,-1,-1] alex_deflt = listArray (0,15) [-1,-1,-1,-1,-1,-1,7,7,-1,-1,-1,-1,13,13,-1,-1]
alex_accept = listArray (0::Int,11) [[],[],[(AlexAccSkip)],[(AlexAcc (alex_action_1))],[],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_3))],[],[],[],[(AlexAcc (alex_action_4))]] alex_accept = listArray (0::Int,15) [[],[],[(AlexAccSkip)],[(AlexAcc (alex_action_1))],[],[(AlexAcc (alex_action_2))],[],[],[],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[],[],[],[(AlexAcc (alex_action_5))]]
{-# LINE 31 "LexCFG.x" #-} {-# LINE 32 "LexCFG.x" #-}
tok f p s = f p s tok f p s = f p s
@@ -36,13 +36,14 @@ data Tok =
| TV String -- identifiers | TV String -- identifiers
| TD String -- double precision float literals | TD String -- double precision float literals
| TC String -- character literals | TC String -- character literals
| T_SingleQuoteString String
deriving (Eq,Show) deriving (Eq,Show,Ord)
data Token = data Token =
PT Posn Tok PT Posn Tok
| Err Posn | Err Posn
deriving Show deriving (Eq,Show,Ord)
tokenPos (PT (Pn _ l _) _ :_) = "line " ++ show l tokenPos (PT (Pn _ l _) _ :_) = "line " ++ show l
tokenPos (Err (Pn _ l _) :_) = "line " ++ show l tokenPos (Err (Pn _ l _) :_) = "line " ++ show l
@@ -57,6 +58,8 @@ prToken t = case t of
PT _ (TV s) -> s PT _ (TV s) -> s
PT _ (TD s) -> s PT _ (TD s) -> s
PT _ (TC s) -> s PT _ (TC s) -> s
_ -> show t
PT _ (T_SingleQuoteString s) -> s
eitherResIdent :: (String -> Tok) -> String -> Tok eitherResIdent :: (String -> Tok) -> String -> Tok
@@ -90,7 +93,7 @@ unescapeInitTail = unesc . tail where
------------------------------------------------------------------- -------------------------------------------------------------------
data Posn = Pn !Int !Int !Int data Posn = Pn !Int !Int !Int
deriving (Eq, Show) deriving (Eq, Show,Ord)
alexStartPos :: Posn alexStartPos :: Posn
alexStartPos = Pn 0 1 1 alexStartPos = Pn 0 1 1
@@ -125,9 +128,10 @@ alexInputPrevChar :: AlexInput -> Char
alexInputPrevChar (p, c, s) = c alexInputPrevChar (p, c, s) = c
alex_action_1 = tok (\p s -> PT p (TS s)) alex_action_1 = tok (\p s -> PT p (TS s))
alex_action_2 = tok (\p s -> PT p (eitherResIdent TV s)) alex_action_2 = tok (\p s -> PT p (eitherResIdent T_SingleQuoteString s))
alex_action_3 = tok (\p s -> PT p (TL $ unescapeInitTail s)) alex_action_3 = tok (\p s -> PT p (eitherResIdent TV s))
alex_action_4 = tok (\p s -> PT p (TI s)) alex_action_4 = tok (\p s -> PT p (TL $ unescapeInitTail s))
alex_action_5 = tok (\p s -> PT p (TI s))
{-# LINE 1 "GenericTemplate.hs" #-} {-# LINE 1 "GenericTemplate.hs" #-}
{-# LINE 1 "<built-in>" #-} {-# LINE 1 "<built-in>" #-}
{-# LINE 1 "<command line>" #-} {-# LINE 1 "<command line>" #-}

View File

@@ -15,12 +15,13 @@ $i = [$l $d _ '] -- identifier character
$u = [\0-\255] -- universal: any character $u = [\0-\255] -- universal: any character
@rsyms = -- reserved words consisting of special symbols @rsyms = -- reserved words consisting of special symbols
\; | \: | \. | \- \> | \[ | \] | \, | \/ | \{ | \} | \! | \= | \( | \) \; | \: | \. | \- \> | \[ | \] | \,
:- :-
$white+ ; $white+ ;
@rsyms { tok (\p s -> PT p (TS s)) } @rsyms { tok (\p s -> PT p (TS s)) }
\' ($u # [\' \\]| \\ [\' \\]) * \' { tok (\p s -> PT p (eitherResIdent T_SingleQuoteString s)) }
$l $i* { tok (\p s -> PT p (eitherResIdent TV s)) } $l $i* { tok (\p s -> PT p (eitherResIdent TV s)) }
\" ([$u # [\" \\ \n]] | (\\ (\" | \\ | \' | n | t)))* \"{ tok (\p s -> PT p (TL $ unescapeInitTail s)) } \" ([$u # [\" \\ \n]] | (\\ (\" | \\ | \' | n | t)))* \"{ tok (\p s -> PT p (TL $ unescapeInitTail s)) }
@@ -39,13 +40,14 @@ data Tok =
| TV String -- identifiers | TV String -- identifiers
| TD String -- double precision float literals | TD String -- double precision float literals
| TC String -- character literals | TC String -- character literals
| T_SingleQuoteString String
deriving (Eq,Show) deriving (Eq,Show,Ord)
data Token = data Token =
PT Posn Tok PT Posn Tok
| Err Posn | Err Posn
deriving Show deriving (Eq,Show,Ord)
tokenPos (PT (Pn _ l _) _ :_) = "line " ++ show l tokenPos (PT (Pn _ l _) _ :_) = "line " ++ show l
tokenPos (Err (Pn _ l _) :_) = "line " ++ show l tokenPos (Err (Pn _ l _) :_) = "line " ++ show l
@@ -60,6 +62,8 @@ prToken t = case t of
PT _ (TV s) -> s PT _ (TV s) -> s
PT _ (TD s) -> s PT _ (TD s) -> s
PT _ (TC s) -> s PT _ (TC s) -> s
_ -> show t
PT _ (T_SingleQuoteString s) -> s
eitherResIdent :: (String -> Tok) -> String -> Tok eitherResIdent :: (String -> Tok) -> String -> Tok
@@ -93,7 +97,7 @@ unescapeInitTail = unesc . tail where
------------------------------------------------------------------- -------------------------------------------------------------------
data Posn = Pn !Int !Int !Int data Posn = Pn !Int !Int !Int
deriving (Eq, Show) deriving (Eq, Show,Ord)
alexStartPos :: Posn alexStartPos :: Posn
alexStartPos = Pn 0 1 1 alexStartPos = Pn 0 1 1

View File

@@ -12,198 +12,144 @@ import GHC.Exts
import GlaExts import GlaExts
#endif #endif
newtype HappyAbsSyn t4 t5 t6 = HappyAbsSyn (() -> ()) newtype HappyAbsSyn t4 t5 t6 t7 = HappyAbsSyn (() -> ())
happyIn4 :: t4 -> (HappyAbsSyn t4 t5 t6) happyIn4 :: t4 -> (HappyAbsSyn t4 t5 t6 t7)
happyIn4 x = unsafeCoerce# x happyIn4 x = unsafeCoerce# x
{-# INLINE happyIn4 #-} {-# INLINE happyIn4 #-}
happyOut4 :: (HappyAbsSyn t4 t5 t6) -> t4 happyOut4 :: (HappyAbsSyn t4 t5 t6 t7) -> t4
happyOut4 x = unsafeCoerce# x happyOut4 x = unsafeCoerce# x
{-# INLINE happyOut4 #-} {-# INLINE happyOut4 #-}
happyIn5 :: t5 -> (HappyAbsSyn t4 t5 t6) happyIn5 :: t5 -> (HappyAbsSyn t4 t5 t6 t7)
happyIn5 x = unsafeCoerce# x happyIn5 x = unsafeCoerce# x
{-# INLINE happyIn5 #-} {-# INLINE happyIn5 #-}
happyOut5 :: (HappyAbsSyn t4 t5 t6) -> t5 happyOut5 :: (HappyAbsSyn t4 t5 t6 t7) -> t5
happyOut5 x = unsafeCoerce# x happyOut5 x = unsafeCoerce# x
{-# INLINE happyOut5 #-} {-# INLINE happyOut5 #-}
happyIn6 :: t6 -> (HappyAbsSyn t4 t5 t6) happyIn6 :: t6 -> (HappyAbsSyn t4 t5 t6 t7)
happyIn6 x = unsafeCoerce# x happyIn6 x = unsafeCoerce# x
{-# INLINE happyIn6 #-} {-# INLINE happyIn6 #-}
happyOut6 :: (HappyAbsSyn t4 t5 t6) -> t6 happyOut6 :: (HappyAbsSyn t4 t5 t6 t7) -> t6
happyOut6 x = unsafeCoerce# x happyOut6 x = unsafeCoerce# x
{-# INLINE happyOut6 #-} {-# INLINE happyOut6 #-}
happyIn7 :: (Grammars) -> (HappyAbsSyn t4 t5 t6) happyIn7 :: t7 -> (HappyAbsSyn t4 t5 t6 t7)
happyIn7 x = unsafeCoerce# x happyIn7 x = unsafeCoerce# x
{-# INLINE happyIn7 #-} {-# INLINE happyIn7 #-}
happyOut7 :: (HappyAbsSyn t4 t5 t6) -> (Grammars) happyOut7 :: (HappyAbsSyn t4 t5 t6 t7) -> t7
happyOut7 x = unsafeCoerce# x happyOut7 x = unsafeCoerce# x
{-# INLINE happyOut7 #-} {-# INLINE happyOut7 #-}
happyIn8 :: (Grammar) -> (HappyAbsSyn t4 t5 t6) happyIn8 :: (Grammars) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn8 x = unsafeCoerce# x happyIn8 x = unsafeCoerce# x
{-# INLINE happyIn8 #-} {-# INLINE happyIn8 #-}
happyOut8 :: (HappyAbsSyn t4 t5 t6) -> (Grammar) happyOut8 :: (HappyAbsSyn t4 t5 t6 t7) -> (Grammars)
happyOut8 x = unsafeCoerce# x happyOut8 x = unsafeCoerce# x
{-# INLINE happyOut8 #-} {-# INLINE happyOut8 #-}
happyIn9 :: ([Grammar]) -> (HappyAbsSyn t4 t5 t6) happyIn9 :: (Grammar) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn9 x = unsafeCoerce# x happyIn9 x = unsafeCoerce# x
{-# INLINE happyIn9 #-} {-# INLINE happyIn9 #-}
happyOut9 :: (HappyAbsSyn t4 t5 t6) -> ([Grammar]) happyOut9 :: (HappyAbsSyn t4 t5 t6 t7) -> (Grammar)
happyOut9 x = unsafeCoerce# x happyOut9 x = unsafeCoerce# x
{-# INLINE happyOut9 #-} {-# INLINE happyOut9 #-}
happyIn10 :: (Flag) -> (HappyAbsSyn t4 t5 t6) happyIn10 :: ([Grammar]) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn10 x = unsafeCoerce# x happyIn10 x = unsafeCoerce# x
{-# INLINE happyIn10 #-} {-# INLINE happyIn10 #-}
happyOut10 :: (HappyAbsSyn t4 t5 t6) -> (Flag) happyOut10 :: (HappyAbsSyn t4 t5 t6 t7) -> ([Grammar])
happyOut10 x = unsafeCoerce# x happyOut10 x = unsafeCoerce# x
{-# INLINE happyOut10 #-} {-# INLINE happyOut10 #-}
happyIn11 :: ([Flag]) -> (HappyAbsSyn t4 t5 t6) happyIn11 :: (Flag) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn11 x = unsafeCoerce# x happyIn11 x = unsafeCoerce# x
{-# INLINE happyIn11 #-} {-# INLINE happyIn11 #-}
happyOut11 :: (HappyAbsSyn t4 t5 t6) -> ([Flag]) happyOut11 :: (HappyAbsSyn t4 t5 t6 t7) -> (Flag)
happyOut11 x = unsafeCoerce# x happyOut11 x = unsafeCoerce# x
{-# INLINE happyOut11 #-} {-# INLINE happyOut11 #-}
happyIn12 :: (Rule) -> (HappyAbsSyn t4 t5 t6) happyIn12 :: ([Flag]) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn12 x = unsafeCoerce# x happyIn12 x = unsafeCoerce# x
{-# INLINE happyIn12 #-} {-# INLINE happyIn12 #-}
happyOut12 :: (HappyAbsSyn t4 t5 t6) -> (Rule) happyOut12 :: (HappyAbsSyn t4 t5 t6 t7) -> ([Flag])
happyOut12 x = unsafeCoerce# x happyOut12 x = unsafeCoerce# x
{-# INLINE happyOut12 #-} {-# INLINE happyOut12 #-}
happyIn13 :: ([Rule]) -> (HappyAbsSyn t4 t5 t6) happyIn13 :: (Rule) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn13 x = unsafeCoerce# x happyIn13 x = unsafeCoerce# x
{-# INLINE happyIn13 #-} {-# INLINE happyIn13 #-}
happyOut13 :: (HappyAbsSyn t4 t5 t6) -> ([Rule]) happyOut13 :: (HappyAbsSyn t4 t5 t6 t7) -> (Rule)
happyOut13 x = unsafeCoerce# x happyOut13 x = unsafeCoerce# x
{-# INLINE happyOut13 #-} {-# INLINE happyOut13 #-}
happyIn14 :: (Profile) -> (HappyAbsSyn t4 t5 t6) happyIn14 :: ([Rule]) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn14 x = unsafeCoerce# x happyIn14 x = unsafeCoerce# x
{-# INLINE happyIn14 #-} {-# INLINE happyIn14 #-}
happyOut14 :: (HappyAbsSyn t4 t5 t6) -> (Profile) happyOut14 :: (HappyAbsSyn t4 t5 t6 t7) -> ([Rule])
happyOut14 x = unsafeCoerce# x happyOut14 x = unsafeCoerce# x
{-# INLINE happyOut14 #-} {-# INLINE happyOut14 #-}
happyIn15 :: (Ints) -> (HappyAbsSyn t4 t5 t6) happyIn15 :: (Profile) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn15 x = unsafeCoerce# x happyIn15 x = unsafeCoerce# x
{-# INLINE happyIn15 #-} {-# INLINE happyIn15 #-}
happyOut15 :: (HappyAbsSyn t4 t5 t6) -> (Ints) happyOut15 :: (HappyAbsSyn t4 t5 t6 t7) -> (Profile)
happyOut15 x = unsafeCoerce# x happyOut15 x = unsafeCoerce# x
{-# INLINE happyOut15 #-} {-# INLINE happyOut15 #-}
happyIn16 :: ([Ints]) -> (HappyAbsSyn t4 t5 t6) happyIn16 :: (Ints) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn16 x = unsafeCoerce# x happyIn16 x = unsafeCoerce# x
{-# INLINE happyIn16 #-} {-# INLINE happyIn16 #-}
happyOut16 :: (HappyAbsSyn t4 t5 t6) -> ([Ints]) happyOut16 :: (HappyAbsSyn t4 t5 t6 t7) -> (Ints)
happyOut16 x = unsafeCoerce# x happyOut16 x = unsafeCoerce# x
{-# INLINE happyOut16 #-} {-# INLINE happyOut16 #-}
happyIn17 :: ([Integer]) -> (HappyAbsSyn t4 t5 t6) happyIn17 :: ([Ints]) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn17 x = unsafeCoerce# x happyIn17 x = unsafeCoerce# x
{-# INLINE happyIn17 #-} {-# INLINE happyIn17 #-}
happyOut17 :: (HappyAbsSyn t4 t5 t6) -> ([Integer]) happyOut17 :: (HappyAbsSyn t4 t5 t6 t7) -> ([Ints])
happyOut17 x = unsafeCoerce# x happyOut17 x = unsafeCoerce# x
{-# INLINE happyOut17 #-} {-# INLINE happyOut17 #-}
happyIn18 :: (Symbol) -> (HappyAbsSyn t4 t5 t6) happyIn18 :: ([Integer]) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn18 x = unsafeCoerce# x happyIn18 x = unsafeCoerce# x
{-# INLINE happyIn18 #-} {-# INLINE happyIn18 #-}
happyOut18 :: (HappyAbsSyn t4 t5 t6) -> (Symbol) happyOut18 :: (HappyAbsSyn t4 t5 t6 t7) -> ([Integer])
happyOut18 x = unsafeCoerce# x happyOut18 x = unsafeCoerce# x
{-# INLINE happyOut18 #-} {-# INLINE happyOut18 #-}
happyIn19 :: ([Symbol]) -> (HappyAbsSyn t4 t5 t6) happyIn19 :: (Symbol) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn19 x = unsafeCoerce# x happyIn19 x = unsafeCoerce# x
{-# INLINE happyIn19 #-} {-# INLINE happyIn19 #-}
happyOut19 :: (HappyAbsSyn t4 t5 t6) -> ([Symbol]) happyOut19 :: (HappyAbsSyn t4 t5 t6 t7) -> (Symbol)
happyOut19 x = unsafeCoerce# x happyOut19 x = unsafeCoerce# x
{-# INLINE happyOut19 #-} {-# INLINE happyOut19 #-}
happyIn20 :: (Name) -> (HappyAbsSyn t4 t5 t6) happyIn20 :: ([Symbol]) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn20 x = unsafeCoerce# x happyIn20 x = unsafeCoerce# x
{-# INLINE happyIn20 #-} {-# INLINE happyIn20 #-}
happyOut20 :: (HappyAbsSyn t4 t5 t6) -> (Name) happyOut20 :: (HappyAbsSyn t4 t5 t6 t7) -> ([Symbol])
happyOut20 x = unsafeCoerce# x happyOut20 x = unsafeCoerce# x
{-# INLINE happyOut20 #-} {-# INLINE happyOut20 #-}
happyIn21 :: ([IdentParam]) -> (HappyAbsSyn t4 t5 t6) happyIn21 :: (Name) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn21 x = unsafeCoerce# x happyIn21 x = unsafeCoerce# x
{-# INLINE happyIn21 #-} {-# INLINE happyIn21 #-}
happyOut21 :: (HappyAbsSyn t4 t5 t6) -> ([IdentParam]) happyOut21 :: (HappyAbsSyn t4 t5 t6 t7) -> (Name)
happyOut21 x = unsafeCoerce# x happyOut21 x = unsafeCoerce# x
{-# INLINE happyOut21 #-} {-# INLINE happyOut21 #-}
happyIn22 :: (Category) -> (HappyAbsSyn t4 t5 t6) happyIn22 :: (Category) -> (HappyAbsSyn t4 t5 t6 t7)
happyIn22 x = unsafeCoerce# x happyIn22 x = unsafeCoerce# x
{-# INLINE happyIn22 #-} {-# INLINE happyIn22 #-}
happyOut22 :: (HappyAbsSyn t4 t5 t6) -> (Category) happyOut22 :: (HappyAbsSyn t4 t5 t6 t7) -> (Category)
happyOut22 x = unsafeCoerce# x happyOut22 x = unsafeCoerce# x
{-# INLINE happyOut22 #-} {-# INLINE happyOut22 #-}
happyIn23 :: (IdentParam) -> (HappyAbsSyn t4 t5 t6) happyInTok :: Token -> (HappyAbsSyn t4 t5 t6 t7)
happyIn23 x = unsafeCoerce# x
{-# INLINE happyIn23 #-}
happyOut23 :: (HappyAbsSyn t4 t5 t6) -> (IdentParam)
happyOut23 x = unsafeCoerce# x
{-# INLINE happyOut23 #-}
happyIn24 :: (Field) -> (HappyAbsSyn t4 t5 t6)
happyIn24 x = unsafeCoerce# x
{-# INLINE happyIn24 #-}
happyOut24 :: (HappyAbsSyn t4 t5 t6) -> (Field)
happyOut24 x = unsafeCoerce# x
{-# INLINE happyOut24 #-}
happyIn25 :: ([Field]) -> (HappyAbsSyn t4 t5 t6)
happyIn25 x = unsafeCoerce# x
{-# INLINE happyIn25 #-}
happyOut25 :: (HappyAbsSyn t4 t5 t6) -> ([Field])
happyOut25 x = unsafeCoerce# x
{-# INLINE happyOut25 #-}
happyIn26 :: (Proj) -> (HappyAbsSyn t4 t5 t6)
happyIn26 x = unsafeCoerce# x
{-# INLINE happyIn26 #-}
happyOut26 :: (HappyAbsSyn t4 t5 t6) -> (Proj)
happyOut26 x = unsafeCoerce# x
{-# INLINE happyOut26 #-}
happyIn27 :: ([Proj]) -> (HappyAbsSyn t4 t5 t6)
happyIn27 x = unsafeCoerce# x
{-# INLINE happyIn27 #-}
happyOut27 :: (HappyAbsSyn t4 t5 t6) -> ([Proj])
happyOut27 x = unsafeCoerce# x
{-# INLINE happyOut27 #-}
happyIn28 :: (KeyValue) -> (HappyAbsSyn t4 t5 t6)
happyIn28 x = unsafeCoerce# x
{-# INLINE happyIn28 #-}
happyOut28 :: (HappyAbsSyn t4 t5 t6) -> (KeyValue)
happyOut28 x = unsafeCoerce# x
{-# INLINE happyOut28 #-}
happyIn29 :: ([KeyValue]) -> (HappyAbsSyn t4 t5 t6)
happyIn29 x = unsafeCoerce# x
{-# INLINE happyIn29 #-}
happyOut29 :: (HappyAbsSyn t4 t5 t6) -> ([KeyValue])
happyOut29 x = unsafeCoerce# x
{-# INLINE happyOut29 #-}
happyIn30 :: (Param) -> (HappyAbsSyn t4 t5 t6)
happyIn30 x = unsafeCoerce# x
{-# INLINE happyIn30 #-}
happyOut30 :: (HappyAbsSyn t4 t5 t6) -> (Param)
happyOut30 x = unsafeCoerce# x
{-# INLINE happyOut30 #-}
happyIn31 :: ([Param]) -> (HappyAbsSyn t4 t5 t6)
happyIn31 x = unsafeCoerce# x
{-# INLINE happyIn31 #-}
happyOut31 :: (HappyAbsSyn t4 t5 t6) -> ([Param])
happyOut31 x = unsafeCoerce# x
{-# INLINE happyOut31 #-}
happyInTok :: Token -> (HappyAbsSyn t4 t5 t6)
happyInTok x = unsafeCoerce# x happyInTok x = unsafeCoerce# x
{-# INLINE happyInTok #-} {-# INLINE happyInTok #-}
happyOutTok :: (HappyAbsSyn t4 t5 t6) -> Token happyOutTok :: (HappyAbsSyn t4 t5 t6 t7) -> Token
happyOutTok x = unsafeCoerce# x happyOutTok x = unsafeCoerce# x
{-# INLINE happyOutTok #-} {-# INLINE happyOutTok #-}
happyActOffsets :: HappyAddr happyActOffsets :: HappyAddr
happyActOffsets = HappyA# "\x00\x00\x68\x00\x00\x00\x67\x00\x66\x00\x00\x00\x60\x00\x00\x00\x64\x00\x65\x00\xfd\xff\x5f\x00\x5e\x00\x00\x00\x61\x00\x63\x00\x62\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x2c\x00\x00\x00\x5d\x00\x57\x00\x00\x00\x29\x00\x5b\x00\x5a\x00\x56\x00\x59\x00\x4b\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\xfb\xff\x55\x00\x53\x00\x45\x00\x49\x00\x00\x00\x52\x00\x4e\x00\x51\x00\x00\x00\x00\x00\x4f\x00\x46\x00\x00\x00\x40\x00\xfb\xff\x00\x00\x50\x00\x44\x00\xfb\xff\x00\x00\x00\x00\x3d\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x3f\x00\x00\x00\x3a\x00\x00\x00\x00\x00\xfb\xff\x00\x00\x00\x00\x00\x00"# happyActOffsets = HappyA# "\x00\x00\x33\x00\x00\x00\x27\x00\x34\x00\x00\x00\x31\x00\x00\x00\x30\x00\x38\x00\x19\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x36\x00\x35\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x2e\x00\x2f\x00\x2b\x00\x2a\x00\x29\x00\x22\x00\x1f\x00\x28\x00\x24\x00\x20\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x11\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
happyGotoOffsets :: HappyAddr happyGotoOffsets :: HappyAddr
happyGotoOffsets = HappyA# "\x2f\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x4a\x00\x42\x00\x08\x00\x00\x00\x0a\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x3c\x00\x33\x00\x21\x00\xfc\xff\x31\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x3b\x00\xfa\xff\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x32\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x0b\x00\x05\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x07\x00\x2b\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"# happyGotoOffsets = HappyA# "\x21\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x0d\x00\x01\x00\x16\x00\x00\x00\x1a\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\xf9\xff\x00\x00\x1c\x00\x00\x00\x00\x00\x0b\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x02\x00\x03\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
happyDefActions :: HappyAddr happyDefActions :: HappyAddr
happyDefActions = HappyA# "\xf9\xff\x00\x00\xfe\xff\x00\x00\xfb\xff\xf8\xff\x00\x00\xf6\xff\xf3\xff\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x00\x00\x00\x00\x00\x00\xf5\xff\xfa\xff\xf2\xff\xe3\xff\x00\x00\xde\xff\x00\x00\xdb\xff\x00\x00\x00\x00\xe4\xff\x00\x00\x00\x00\xef\xff\xe1\xff\x00\x00\x00\x00\xe0\xff\x00\x00\xdf\xff\xdd\xff\xda\xff\x00\x00\xee\xff\x00\x00\xec\xff\x00\x00\xe2\xff\x00\x00\xeb\xff\x00\x00\xfd\xff\xf1\xff\xef\xff\xd5\xff\xdc\xff\xd8\xff\x00\x00\xd9\xff\xd7\xff\x00\x00\xd2\xff\xed\xff\xf0\xff\xec\xff\x00\x00\xe8\xff\xe6\xff\xf4\xff\xe9\xff\xe7\xff\xfc\xff\xea\xff\xd1\xff\x00\x00\xd3\xff\xd8\xff\xd6\xff\xd4\xff\xd2\xff\xe5\xff\xd0\xff"# happyDefActions = HappyA# "\xf8\xff\x00\x00\xfe\xff\x00\x00\xfa\xff\xf7\xff\x00\x00\xf5\xff\xf2\xff\x00\x00\x00\x00\x00\x00\xe2\xff\xf6\xff\xfb\xff\x00\x00\x00\x00\x00\x00\xf4\xff\xf9\xff\xf1\xff\x00\x00\xe3\xff\x00\x00\x00\x00\xee\xff\xed\xff\x00\x00\xeb\xff\x00\x00\x00\x00\xea\xff\x00\x00\xfd\xff\xf0\xff\xee\xff\xec\xff\xef\xff\xeb\xff\x00\x00\xe7\xff\xe5\xff\xf3\xff\xe8\xff\xe6\xff\xfc\xff\xe9\xff\xe4\xff"#
happyCheck :: HappyAddr happyCheck :: HappyAddr
happyCheck = HappyA# "\xff\xff\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x03\x00\x01\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x12\x00\x06\x00\x12\x00\x16\x00\x09\x00\x08\x00\x17\x00\x0d\x00\x00\x00\x12\x00\x00\x00\x14\x00\x02\x00\x18\x00\x1a\x00\x1b\x00\x1a\x00\x1b\x00\x1a\x00\x1a\x00\x18\x00\x19\x00\x18\x00\x19\x00\x0e\x00\x0f\x00\x12\x00\x13\x00\x12\x00\x13\x00\x00\x00\x03\x00\x02\x00\x00\x00\x03\x00\x00\x00\x08\x00\x03\x00\x01\x00\x05\x00\x14\x00\x0a\x00\x10\x00\x11\x00\x0e\x00\x0f\x00\x0a\x00\x00\x00\x12\x00\x13\x00\x0d\x00\x12\x00\x13\x00\x12\x00\x13\x00\x0b\x00\x0c\x00\x0b\x00\x0c\x00\x15\x00\x07\x00\x00\x00\x04\x00\x12\x00\x0e\x00\x0a\x00\x07\x00\x13\x00\x01\x00\x12\x00\x0d\x00\x05\x00\x07\x00\x04\x00\x06\x00\x13\x00\x06\x00\x01\x00\x12\x00\x07\x00\x12\x00\x03\x00\x05\x00\x0c\x00\x0b\x00\x05\x00\x01\x00\x03\x00\x02\x00\x01\x00\x09\x00\xff\xff\x12\x00\x12\x00\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x12\x00\xff\xff\xff\xff\x11\x00\x10\x00\xff\xff\xff\xff\xff\xff\x12\x00\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# happyCheck = HappyA# "\xff\xff\x02\x00\x03\x00\x01\x00\x0b\x00\x02\x00\x03\x00\x03\x00\x03\x00\x08\x00\x03\x00\x05\x00\x01\x00\x00\x00\x0f\x00\x10\x00\x0e\x00\x12\x00\x0f\x00\x10\x00\x03\x00\x12\x00\x12\x00\x12\x00\x11\x00\x0e\x00\x00\x00\x0c\x00\x0d\x00\x07\x00\x0d\x00\x0e\x00\x0a\x00\x08\x00\x05\x00\x09\x00\x0b\x00\x04\x00\x06\x00\x06\x00\x0c\x00\x0d\x00\x0c\x00\x07\x00\x04\x00\x0e\x00\x0c\x00\x06\x00\x05\x00\x07\x00\x03\x00\x05\x00\x0e\x00\x09\x00\x01\x00\x10\x00\x02\x00\x01\x00\x0a\x00\x0e\x00\x0b\x00\x09\x00\x0b\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"#
happyTable :: HappyAddr happyTable :: HappyAddr
happyTable = HappyA# "\x00\x00\x34\x00\x24\x00\x34\x00\x37\x00\x34\x00\x34\x00\x45\x00\x2f\x00\x24\x00\x0f\x00\x24\x00\x12\x00\x03\x00\x09\x00\x03\x00\x27\x00\x0a\x00\x10\x00\x20\x00\x46\x00\x0c\x00\x03\x00\x0c\x00\x46\x00\x40\x00\x25\x00\x47\x00\x4f\x00\x47\x00\x48\x00\x38\x00\x35\x00\x39\x00\x4b\x00\x39\x00\x3a\x00\x41\x00\x4e\x00\x2e\x00\x0e\x00\x43\x00\x0e\x00\x0c\x00\x17\x00\x40\x00\x0c\x00\x23\x00\x0c\x00\x2e\x00\x03\x00\x2f\x00\x04\x00\x21\x00\x24\x00\x1a\x00\x1b\x00\x41\x00\x42\x00\x1e\x00\x19\x00\x43\x00\x0e\x00\x30\x00\x1c\x00\x1d\x00\x0d\x00\x0e\x00\x29\x00\x3c\x00\x29\x00\x2a\x00\x18\x00\x08\x00\x07\x00\x05\x00\x03\x00\x4d\x00\x4a\x00\x4e\x00\x32\x00\x4b\x00\x03\x00\x3c\x00\x2c\x00\x3f\x00\x40\x00\x3e\x00\x32\x00\x33\x00\x27\x00\x03\x00\x34\x00\x03\x00\x2d\x00\x2c\x00\x38\x00\x29\x00\x20\x00\x15\x00\x17\x00\x16\x00\x13\x00\x18\x00\x00\x00\x03\x00\x03\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x00\x00\x00\x00\x0c\x00\x07\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"# happyTable = HappyA# "\x00\x00\x28\x00\x0c\x00\x1f\x00\x18\x00\x28\x00\x0c\x00\x0c\x00\x0c\x00\x08\x00\x16\x00\x05\x00\x1f\x00\x07\x00\x29\x00\x2f\x00\x2e\x00\x2b\x00\x29\x00\x2a\x00\x2d\x00\x2b\x00\x1e\x00\x0d\x00\x17\x00\x20\x00\x0f\x00\x1a\x00\x24\x00\x09\x00\x2e\x00\x0f\x00\x0a\x00\x12\x00\x1d\x00\x10\x00\x03\x00\x03\x00\x26\x00\x04\x00\x1a\x00\x1b\x00\x22\x00\x27\x00\x28\x00\x0f\x00\x22\x00\x23\x00\x1d\x00\x24\x00\x1e\x00\x1a\x00\x0f\x00\x14\x00\x15\x00\xff\xff\x16\x00\x13\x00\x0c\x00\x0f\x00\x03\x00\x07\x00\x03\x00\x00\x00\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, 47) [ happyReduceArr = array (1, 29) [
(1 , happyReduce_1), (1 , happyReduce_1),
(2 , happyReduce_2), (2 , happyReduce_2),
(3 , happyReduce_3), (3 , happyReduce_3),
@@ -232,29 +178,11 @@ happyReduceArr = array (1, 47) [
(26 , happyReduce_26), (26 , happyReduce_26),
(27 , happyReduce_27), (27 , happyReduce_27),
(28 , happyReduce_28), (28 , happyReduce_28),
(29 , happyReduce_29), (29 , happyReduce_29)
(30 , happyReduce_30),
(31 , happyReduce_31),
(32 , happyReduce_32),
(33 , happyReduce_33),
(34 , happyReduce_34),
(35 , happyReduce_35),
(36 , happyReduce_36),
(37 , happyReduce_37),
(38 , happyReduce_38),
(39 , happyReduce_39),
(40 , happyReduce_40),
(41 , happyReduce_41),
(42 , happyReduce_42),
(43 , happyReduce_43),
(44 , happyReduce_44),
(45 , happyReduce_45),
(46 , happyReduce_46),
(47 , happyReduce_47)
] ]
happy_n_terms = 23 :: Int happy_n_terms = 17 :: Int
happy_n_nonterms = 28 :: Int happy_n_nonterms = 19 :: Int
happyReduce_1 = happySpecReduce_1 0# happyReduction_1 happyReduce_1 = happySpecReduce_1 0# happyReduction_1
happyReduction_1 happy_x_1 happyReduction_1 happy_x_1
@@ -279,13 +207,20 @@ happyReduction_3 happy_x_1
happyReduce_4 = happySpecReduce_1 3# happyReduction_4 happyReduce_4 = happySpecReduce_1 3# happyReduction_4
happyReduction_4 happy_x_1 happyReduction_4 happy_x_1
= case happyOut9 happy_x_1 of { happy_var_1 -> = case happyOutTok happy_x_1 of { (PT _ (T_SingleQuoteString happy_var_1)) ->
happyIn7 happyIn7
(SingleQuoteString (happy_var_1)
)}
happyReduce_5 = happySpecReduce_1 4# happyReduction_5
happyReduction_5 happy_x_1
= case happyOut10 happy_x_1 of { happy_var_1 ->
happyIn8
(Grammars (reverse happy_var_1) (Grammars (reverse happy_var_1)
)} )}
happyReduce_5 = happyReduce 6# 4# happyReduction_5 happyReduce_6 = happyReduce 6# 5# happyReduction_6
happyReduction_5 (happy_x_6 `HappyStk` happyReduction_6 (happy_x_6 `HappyStk`
happy_x_5 `HappyStk` happy_x_5 `HappyStk`
happy_x_4 `HappyStk` happy_x_4 `HappyStk`
happy_x_3 `HappyStk` happy_x_3 `HappyStk`
@@ -293,51 +228,51 @@ happyReduction_5 (happy_x_6 `HappyStk`
happy_x_1 `HappyStk` happy_x_1 `HappyStk`
happyRest) happyRest)
= case happyOut4 happy_x_2 of { happy_var_2 -> = case happyOut4 happy_x_2 of { happy_var_2 ->
case happyOut11 happy_x_3 of { happy_var_3 -> case happyOut12 happy_x_3 of { happy_var_3 ->
case happyOut13 happy_x_4 of { happy_var_4 -> case happyOut14 happy_x_4 of { happy_var_4 ->
happyIn8 happyIn9
(Grammar happy_var_2 (reverse happy_var_3) (reverse happy_var_4) (Grammar happy_var_2 (reverse happy_var_3) (reverse happy_var_4)
) `HappyStk` happyRest}}} ) `HappyStk` happyRest}}}
happyReduce_6 = happySpecReduce_0 5# happyReduction_6 happyReduce_7 = happySpecReduce_0 6# happyReduction_7
happyReduction_6 = happyIn9 happyReduction_7 = happyIn10
([] ([]
) )
happyReduce_7 = happySpecReduce_2 5# happyReduction_7
happyReduction_7 happy_x_2
happy_x_1
= case happyOut9 happy_x_1 of { happy_var_1 ->
case happyOut8 happy_x_2 of { happy_var_2 ->
happyIn9
(flip (:) happy_var_1 happy_var_2
)}}
happyReduce_8 = happySpecReduce_2 6# happyReduction_8 happyReduce_8 = happySpecReduce_2 6# happyReduction_8
happyReduction_8 happy_x_2 happyReduction_8 happy_x_2
happy_x_1 happy_x_1
= case happyOut22 happy_x_2 of { happy_var_2 -> = case happyOut10 happy_x_1 of { happy_var_1 ->
case happyOut9 happy_x_2 of { happy_var_2 ->
happyIn10 happyIn10
(StartCat happy_var_2
)}
happyReduce_9 = happySpecReduce_0 7# happyReduction_9
happyReduction_9 = happyIn11
([]
)
happyReduce_10 = happySpecReduce_3 7# happyReduction_10
happyReduction_10 happy_x_3
happy_x_2
happy_x_1
= case happyOut11 happy_x_1 of { happy_var_1 ->
case happyOut10 happy_x_2 of { happy_var_2 ->
happyIn11
(flip (:) happy_var_1 happy_var_2 (flip (:) happy_var_1 happy_var_2
)}} )}}
happyReduce_11 = happyReduce 8# 8# happyReduction_11 happyReduce_9 = happySpecReduce_2 7# happyReduction_9
happyReduction_11 (happy_x_8 `HappyStk` happyReduction_9 happy_x_2
happy_x_1
= case happyOut22 happy_x_2 of { happy_var_2 ->
happyIn11
(StartCat happy_var_2
)}
happyReduce_10 = happySpecReduce_0 8# happyReduction_10
happyReduction_10 = happyIn12
([]
)
happyReduce_11 = happySpecReduce_3 8# happyReduction_11
happyReduction_11 happy_x_3
happy_x_2
happy_x_1
= case happyOut12 happy_x_1 of { happy_var_1 ->
case happyOut11 happy_x_2 of { happy_var_2 ->
happyIn12
(flip (:) happy_var_1 happy_var_2
)}}
happyReduce_12 = happyReduce 8# 9# happyReduction_12
happyReduction_12 (happy_x_8 `HappyStk`
happy_x_7 `HappyStk` happy_x_7 `HappyStk`
happy_x_6 `HappyStk` happy_x_6 `HappyStk`
happy_x_5 `HappyStk` happy_x_5 `HappyStk`
@@ -347,37 +282,28 @@ happyReduction_11 (happy_x_8 `HappyStk`
happy_x_1 `HappyStk` happy_x_1 `HappyStk`
happyRest) happyRest)
= case happyOut4 happy_x_1 of { happy_var_1 -> = case happyOut4 happy_x_1 of { happy_var_1 ->
case happyOut20 happy_x_3 of { happy_var_3 -> case happyOut21 happy_x_3 of { happy_var_3 ->
case happyOut14 happy_x_4 of { happy_var_4 -> case happyOut15 happy_x_4 of { happy_var_4 ->
case happyOut22 happy_x_6 of { happy_var_6 -> case happyOut22 happy_x_6 of { happy_var_6 ->
case happyOut19 happy_x_8 of { happy_var_8 -> case happyOut20 happy_x_8 of { happy_var_8 ->
happyIn12 happyIn13
(Rule happy_var_1 happy_var_3 happy_var_4 happy_var_6 happy_var_8 (Rule happy_var_1 happy_var_3 happy_var_4 happy_var_6 happy_var_8
) `HappyStk` happyRest}}}}} ) `HappyStk` happyRest}}}}}
happyReduce_12 = happySpecReduce_0 9# happyReduction_12 happyReduce_13 = happySpecReduce_0 10# happyReduction_13
happyReduction_12 = happyIn13 happyReduction_13 = happyIn14
([] ([]
) )
happyReduce_13 = happySpecReduce_3 9# happyReduction_13
happyReduction_13 happy_x_3
happy_x_2
happy_x_1
= case happyOut13 happy_x_1 of { happy_var_1 ->
case happyOut12 happy_x_2 of { happy_var_2 ->
happyIn13
(flip (:) happy_var_1 happy_var_2
)}}
happyReduce_14 = happySpecReduce_3 10# happyReduction_14 happyReduce_14 = happySpecReduce_3 10# happyReduction_14
happyReduction_14 happy_x_3 happyReduction_14 happy_x_3
happy_x_2 happy_x_2
happy_x_1 happy_x_1
= case happyOut16 happy_x_2 of { happy_var_2 -> = case happyOut14 happy_x_1 of { happy_var_1 ->
case happyOut13 happy_x_2 of { happy_var_2 ->
happyIn14 happyIn14
(Profile happy_var_2 (flip (:) happy_var_1 happy_var_2
)} )}}
happyReduce_15 = happySpecReduce_3 11# happyReduction_15 happyReduce_15 = happySpecReduce_3 11# happyReduction_15
happyReduction_15 happy_x_3 happyReduction_15 happy_x_3
@@ -385,267 +311,114 @@ happyReduction_15 happy_x_3
happy_x_1 happy_x_1
= case happyOut17 happy_x_2 of { happy_var_2 -> = case happyOut17 happy_x_2 of { happy_var_2 ->
happyIn15 happyIn15
(Profile happy_var_2
)}
happyReduce_16 = happySpecReduce_3 12# happyReduction_16
happyReduction_16 happy_x_3
happy_x_2
happy_x_1
= case happyOut18 happy_x_2 of { happy_var_2 ->
happyIn16
(Ints happy_var_2 (Ints happy_var_2
)} )}
happyReduce_16 = happySpecReduce_0 12# happyReduction_16 happyReduce_17 = happySpecReduce_0 13# happyReduction_17
happyReduction_16 = happyIn16 happyReduction_17 = happyIn17
([] ([]
) )
happyReduce_17 = happySpecReduce_1 12# happyReduction_17 happyReduce_18 = happySpecReduce_1 13# happyReduction_18
happyReduction_17 happy_x_1 happyReduction_18 happy_x_1
= case happyOut15 happy_x_1 of { happy_var_1 -> = case happyOut16 happy_x_1 of { happy_var_1 ->
happyIn16
((:[]) happy_var_1
)}
happyReduce_18 = happySpecReduce_3 12# happyReduction_18
happyReduction_18 happy_x_3
happy_x_2
happy_x_1
= case happyOut15 happy_x_1 of { happy_var_1 ->
case happyOut16 happy_x_3 of { happy_var_3 ->
happyIn16
((:) happy_var_1 happy_var_3
)}}
happyReduce_19 = happySpecReduce_0 13# happyReduction_19
happyReduction_19 = happyIn17
([]
)
happyReduce_20 = happySpecReduce_1 13# happyReduction_20
happyReduction_20 happy_x_1
= case happyOut5 happy_x_1 of { happy_var_1 ->
happyIn17 happyIn17
((:[]) happy_var_1 ((:[]) happy_var_1
)} )}
happyReduce_21 = happySpecReduce_3 13# happyReduction_21 happyReduce_19 = happySpecReduce_3 13# happyReduction_19
happyReduction_21 happy_x_3 happyReduction_19 happy_x_3
happy_x_2 happy_x_2
happy_x_1 happy_x_1
= case happyOut5 happy_x_1 of { happy_var_1 -> = case happyOut16 happy_x_1 of { happy_var_1 ->
case happyOut17 happy_x_3 of { happy_var_3 -> case happyOut17 happy_x_3 of { happy_var_3 ->
happyIn17 happyIn17
((:) happy_var_1 happy_var_3 ((:) happy_var_1 happy_var_3
)}} )}}
happyReduce_22 = happySpecReduce_1 14# happyReduction_22 happyReduce_20 = happySpecReduce_0 14# happyReduction_20
happyReduction_22 happy_x_1 happyReduction_20 = happyIn18
= case happyOut22 happy_x_1 of { happy_var_1 -> ([]
)
happyReduce_21 = happySpecReduce_1 14# happyReduction_21
happyReduction_21 happy_x_1
= case happyOut5 happy_x_1 of { happy_var_1 ->
happyIn18 happyIn18
(CatS happy_var_1 ((:[]) happy_var_1
)} )}
happyReduce_23 = happySpecReduce_1 14# happyReduction_23 happyReduce_22 = happySpecReduce_3 14# happyReduction_22
happyReduction_23 happy_x_1 happyReduction_22 happy_x_3
= case happyOut6 happy_x_1 of { happy_var_1 -> happy_x_2
happy_x_1
= case happyOut5 happy_x_1 of { happy_var_1 ->
case happyOut18 happy_x_3 of { happy_var_3 ->
happyIn18 happyIn18
(TermS happy_var_1 ((:) happy_var_1 happy_var_3
)}}
happyReduce_23 = happySpecReduce_1 15# happyReduction_23
happyReduction_23 happy_x_1
= case happyOut22 happy_x_1 of { happy_var_1 ->
happyIn19
(CatS happy_var_1
)} )}
happyReduce_24 = happySpecReduce_1 15# happyReduction_24 happyReduce_24 = happySpecReduce_1 15# happyReduction_24
happyReduction_24 happy_x_1 happyReduction_24 happy_x_1
= happyIn19 = case happyOut6 happy_x_1 of { happy_var_1 ->
happyIn19
(TermS happy_var_1
)}
happyReduce_25 = happySpecReduce_1 16# happyReduction_25
happyReduction_25 happy_x_1
= happyIn20
([] ([]
) )
happyReduce_25 = happySpecReduce_1 15# happyReduction_25 happyReduce_26 = happySpecReduce_1 16# happyReduction_26
happyReduction_25 happy_x_1 happyReduction_26 happy_x_1
= case happyOut18 happy_x_1 of { happy_var_1 -> = case happyOut19 happy_x_1 of { happy_var_1 ->
happyIn19 happyIn20
((:[]) happy_var_1 ((:[]) happy_var_1
)} )}
happyReduce_26 = happySpecReduce_2 15# happyReduction_26
happyReduction_26 happy_x_2
happy_x_1
= case happyOut18 happy_x_1 of { happy_var_1 ->
case happyOut19 happy_x_2 of { happy_var_2 ->
happyIn19
((:) happy_var_1 happy_var_2
)}}
happyReduce_27 = happySpecReduce_2 16# happyReduction_27 happyReduce_27 = happySpecReduce_2 16# happyReduction_27
happyReduction_27 happy_x_2 happyReduction_27 happy_x_2
happy_x_1 happy_x_1
= case happyOut21 happy_x_1 of { happy_var_1 -> = case happyOut19 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 ->
happyIn20 happyIn20
(Name (reverse happy_var_1) happy_var_2 ((:) happy_var_1 happy_var_2
)}} )}}
happyReduce_28 = happySpecReduce_0 17# happyReduction_28 happyReduce_28 = happySpecReduce_1 17# happyReduction_28
happyReduction_28 = happyIn21 happyReduction_28 happy_x_1
([] = case happyOut7 happy_x_1 of { happy_var_1 ->
)
happyReduce_29 = happySpecReduce_3 17# happyReduction_29
happyReduction_29 happy_x_3
happy_x_2
happy_x_1
= case happyOut21 happy_x_1 of { happy_var_1 ->
case happyOut23 happy_x_2 of { happy_var_2 ->
happyIn21 happyIn21
(flip (:) happy_var_1 happy_var_2 (Name happy_var_1
)}} )}
happyReduce_30 = happyReduce 4# 18# happyReduction_30 happyReduce_29 = happySpecReduce_1 18# happyReduction_29
happyReduction_30 (happy_x_4 `HappyStk` happyReduction_29 happy_x_1
happy_x_3 `HappyStk` = case happyOut7 happy_x_1 of { happy_var_1 ->
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut23 happy_x_1 of { happy_var_1 ->
case happyOut4 happy_x_3 of { happy_var_3 ->
case happyOut27 happy_x_4 of { happy_var_4 ->
happyIn22 happyIn22
(Category happy_var_1 happy_var_3 (reverse happy_var_4) (Category happy_var_1
) `HappyStk` happyRest}}}
happyReduce_31 = happyReduce 4# 19# happyReduction_31
happyReduction_31 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut4 happy_x_1 of { happy_var_1 ->
case happyOut25 happy_x_3 of { happy_var_3 ->
happyIn23
(IdentParam happy_var_1 (reverse happy_var_3)
) `HappyStk` happyRest}}
happyReduce_32 = happySpecReduce_2 20# happyReduction_32
happyReduction_32 happy_x_2
happy_x_1
= case happyOut28 happy_x_2 of { happy_var_2 ->
happyIn24
(Field happy_var_2
)} )}
happyReduce_33 = happySpecReduce_0 21# happyReduction_33
happyReduction_33 = happyIn25
([]
)
happyReduce_34 = happySpecReduce_3 21# happyReduction_34
happyReduction_34 happy_x_3
happy_x_2
happy_x_1
= case happyOut25 happy_x_1 of { happy_var_1 ->
case happyOut24 happy_x_2 of { happy_var_2 ->
happyIn25
(flip (:) happy_var_1 happy_var_2
)}}
happyReduce_35 = happySpecReduce_2 22# happyReduction_35
happyReduction_35 happy_x_2
happy_x_1
= case happyOut30 happy_x_2 of { happy_var_2 ->
happyIn26
(Proj happy_var_2
)}
happyReduce_36 = happySpecReduce_0 23# happyReduction_36
happyReduction_36 = happyIn27
([]
)
happyReduce_37 = happySpecReduce_2 23# happyReduction_37
happyReduction_37 happy_x_2
happy_x_1
= case happyOut27 happy_x_1 of { happy_var_1 ->
case happyOut26 happy_x_2 of { happy_var_2 ->
happyIn27
(flip (:) happy_var_1 happy_var_2
)}}
happyReduce_38 = happySpecReduce_3 24# happyReduction_38
happyReduction_38 happy_x_3
happy_x_2
happy_x_1
= case happyOut4 happy_x_1 of { happy_var_1 ->
case happyOut30 happy_x_3 of { happy_var_3 ->
happyIn28
(KeyValue happy_var_1 happy_var_3
)}}
happyReduce_39 = happySpecReduce_0 25# happyReduction_39
happyReduction_39 = happyIn29
([]
)
happyReduce_40 = happySpecReduce_1 25# happyReduction_40
happyReduction_40 happy_x_1
= case happyOut28 happy_x_1 of { happy_var_1 ->
happyIn29
((:[]) happy_var_1
)}
happyReduce_41 = happySpecReduce_3 25# happyReduction_41
happyReduction_41 happy_x_3
happy_x_2
happy_x_1
= case happyOut28 happy_x_1 of { happy_var_1 ->
case happyOut29 happy_x_3 of { happy_var_3 ->
happyIn29
((:) happy_var_1 happy_var_3
)}}
happyReduce_42 = happySpecReduce_1 26# happyReduction_42
happyReduction_42 happy_x_1
= case happyOut4 happy_x_1 of { happy_var_1 ->
happyIn30
(ParamSimple happy_var_1
)}
happyReduce_43 = happyReduce 4# 26# happyReduction_43
happyReduction_43 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut4 happy_x_1 of { happy_var_1 ->
case happyOut31 happy_x_3 of { happy_var_3 ->
happyIn30
(ParamPatt happy_var_1 happy_var_3
) `HappyStk` happyRest}}
happyReduce_44 = happySpecReduce_3 26# happyReduction_44
happyReduction_44 happy_x_3
happy_x_2
happy_x_1
= case happyOut29 happy_x_2 of { happy_var_2 ->
happyIn30
(ParamRec happy_var_2
)}
happyReduce_45 = happySpecReduce_0 27# happyReduction_45
happyReduction_45 = happyIn31
([]
)
happyReduce_46 = happySpecReduce_1 27# happyReduction_46
happyReduction_46 happy_x_1
= case happyOut30 happy_x_1 of { happy_var_1 ->
happyIn31
((:[]) happy_var_1
)}
happyReduce_47 = happySpecReduce_3 27# happyReduction_47
happyReduction_47 happy_x_3
happy_x_2
happy_x_1
= case happyOut30 happy_x_1 of { happy_var_1 ->
case happyOut31 happy_x_3 of { happy_var_3 ->
happyIn31
((:) happy_var_1 happy_var_3
)}}
happyNewToken action sts stk [] = happyNewToken action sts stk [] =
happyDoAction 22# (error "reading EOF!") action sts stk [] happyDoAction 16# (error "reading EOF!") action sts stk []
happyNewToken action sts stk (tk:tks) = happyNewToken action sts stk (tk:tks) =
let cont i = happyDoAction i tk action sts stk tks in let cont i = happyDoAction i tk action sts stk tks in
@@ -657,20 +430,14 @@ happyNewToken action sts stk (tk:tks) =
PT _ (TS "[") -> cont 5#; PT _ (TS "[") -> cont 5#;
PT _ (TS "]") -> cont 6#; PT _ (TS "]") -> cont 6#;
PT _ (TS ",") -> cont 7#; PT _ (TS ",") -> cont 7#;
PT _ (TS "/") -> cont 8#; PT _ (TS "end") -> cont 8#;
PT _ (TS "{") -> cont 9#; PT _ (TS "grammar") -> cont 9#;
PT _ (TS "}") -> cont 10#; PT _ (TS "startcat") -> cont 10#;
PT _ (TS "!") -> cont 11#; PT _ (TV happy_dollar_dollar) -> cont 11#;
PT _ (TS "=") -> cont 12#; PT _ (TI happy_dollar_dollar) -> cont 12#;
PT _ (TS "(") -> cont 13#; PT _ (TL happy_dollar_dollar) -> cont 13#;
PT _ (TS ")") -> cont 14#; PT _ (T_SingleQuoteString happy_dollar_dollar) -> cont 14#;
PT _ (TS "end") -> cont 15#; _ -> cont 15#;
PT _ (TS "grammar") -> cont 16#;
PT _ (TS "startcat") -> cont 17#;
PT _ (TV happy_dollar_dollar) -> cont 18#;
PT _ (TI happy_dollar_dollar) -> cont 19#;
PT _ (TL happy_dollar_dollar) -> cont 20#;
_ -> cont 21#;
_ -> happyError tks _ -> happyError tks
} }
@@ -681,7 +448,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
pGrammars tks = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut7 x)) pGrammars tks = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut8 x))
happySeq = happyDontSeq happySeq = happyDontSeq
@@ -697,7 +464,7 @@ happyError ts =
myLexer = tokens myLexer = tokens
{-# LINE 1 "GenericTemplate.hs" #-} {-# LINE 1 "GenericTemplate.hs" #-}
-- $Id: ParCFG.hs,v 1.2 2004/09/29 09:27:29 bringert Exp $ -- $Id: ParCFG.hs,v 1.3 2004/09/29 16:53:46 bringert Exp $

View File

@@ -19,13 +19,6 @@ import ErrM
'[' { PT _ (TS "[") } '[' { PT _ (TS "[") }
']' { PT _ (TS "]") } ']' { PT _ (TS "]") }
',' { PT _ (TS ",") } ',' { PT _ (TS ",") }
'/' { PT _ (TS "/") }
'{' { PT _ (TS "{") }
'}' { PT _ (TS "}") }
'!' { PT _ (TS "!") }
'=' { PT _ (TS "=") }
'(' { PT _ (TS "(") }
')' { PT _ (TS ")") }
'end' { PT _ (TS "end") } 'end' { PT _ (TS "end") }
'grammar' { PT _ (TS "grammar") } 'grammar' { PT _ (TS "grammar") }
'startcat' { PT _ (TS "startcat") } 'startcat' { PT _ (TS "startcat") }
@@ -33,6 +26,7 @@ import ErrM
L_ident { PT _ (TV $$) } L_ident { PT _ (TV $$) }
L_integ { PT _ (TI $$) } L_integ { PT _ (TI $$) }
L_quoted { PT _ (TL $$) } L_quoted { PT _ (TL $$) }
L_SingleQuoteString { PT _ (T_SingleQuoteString $$) }
L_err { _ } L_err { _ }
@@ -41,6 +35,7 @@ L_err { _ }
Ident : L_ident { Ident $1 } Ident : L_ident { Ident $1 }
Integer : L_integ { (read $1) :: Integer } Integer : L_integ { (read $1) :: Integer }
String : L_quoted { $1 } String : L_quoted { $1 }
SingleQuoteString : L_SingleQuoteString { SingleQuoteString ($1)}
Grammars :: { Grammars } Grammars :: { Grammars }
Grammars : ListGrammar { Grammars (reverse $1) } Grammars : ListGrammar { Grammars (reverse $1) }
@@ -105,60 +100,11 @@ ListSymbol : '.' { [] }
Name :: { Name } Name :: { Name }
Name : ListIdentParam Category { Name (reverse $1) $2 } Name : SingleQuoteString { Name $1 }
ListIdentParam :: { [IdentParam] }
ListIdentParam : {- empty -} { [] }
| ListIdentParam IdentParam '/' { flip (:) $1 $2 }
Category :: { Category } Category :: { Category }
Category : IdentParam '.' Ident ListProj { Category $1 $3 (reverse $4) } Category : SingleQuoteString { Category $1 }
IdentParam :: { IdentParam }
IdentParam : Ident '{' ListField '}' { IdentParam $1 (reverse $3) }
Field :: { Field }
Field : '.' KeyValue { Field $2 }
ListField :: { [Field] }
ListField : {- empty -} { [] }
| ListField Field ';' { flip (:) $1 $2 }
Proj :: { Proj }
Proj : '!' Param { Proj $2 }
ListProj :: { [Proj] }
ListProj : {- empty -} { [] }
| ListProj Proj { flip (:) $1 $2 }
KeyValue :: { KeyValue }
KeyValue : Ident '=' Param { KeyValue $1 $3 }
ListKeyValue :: { [KeyValue] }
ListKeyValue : {- empty -} { [] }
| KeyValue { (:[]) $1 }
| KeyValue ';' ListKeyValue { (:) $1 $3 }
Param :: { Param }
Param : Ident { ParamSimple $1 }
| Ident '(' ListParam ')' { ParamPatt $1 $3 }
| '{' ListKeyValue '}' { ParamRec $2 }
ListParam :: { [Param] }
ListParam : {- empty -} { [] }
| Param { (:[]) $1 }
| Param ',' ListParam { (:) $1 $3 }

View File

@@ -82,6 +82,10 @@ instance Print Ident where
prt _ (Ident i) = doc (showString i) prt _ (Ident i) = doc (showString i)
instance Print SingleQuoteString where
prt _ (SingleQuoteString i) = doc (showString i)
instance Print Grammars where instance Print Grammars where
prt i e = case e of prt i e = case e of
@@ -138,56 +142,12 @@ instance Print Symbol where
instance Print Name where instance Print Name where
prt i e = case e of prt i e = case e of
Name identparams category -> prPrec i 0 (concatD [prt 0 identparams , prt 0 category]) Name singlequotestring -> prPrec i 0 (concatD [prt 0 singlequotestring])
instance Print Category where instance Print Category where
prt i e = case e of prt i e = case e of
Category identparam id projs -> prPrec i 0 (concatD [prt 0 identparam , doc (showString ".") , prt 0 id , prt 0 projs]) Category singlequotestring -> prPrec i 0 (concatD [prt 0 singlequotestring])
instance Print IdentParam where
prt i e = case e of
IdentParam id fields -> prPrec i 0 (concatD [prt 0 id , doc (showString "{") , prt 0 fields , doc (showString "}")])
prtList es = case es of
[] -> (concatD [])
x:xs -> (concatD [prt 0 x , doc (showString "/") , prt 0 xs])
instance Print Field where
prt i e = case e of
Field keyvalue -> prPrec i 0 (concatD [doc (showString ".") , prt 0 keyvalue])
prtList es = case es of
[] -> (concatD [])
x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs])
instance Print Proj where
prt i e = case e of
Proj param -> prPrec i 0 (concatD [doc (showString "!") , prt 0 param])
prtList es = case es of
[] -> (concatD [])
x:xs -> (concatD [prt 0 x , prt 0 xs])
instance Print KeyValue where
prt i e = case e of
KeyValue id param -> prPrec i 0 (concatD [prt 0 id , doc (showString "=") , prt 0 param])
prtList es = case es of
[] -> (concatD [])
[x] -> (concatD [prt 0 x])
x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs])
instance Print Param where
prt i e = case e of
ParamSimple id -> prPrec i 0 (concatD [prt 0 id])
ParamPatt id params -> prPrec i 0 (concatD [prt 0 id , doc (showString "(") , prt 0 params , doc (showString ")")])
ParamRec keyvalues -> prPrec i 0 (concatD [doc (showString "{") , prt 0 keyvalues , doc (showString "}")])
prtList es = case es of
[] -> (concatD [])
[x] -> (concatD [prt 0 x])
x:xs -> (concatD [prt 0 x , doc (showString ",") , prt 0 xs])

View File

@@ -2,11 +2,17 @@
module PrintCFGrammar (prCanonAsCFGM) where module PrintCFGrammar (prCanonAsCFGM) where
import AbsGFC import AbsGFC
import qualified PrintCFG
import Ident import Ident
import GFC import GFC
import Modules import Modules
import qualified ConvertGrammar as Cnv import qualified ConvertGrammar as Cnv
import qualified PrintParser as Prt import qualified PrintParser as Prt
import qualified CFGrammar
import qualified GrammarTypes as GT
import qualified AbsCFG
import qualified Parser
import qualified PrintParser
import ErrM import ErrM
import List (intersperse) import List (intersperse)
@@ -28,11 +34,55 @@ getFlag :: [Flag] -> String -> Maybe String
getFlag fs x = listToMaybe [v | Flg (IC k) (IC v) <- fs, k == x] getFlag fs x = listToMaybe [v | Flg (IC k) (IC v) <- fs, k == x]
prLangAsCFGM :: CanonGrammar -> Ident -> Maybe String -> String prLangAsCFGM :: CanonGrammar -> Ident -> Maybe String -> String
prLangAsCFGM gr i@(IC lang) start = (header . startcat . rules . footer) "" prLangAsCFGM gr i start = prCFGrammarAsCFGM (Cnv.cfg (Cnv.pInfo gr i)) i start
{-
prCFGrammarAsCFGM :: GT.CFGrammar -> Ident -> Maybe String -> String
prCFGrammarAsCFGM gr i@(IC lang) start = (header . startcat . rules . footer) ""
where where
header = showString "grammar " . showString lang . showString "\n" header = showString "grammar " . showString lang . showString "\n"
startcat = maybe id (\s -> showString "startcat " . showString (s++"{}.s") . showString ";\n") start startcat = maybe id (\s -> showString "startcat " . showString (s++"{}.s") . showString ";\n") start
rules0 = map Prt.prt $ Cnv.cfg $ Cnv.pInfo gr i rules0 = map Prt.prt gr
rules = showString $ concat $ map (\l -> init l++";\n") rules0 rules = showString $ concat $ map (\l -> init l++";\n") rules0
footer = showString "end grammar\n" footer = showString "end grammar\n"
-}
prCFGrammarAsCFGM :: GT.CFGrammar -> Ident -> Maybe String -> String
prCFGrammarAsCFGM gr i start = PrintCFG.printTree $ cfGrammarToCFGM gr i start
cfGrammarToCFGM :: GT.CFGrammar -> Ident -> Maybe String -> AbsCFG.Grammar
cfGrammarToCFGM gr i start = AbsCFG.Grammar (identToCFGMIdent i) flags (map ruleToCFGMRule gr)
where flags = maybe [] (\c -> [AbsCFG.StartCat $ strToCFGMCat (c++"{}.s")]) start
ruleToCFGMRule :: GT.CFRule -> AbsCFG.Rule
ruleToCFGMRule (CFGrammar.Rule c rhs (GT.CFName (GT.MCFName fun cat args) lbl profile))
= AbsCFG.Rule fun' n' p' c' rhs'
where
fun' = identToCFGMIdent fun
n' = strToCFGMName (Prt.prt cat ++ concat [ "/" ++ Prt.prt arg | arg <- args ] ++ Prt.prt lbl)
p' = profileToCFGMProfile profile
c' = catToCFGMCat c
rhs' = map symbolToGFCMSymbol rhs
profileToCFGMProfile :: GT.CFProfile -> AbsCFG.Profile
profileToCFGMProfile = AbsCFG.Profile . map (AbsCFG.Ints . map fromIntegral)
identToCFGMIdent :: Ident -> AbsCFG.Ident
identToCFGMIdent = AbsCFG.Ident . Prt.prt
strToCFGMCat :: String -> AbsCFG.Category
strToCFGMCat = AbsCFG.Category . AbsCFG.SingleQuoteString . quoteSingle
catToCFGMCat :: GT.CFCat -> AbsCFG.Category
catToCFGMCat = strToCFGMCat . Prt.prt
strToCFGMName :: String -> AbsCFG.Name
strToCFGMName = AbsCFG.Name . AbsCFG.SingleQuoteString . quoteSingle
symbolToGFCMSymbol :: Parser.Symbol GT.CFCat GT.Token -> AbsCFG.Symbol
symbolToGFCMSymbol (Parser.Cat c) = AbsCFG.CatS (catToCFGMCat c)
symbolToGFCMSymbol (Parser.Tok t) = AbsCFG.TermS (Prt.prt t)
quoteSingle :: String -> String
quoteSingle s = "'" ++ escapeSingle s ++ "'"
where escapeSingle = concatMap (\c -> if c == '\'' then "\\'" else [c])