packages feed

rtk-0.11: test/golden/java-simple/JavaSimpleParser.y

-- Generated by RTK from grammar 'JavaSimple'. Do not edit by hand.
{
{-# LANGUAGE DeriveDataTypeable #-}
module JavaSimpleParser where
import qualified Data.Generics as Gen
import qualified JavaSimpleLexer as L (Token(..), PosToken(..), AlexPosn(..), alexScanTokens)
}

%name parseJavaSimple
%tokentype { L.PosToken }
%monad { Either String }
%error { parseError }

%token

rtk__eof { L.PosToken _ L.EndOfFile }
tok_ClassDeclaration_dummy_10 { L.PosToken _ L.Tk__tok_ClassDeclaration_dummy_10 }
tok_CompilationUnit_dummy_9 { L.PosToken _ L.Tk__tok_CompilationUnit_dummy_9 }
tok_CompoundName_dummy_8 { L.PosToken _ L.Tk__tok_CompoundName_dummy_8 }
tok_Field_dummy_7 { L.PosToken _ L.Tk__tok_Field_dummy_7 }
tok_FieldList_dummy_6 { L.PosToken _ L.Tk__tok_FieldList_dummy_6 }
tok_JavaSimple_dummy_11 { L.PosToken _ L.Tk__tok_JavaSimple_dummy_11 }
tok_Package_dummy_5 { L.PosToken _ L.Tk__tok_Package_dummy_5 }
tok_Type_dummy_4 { L.PosToken _ L.Tk__tok_Type_dummy_4 }
tok__symbol__5 { L.PosToken _ L.Tk__tok__symbol__5 }
tok__symbol__4 { L.PosToken _ L.Tk__tok__symbol__4 }
tok_public_2 { L.PosToken _ L.Tk__tok_public_2 }
tok_package_0 { L.PosToken _ L.Tk__tok_package_0 }
tok_int_6 { L.PosToken _ L.Tk__tok_int_6 }
tok_class_3 { L.PosToken _ L.Tk__tok_class_3 }
tok_String_7 { L.PosToken _ L.Tk__tok_String_7 }
tok__semi__1 { L.PosToken _ L.Tk__tok__semi__1 }
tok__dot__8 { L.PosToken _ L.Tk__tok__dot__8 }
id { L.PosToken _ (L.Tk__id _) }
qq_CompoundName { L.PosToken _ (L.Tk__qq_CompoundName _) }
qq_Type { L.PosToken _ (L.Tk__qq_Type _) }
qq_Field { L.PosToken _ (L.Tk__qq_Field _) }
qq_FieldList { L.PosToken _ (L.Tk__qq_FieldList _) }
qq_ClassDeclaration { L.PosToken _ (L.Tk__qq_ClassDeclaration _) }
qq_Package { L.PosToken _ (L.Tk__qq_Package _) }
qq_CompilationUnit { L.PosToken _ (L.Tk__qq_CompilationUnit _) }
qq_JavaSimple { L.PosToken _ (L.Tk__qq_JavaSimple _) }

%%

JavaSimple__top : JavaSimple rtk__eof { $1 }

JavaSimple : tok_JavaSimple_dummy_11 JavaSimple tok_JavaSimple_dummy_11 { Ctr__JavaSimple__0 (rtkPosOf $1) $2 } |
             tok_ClassDeclaration_dummy_10 ClassDeclaration tok_ClassDeclaration_dummy_10 { Ctr__JavaSimple__1 (rtkPosOf $1) $2 } |
             tok_CompilationUnit_dummy_9 CompilationUnit tok_CompilationUnit_dummy_9 { Ctr__JavaSimple__2 (rtkPosOf $1) $2 } |
             tok_CompoundName_dummy_8 CompoundName tok_CompoundName_dummy_8 { Ctr__JavaSimple__3 (rtkPosOf $1) $2 } |
             tok_Field_dummy_7 Field tok_Field_dummy_7 { Ctr__JavaSimple__4 (rtkPosOf $1) $2 } |
             tok_FieldList_dummy_6 FieldList tok_FieldList_dummy_6 { Ctr__JavaSimple__5 (rtkPosOf $1) (reverse $2) } |
             tok_Package_dummy_5 Package tok_Package_dummy_5 { Ctr__JavaSimple__6 (rtkPosOf $1) $2 } |
             tok_Type_dummy_4 Type tok_Type_dummy_4 { Ctr__JavaSimple__7 (rtkPosOf $1) $2 }

JavaSimple : qq_JavaSimple { Anti_JavaSimple (tkVal_qq_JavaSimple $1) } |
             CompilationUnit { Ctr__JavaSimple__8 (rtkPosOf $1) $1 }

ClassDeclaration : qq_ClassDeclaration { Anti_ClassDeclaration (tkVal_qq_ClassDeclaration $1) } |
                   Rule_2 tok_class_3 id tok__symbol__4 FieldList tok__symbol__5 { Ctr__ClassDeclaration__0 (rtkPosOf $1) $1 (tkVal_id $3) (reverse $5) }

CompilationUnit : qq_CompilationUnit { Anti_CompilationUnit (tkVal_qq_CompilationUnit $1) } |
                  Rule_0 Rule_1 { Ctr__CompilationUnit__0 (rtkPosOf $1) $1 $2 }

CompoundName : qq_CompoundName { Anti_CompoundName (tkVal_qq_CompoundName $1) } |
               id { Ctr__CompoundName__0 (rtkPosOf $1) (tkVal_id $1) } |
               CompoundName tok__dot__8 id { Ctr__CompoundName__1 (rtkPosOf $1) $1 (tkVal_id $3) }

Field : qq_Field { Anti_Field (tkVal_qq_Field $1) } |
        Type id tok__semi__1 { Ctr__Field__0 (rtkPosOf $1) $1 (tkVal_id $2) }

ListElem_FieldList3 : qq_FieldList { Anti_Field (tkVal_qq_FieldList $1) } |
                      Field { $1 }

FieldList : {- empty -} { [] } |
            FieldList ListElem_FieldList3 { $2 : $1 }

Package : qq_Package { Anti_Package (tkVal_qq_Package $1) } |
          tok_package_0 CompoundName tok__semi__1 { Ctr__Package__0 (rtkPosOf $1) $2 }

Rule_0 : { Ctr__Rule_0__0 rtkNoPos } |
         Package { Ctr__Rule_0__1 (rtkPosOf $1) $1 }

Rule_1 : { Ctr__Rule_1__0 rtkNoPos } |
         ClassDeclaration { Ctr__Rule_1__1 (rtkPosOf $1) $1 }

Rule_2 : { Ctr__Rule_2__0 rtkNoPos } |
         tok_public_2 { Ctr__Rule_2__1 (rtkPosOf $1) }

Type : qq_Type { Anti_Type (tkVal_qq_Type $1) } |
       tok_int_6 { Ctr__Type__0 (rtkPosOf $1) } |
       tok_String_7 { Ctr__Type__1 (rtkPosOf $1) } |
       id { Ctr__Type__2 (rtkPosOf $1) (tkVal_id $1) }


{
parseError :: [L.PosToken] -> Either String a
parseError [] = Left "unexpected end of input"
parseError (L.PosToken (L.AlexPn _ line col) tok : _) =
    Left $ show line ++ ":" ++ show col ++ ":unexpected " ++ showRtkToken tok

-- Render a token the way it appears in the source, for error messages
showRtkToken :: L.Token -> String
showRtkToken L.EndOfFile = "end of input"
showRtkToken L.Tk__tok_ClassDeclaration_dummy_10 = "'tok_ClassDeclaration_dummy_10'"
showRtkToken L.Tk__tok_CompilationUnit_dummy_9 = "'tok_CompilationUnit_dummy_9'"
showRtkToken L.Tk__tok_CompoundName_dummy_8 = "'tok_CompoundName_dummy_8'"
showRtkToken L.Tk__tok_Field_dummy_7 = "'tok_Field_dummy_7'"
showRtkToken L.Tk__tok_FieldList_dummy_6 = "'tok_FieldList_dummy_6'"
showRtkToken L.Tk__tok_JavaSimple_dummy_11 = "'tok_JavaSimple_dummy_11'"
showRtkToken L.Tk__tok_Package_dummy_5 = "'tok_Package_dummy_5'"
showRtkToken L.Tk__tok_Type_dummy_4 = "'tok_Type_dummy_4'"
showRtkToken L.Tk__tok__symbol__5 = "'}'"
showRtkToken L.Tk__tok__symbol__4 = "'{'"
showRtkToken L.Tk__tok_public_2 = "'public'"
showRtkToken L.Tk__tok_package_0 = "'package'"
showRtkToken L.Tk__tok_int_6 = "'int'"
showRtkToken L.Tk__tok_class_3 = "'class'"
showRtkToken L.Tk__tok_String_7 = "'String'"
showRtkToken L.Tk__tok__semi__1 = "';'"
showRtkToken L.Tk__tok__dot__8 = "'.'"
showRtkToken (L.Tk__id v) = "id " ++ show v
showRtkToken (L.Tk__qq_CompoundName v) = "qq_CompoundName " ++ show v
showRtkToken (L.Tk__qq_Type v) = "qq_Type " ++ show v
showRtkToken (L.Tk__qq_Field v) = "qq_Field " ++ show v
showRtkToken (L.Tk__qq_FieldList v) = "qq_FieldList " ++ show v
showRtkToken (L.Tk__qq_ClassDeclaration v) = "qq_ClassDeclaration " ++ show v
showRtkToken (L.Tk__qq_Package v) = "qq_Package " ++ show v
showRtkToken (L.Tk__qq_CompilationUnit v) = "qq_CompilationUnit " ++ show v
showRtkToken (L.Tk__qq_JavaSimple v) = "qq_JavaSimple " ++ show v

-- Source position of a node: every constructor except the Anti_* splice
-- artifacts stores the position of its alternative's first symbol in its
-- first field. Positions are transparent for equality and ordering, so two
-- ASTs that differ only in source positions (e.g. a quasi-quote parsed at
-- compile time vs the same construct parsed at run time) compare equal.
newtype RtkPos = RtkPos L.AlexPosn deriving (Show, Gen.Data, Gen.Typeable)
instance Eq RtkPos where _ == _ = True
instance Ord RtkPos where compare _ _ = EQ

-- The position used where no source token exists: empty productions, empty
-- lists, absent optionals and Anti_* quasi-quote splices
rtkNoPos :: RtkPos
rtkNoPos = RtkPos (L.AlexPn 0 0 0)

class RtkPosOf a where
    rtkPosOf :: a -> RtkPos
instance RtkPosOf L.PosToken where
    rtkPosOf (L.PosToken p _) = RtkPos p
instance RtkPosOf a => RtkPosOf [a] where
    rtkPosOf (x : _) = rtkPosOf x
    rtkPosOf []      = rtkNoPos
instance RtkPosOf a => RtkPosOf (Maybe a) where
    rtkPosOf (Just x) = rtkPosOf x
    rtkPosOf Nothing  = rtkNoPos
-- A Char carries no position; this also covers String token payloads
instance RtkPosOf Char where
    rtkPosOf _ = rtkNoPos

-- Recover a token's payload from the whole positioned token: %token
-- bindings keep the L.PosToken so semantic actions can read its position
tkVal_id :: L.PosToken -> String
tkVal_id (L.PosToken _ (L.Tk__id v)) = v
tkVal_id t = error ("rtk internal error: token id expected, got " ++ showRtkToken (L.ptToken t))
tkVal_qq_CompoundName :: L.PosToken -> String
tkVal_qq_CompoundName (L.PosToken _ (L.Tk__qq_CompoundName v)) = v
tkVal_qq_CompoundName t = error ("rtk internal error: token qq_CompoundName expected, got " ++ showRtkToken (L.ptToken t))
tkVal_qq_Type :: L.PosToken -> String
tkVal_qq_Type (L.PosToken _ (L.Tk__qq_Type v)) = v
tkVal_qq_Type t = error ("rtk internal error: token qq_Type expected, got " ++ showRtkToken (L.ptToken t))
tkVal_qq_Field :: L.PosToken -> String
tkVal_qq_Field (L.PosToken _ (L.Tk__qq_Field v)) = v
tkVal_qq_Field t = error ("rtk internal error: token qq_Field expected, got " ++ showRtkToken (L.ptToken t))
tkVal_qq_FieldList :: L.PosToken -> String
tkVal_qq_FieldList (L.PosToken _ (L.Tk__qq_FieldList v)) = v
tkVal_qq_FieldList t = error ("rtk internal error: token qq_FieldList expected, got " ++ showRtkToken (L.ptToken t))
tkVal_qq_ClassDeclaration :: L.PosToken -> String
tkVal_qq_ClassDeclaration (L.PosToken _ (L.Tk__qq_ClassDeclaration v)) = v
tkVal_qq_ClassDeclaration t = error ("rtk internal error: token qq_ClassDeclaration expected, got " ++ showRtkToken (L.ptToken t))
tkVal_qq_Package :: L.PosToken -> String
tkVal_qq_Package (L.PosToken _ (L.Tk__qq_Package v)) = v
tkVal_qq_Package t = error ("rtk internal error: token qq_Package expected, got " ++ showRtkToken (L.ptToken t))
tkVal_qq_CompilationUnit :: L.PosToken -> String
tkVal_qq_CompilationUnit (L.PosToken _ (L.Tk__qq_CompilationUnit v)) = v
tkVal_qq_CompilationUnit t = error ("rtk internal error: token qq_CompilationUnit expected, got " ++ showRtkToken (L.ptToken t))
tkVal_qq_JavaSimple :: L.PosToken -> String
tkVal_qq_JavaSimple (L.PosToken _ (L.Tk__qq_JavaSimple v)) = v
tkVal_qq_JavaSimple t = error ("rtk internal error: token qq_JavaSimple expected, got " ++ showRtkToken (L.ptToken t))

data JavaSimple = Ctr__JavaSimple__0 RtkPos JavaSimple |
                  Ctr__JavaSimple__1 RtkPos ClassDeclaration |
                  Ctr__JavaSimple__2 RtkPos CompilationUnit |
                  Ctr__JavaSimple__3 RtkPos CompoundName |
                  Ctr__JavaSimple__4 RtkPos Field |
                  Ctr__JavaSimple__5 RtkPos FieldList |
                  Ctr__JavaSimple__6 RtkPos Package |
                  Ctr__JavaSimple__7 RtkPos Type |
                  Anti_JavaSimple String |
                  Ctr__JavaSimple__8 RtkPos CompilationUnit
                  deriving (Ord, Eq, Show, Gen.Data, Gen.Typeable)
instance RtkPosOf JavaSimple where
    rtkPosOf (Ctr__JavaSimple__0 p _) = p
    rtkPosOf (Ctr__JavaSimple__1 p _) = p
    rtkPosOf (Ctr__JavaSimple__2 p _) = p
    rtkPosOf (Ctr__JavaSimple__3 p _) = p
    rtkPosOf (Ctr__JavaSimple__4 p _) = p
    rtkPosOf (Ctr__JavaSimple__5 p _) = p
    rtkPosOf (Ctr__JavaSimple__6 p _) = p
    rtkPosOf (Ctr__JavaSimple__7 p _) = p
    rtkPosOf (Anti_JavaSimple _) = rtkNoPos
    rtkPosOf (Ctr__JavaSimple__8 p _) = p
data ClassDeclaration = Anti_ClassDeclaration String |
                        Ctr__ClassDeclaration__0 RtkPos Rule_2 String FieldList
                        deriving (Ord, Eq, Show, Gen.Data, Gen.Typeable)
instance RtkPosOf ClassDeclaration where
    rtkPosOf (Anti_ClassDeclaration _) = rtkNoPos
    rtkPosOf (Ctr__ClassDeclaration__0 p _ _ _) = p
data CompilationUnit = Anti_CompilationUnit String |
                       Ctr__CompilationUnit__0 RtkPos Rule_0 Rule_1
                       deriving (Ord, Eq, Show, Gen.Data, Gen.Typeable)
instance RtkPosOf CompilationUnit where
    rtkPosOf (Anti_CompilationUnit _) = rtkNoPos
    rtkPosOf (Ctr__CompilationUnit__0 p _ _) = p
data CompoundName = Anti_CompoundName String |
                    Ctr__CompoundName__0 RtkPos String |
                    Ctr__CompoundName__1 RtkPos CompoundName String
                    deriving (Ord, Eq, Show, Gen.Data, Gen.Typeable)
instance RtkPosOf CompoundName where
    rtkPosOf (Anti_CompoundName _) = rtkNoPos
    rtkPosOf (Ctr__CompoundName__0 p _) = p
    rtkPosOf (Ctr__CompoundName__1 p _ _) = p
data Field = Anti_Field String |
             Ctr__Field__0 RtkPos Type String
             deriving (Ord, Eq, Show, Gen.Data, Gen.Typeable)
instance RtkPosOf Field where
    rtkPosOf (Anti_Field _) = rtkNoPos
    rtkPosOf (Ctr__Field__0 p _ _) = p
type FieldList = [Field]
data Package = Anti_Package String |
               Ctr__Package__0 RtkPos CompoundName
               deriving (Ord, Eq, Show, Gen.Data, Gen.Typeable)
instance RtkPosOf Package where
    rtkPosOf (Anti_Package _) = rtkNoPos
    rtkPosOf (Ctr__Package__0 p _) = p
data Rule_0 = Ctr__Rule_0__0 RtkPos |
              Ctr__Rule_0__1 RtkPos Package
              deriving (Ord, Eq, Show, Gen.Data, Gen.Typeable)
instance RtkPosOf Rule_0 where
    rtkPosOf (Ctr__Rule_0__0 p) = p
    rtkPosOf (Ctr__Rule_0__1 p _) = p
data Rule_1 = Ctr__Rule_1__0 RtkPos |
              Ctr__Rule_1__1 RtkPos ClassDeclaration
              deriving (Ord, Eq, Show, Gen.Data, Gen.Typeable)
instance RtkPosOf Rule_1 where
    rtkPosOf (Ctr__Rule_1__0 p) = p
    rtkPosOf (Ctr__Rule_1__1 p _) = p
data Rule_2 = Ctr__Rule_2__0 RtkPos |
              Ctr__Rule_2__1 RtkPos
              deriving (Ord, Eq, Show, Gen.Data, Gen.Typeable)
instance RtkPosOf Rule_2 where
    rtkPosOf (Ctr__Rule_2__0 p) = p
    rtkPosOf (Ctr__Rule_2__1 p) = p
data Type = Anti_Type String |
            Ctr__Type__0 RtkPos |
            Ctr__Type__1 RtkPos |
            Ctr__Type__2 RtkPos String
            deriving (Ord, Eq, Show, Gen.Data, Gen.Typeable)
instance RtkPosOf Type where
    rtkPosOf (Anti_Type _) = rtkNoPos
    rtkPosOf (Ctr__Type__0 p) = p
    rtkPosOf (Ctr__Type__1 p) = p
    rtkPosOf (Ctr__Type__2 p _) = p
}