-- File generated by the BNF Converter. -- Templates for pattern matching on abstract syntax {-# OPTIONS_GHC -fno-warn-unused-matches #-} module SkelJava where import Prelude (($), Either(..), String, (++), Show, show) import qualified AbsJava type Err = Either String type Result = Err String failure :: Show a => a -> Result failure x = Left $ "Undefined case: " ++ show x transIdent :: AbsJava.Ident -> Result transIdent x = case x of AbsJava.Ident string -> failure x transUnsigned :: AbsJava.Unsigned -> Result transUnsigned x = case x of AbsJava.Unsigned string -> failure x transLong :: AbsJava.Long -> Result transLong x = case x of AbsJava.Long string -> failure x transUnsignedLong :: AbsJava.UnsignedLong -> Result transUnsignedLong x = case x of AbsJava.UnsignedLong string -> failure x transHexadecimal :: AbsJava.Hexadecimal -> Result transHexadecimal x = case x of AbsJava.Hexadecimal string -> failure x transHexUnsigned :: AbsJava.HexUnsigned -> Result transHexUnsigned x = case x of AbsJava.HexUnsigned string -> failure x transHexLong :: AbsJava.HexLong -> Result transHexLong x = case x of AbsJava.HexLong string -> failure x transHexUnsLong :: AbsJava.HexUnsLong -> Result transHexUnsLong x = case x of AbsJava.HexUnsLong string -> failure x transOctal :: AbsJava.Octal -> Result transOctal x = case x of AbsJava.Octal string -> failure x transOctalUnsigned :: AbsJava.OctalUnsigned -> Result transOctalUnsigned x = case x of AbsJava.OctalUnsigned string -> failure x transOctalLong :: AbsJava.OctalLong -> Result transOctalLong x = case x of AbsJava.OctalLong string -> failure x transOctalUnsLong :: AbsJava.OctalUnsLong -> Result transOctalUnsLong x = case x of AbsJava.OctalUnsLong string -> failure x transJDouble :: AbsJava.JDouble -> Result transJDouble x = case x of AbsJava.JDouble string -> failure x transJFloat :: AbsJava.JFloat -> Result transJFloat x = case x of AbsJava.JFloat string -> failure x transJLongDouble :: AbsJava.JLongDouble -> Result transJLongDouble x = case x of AbsJava.JLongDouble string -> failure x transUnicodeChar :: AbsJava.UnicodeChar -> Result transUnicodeChar x = case x of AbsJava.UnicodeChar string -> failure x transJChar :: AbsJava.JChar -> Result transJChar x = case x of AbsJava.JChar string -> failure x transProgramFile :: Show a => AbsJava.ProgramFile' a -> Result transProgramFile x = case x of AbsJava.ProgF _ imports typeDeclarations -> failure x AbsJava.Prpkg _ idents semis imports typeDeclarations -> failure x transImport :: Show a => AbsJava.Import' a -> Result transImport x = case x of AbsJava.ImportA _ idents semis -> failure x AbsJava.ImportN _ idents semis -> failure x transTypeDeclaration :: Show a => AbsJava.TypeDeclaration' a -> Result transTypeDeclaration x = case x of AbsJava.TypeDecl _ classHeader fieldDeclarations -> failure x transClassHeader :: Show a => AbsJava.ClassHeader' a -> Result transClassHeader x = case x of AbsJava.ClassDec _ modifiers x -> failure x AbsJava.ClassDecE _ modifiers x typeNames -> failure x AbsJava.ClassDecEI _ modifiers x typeNames1 typeNames2 -> failure x AbsJava.ClassDecI _ modifiers x typeNames -> failure x AbsJava.InterDec _ modifiers x -> failure x AbsJava.InterDecE _ modifiers x typeNames -> failure x AbsJava.InterDecEI _ modifiers x typeNames1 typeNames2 -> failure x AbsJava.InterDecI _ modifiers x typeNames -> failure x transFieldDeclaration :: Show a => AbsJava.FieldDeclaration' a -> Result transFieldDeclaration x = case x of AbsJava.Dblk _ body -> failure x AbsJava.Dconst _ modifiers x parameters body -> failure x AbsJava.Dconstt _ modifiers x parameters typeNames body -> failure x AbsJava.Dinnerclass _ typeDeclaration -> failure x AbsJava.Dmth _ modifiers typeSpec methodDecl methodBody -> failure x AbsJava.Dmthth _ modifiers typeSpec methodDecl typeNames methodBody -> failure x AbsJava.Dvar _ modifiers typeSpec varDecls -> failure x transMethodBody :: Show a => AbsJava.MethodBody' a -> Result transMethodBody x = case x of AbsJava.IBody _ -> failure x AbsJava.MBody _ body -> failure x transLVarStatement :: Show a => AbsJava.LVarStatement' a -> Result transLVarStatement x = case x of AbsJava.LVar _ typeSpec varDecls -> failure x AbsJava.LVarf _ typeSpec varDecls -> failure x AbsJava.Statem _ stm -> failure x transBody :: Show a => AbsJava.Body' a -> Result transBody x = case x of AbsJava.BodyImpl _ lVarStatements -> failure x transStm :: Show a => AbsJava.Stm' a -> Result transStm x = case x of AbsJava.Case _ exp -> failure x AbsJava.Dflt _ -> failure x AbsJava.Exps _ exp -> failure x AbsJava.Grd _ guardStm -> failure x AbsJava.Iter _ iterStm -> failure x AbsJava.Jmp _ jumpStm -> failure x AbsJava.LV _ lVarStatements -> failure x AbsJava.Lbl _ x -> failure x AbsJava.Sel _ selectionStm -> failure x AbsJava.Sem _ -> failure x transDeclaratorName :: Show a => AbsJava.DeclaratorName' a -> Result transDeclaratorName x = case x of AbsJava.DeclArray _ x bracketsOpts -> failure x AbsJava.DeclName _ x -> failure x transVarDecl :: Show a => AbsJava.VarDecl' a -> Result transVarDecl x = case x of AbsJava.VDecl _ x -> failure x AbsJava.VDeclAssign _ declaratorName variableInits -> failure x transVariableInits :: Show a => AbsJava.VariableInits' a -> Result transVariableInits x = case x of AbsJava.IArri _ arrayInits -> failure x AbsJava.IEmpt _ -> failure x AbsJava.IExp _ exp -> failure x transArrayInits :: Show a => AbsJava.ArrayInits' a -> Result transArrayInits x = case x of AbsJava.Vai _ arrayInits variableInits -> failure x AbsJava.Vainit _ variableInits -> failure x AbsJava.Vais _ arrayInits -> failure x transMethodDecl :: Show a => AbsJava.MethodDecl' a -> Result transMethodDecl x = case x of AbsJava.Mth _ declaratorName parameters -> failure x AbsJava.MthdArr _ methodDecl bracketsOpt -> failure x transParameter :: Show a => AbsJava.Parameter' a -> Result transParameter x = case x of AbsJava.Param _ typeSpec declaratorName -> failure x AbsJava.Pfinal _ typeSpec declaratorName -> failure x transSelectionStm :: Show a => AbsJava.SelectionStm' a -> Result transSelectionStm x = case x of AbsJava.If _ exp stm1 elseIfStms stm2 -> failure x AbsJava.Ifone _ exp stm elseIfStms -> failure x AbsJava.Switch _ exp body -> failure x transElseIfStm :: Show a => AbsJava.ElseIfStm' a -> Result transElseIfStm x = case x of AbsJava.Elseif _ exp stm -> failure x transJumpStm :: Show a => AbsJava.JumpStm' a -> Result transJumpStm x = case x of AbsJava.Break _ -> failure x AbsJava.Brlabel _ x -> failure x AbsJava.Continue _ -> failure x AbsJava.Continuelabel _ x -> failure x AbsJava.Return _ -> failure x AbsJava.ReturnExp _ exp -> failure x AbsJava.Throw _ exp -> failure x transGuardStm :: Show a => AbsJava.GuardStm' a -> Result transGuardStm x = case x of AbsJava.Synchronized _ exp body -> failure x AbsJava.Try _ body catchs -> failure x AbsJava.Tryfinally _ body1 catchs body2 -> failure x transCatch :: Show a => AbsJava.Catch' a -> Result transCatch x = case x of AbsJava.Catch1 _ typeSpec x body -> failure x AbsJava.Catch2 _ typeSpec body -> failure x transIterStm :: Show a => AbsJava.IterStm' a -> Result transIterStm x = case x of AbsJava.Do _ stm exp -> failure x AbsJava.For _ forInit exps1 exps2 stm -> failure x AbsJava.While _ exp stm -> failure x transForInit :: Show a => AbsJava.ForInit' a -> Result transForInit x = case x of AbsJava.DeclVar _ typeSpec varDecls -> failure x AbsJava.DeclVarFinal _ typeSpec varDecls -> failure x AbsJava.Exprs1 _ exps -> failure x transModifier :: Show a => AbsJava.Modifier' a -> Result transModifier x = case x of AbsJava.Mabstract _ -> failure x AbsJava.Mfinal _ -> failure x AbsJava.Mnative _ -> failure x AbsJava.Mprivate _ -> failure x AbsJava.Mprotected _ -> failure x AbsJava.Mpublic _ -> failure x AbsJava.Mstatic _ -> failure x AbsJava.Msync _ -> failure x AbsJava.Mtransient _ -> failure x AbsJava.Mvolatile _ -> failure x transBasicType :: Show a => AbsJava.BasicType' a -> Result transBasicType x = case x of AbsJava.Tboolean _ -> failure x AbsJava.Tbyte _ -> failure x AbsJava.Tchar _ -> failure x AbsJava.Tdouble _ -> failure x AbsJava.Tfloat _ -> failure x AbsJava.Tint _ -> failure x AbsJava.Tlong _ -> failure x AbsJava.Tshort _ -> failure x transTypeSpec :: Show a => AbsJava.TypeSpec' a -> Result transTypeSpec x = case x of AbsJava.ArrayType _ typeName bracketsOpts -> failure x AbsJava.NamedType _ typeName -> failure x transTypeName :: Show a => AbsJava.TypeName' a -> Result transTypeName x = case x of AbsJava.BuiltIn _ basicType -> failure x AbsJava.ClassType _ idents -> failure x transBracketsOpt :: Show a => AbsJava.BracketsOpt' a -> Result transBracketsOpt x = case x of AbsJava.BracketsEmpty _ -> failure x transExp :: Show a => AbsJava.Exp' a -> Result transExp x = case x of AbsJava.Earr _ arrAcc -> failure x AbsJava.Earrcoercion _ idents bracketsOpts exp -> failure x AbsJava.Eassign _ exp1 assignment_op exp2 -> failure x AbsJava.Ebcoercion _ basicType exp -> failure x AbsJava.Ebitand _ exp1 exp2 -> failure x AbsJava.Ebitexor _ exp1 exp2 -> failure x AbsJava.Ebitor _ exp1 exp2 -> failure x AbsJava.Econdition _ exp1 exp2 exp3 -> failure x AbsJava.Econst _ constant -> failure x AbsJava.Ediv _ exp1 exp2 -> failure x AbsJava.Eeq _ exp1 exp2 -> failure x AbsJava.Eexpcoercion _ exp1 exp2 -> failure x AbsJava.Efld _ fieldAcc -> failure x AbsJava.Ege _ exp1 exp2 -> failure x AbsJava.Egrthen _ exp1 exp2 -> failure x AbsJava.Eland _ exp1 exp2 -> failure x AbsJava.Ele _ exp1 exp2 -> failure x AbsJava.Eleft _ exp1 exp2 -> failure x AbsJava.Elor _ exp1 exp2 -> failure x AbsJava.Elthen _ exp1 exp2 -> failure x AbsJava.Eminus _ exp1 exp2 -> failure x AbsJava.Emod _ exp1 exp2 -> failure x AbsJava.Emth _ mthCall -> failure x AbsJava.Eneq _ exp1 exp2 -> failure x AbsJava.Enewalloc _ newAlloc -> failure x AbsJava.Eplus _ exp1 exp2 -> failure x AbsJava.Epostdec _ exp -> failure x AbsJava.Epostinc _ exp -> failure x AbsJava.Epredec _ exp -> failure x AbsJava.Epreinc _ exp -> failure x AbsJava.Epreop _ unary_operator exp -> failure x AbsJava.Eright _ exp1 exp2 -> failure x AbsJava.Especname _ specName -> failure x AbsJava.Estring _ str -> failure x AbsJava.Etimes _ exp1 exp2 -> failure x AbsJava.Etrip _ exp1 exp2 -> failure x AbsJava.Etype _ exp typeName -> failure x AbsJava.Evar _ idents -> failure x transSpecName :: Show a => AbsJava.SpecName' a -> Result transSpecName x = case x of AbsJava.SSnull _ -> failure x AbsJava.SSsuper _ -> failure x AbsJava.SSthis _ -> failure x transNewAlloc :: Show a => AbsJava.NewAlloc' a -> Result transNewAlloc x = case x of AbsJava.Anewarray _ typeName dimExprs -> failure x AbsJava.Anewarriempty _ typeName dimExprs -> failure x AbsJava.Anewarrinits _ typeName dimExprs arrayInits -> failure x AbsJava.Anewclass _ typeName args -> failure x AbsJava.Anewinnerclass _ typeName args fieldDeclarations -> failure x transArrAcc :: Show a => AbsJava.ArrAcc' a -> Result transArrAcc x = case x of AbsJava.Aarr _ idents exp -> failure x AbsJava.Aarr1 _ specExp exp -> failure x transSpecExp :: Show a => AbsJava.SpecExp' a -> Result transSpecExp x = case x of AbsJava.Cep _ exp -> failure x AbsJava.Cnp _ specExpNP -> failure x AbsJava.Cthis _ specName -> failure x transSpecExpNP :: Show a => AbsJava.SpecExpNP' a -> Result transSpecExpNP x = case x of AbsJava.CNLit _ constant -> failure x AbsJava.CNParr _ arrAcc -> failure x AbsJava.CNPfld _ fieldAcc -> failure x AbsJava.CNPmth _ mthCall -> failure x transMthCall :: Show a => AbsJava.MthCall' a -> Result transMthCall x = case x of AbsJava.Mmth _ idents args -> failure x AbsJava.Mmth1 _ specExpNP args -> failure x AbsJava.Mmthspec _ specName args -> failure x transFieldAcc :: Show a => AbsJava.FieldAcc' a -> Result transFieldAcc x = case x of AbsJava.Fclass _ idents -> failure x AbsJava.Ffclass2 _ basicType -> failure x AbsJava.Ffthis _ idents -> failure x AbsJava.Ffvar _ specExp x -> failure x AbsJava.Ffvar1 _ newAlloc x -> failure x transArgs :: Show a => AbsJava.Args' a -> Result transArgs x = case x of AbsJava.ArgList _ exps -> failure x transDimExpr :: Show a => AbsJava.DimExpr' a -> Result transDimExpr x = case x of AbsJava.Dim _ exp -> failure x transConstant :: Show a => AbsJava.Constant' a -> Result transConstant x = case x of AbsJava.Ecdouble _ jDouble -> failure x AbsJava.Ecfloat _ jFloat -> failure x AbsJava.Echar _ jChar -> failure x AbsJava.Eclongdouble _ jLongDouble -> failure x AbsJava.Edouble _ d -> failure x AbsJava.Efalse _ -> failure x AbsJava.Efloat _ d -> failure x AbsJava.Ehexadec _ hexadecimal -> failure x AbsJava.Ehexalong _ hexLong -> failure x AbsJava.Ehexaunsign _ hexUnsigned -> failure x AbsJava.Ehexaunslong _ hexUnsLong -> failure x AbsJava.Eint _ n -> failure x AbsJava.Elong _ long -> failure x AbsJava.Elonger _ n -> failure x AbsJava.Eoctal _ octal -> failure x AbsJava.Eoctallong _ octalLong -> failure x AbsJava.Eoctalunsign _ octalUnsigned -> failure x AbsJava.Eoctalunslong _ octalUnsLong -> failure x AbsJava.Etrue _ -> failure x AbsJava.Eunicode _ unicodeChar -> failure x AbsJava.Eunsigned _ unsigned -> failure x AbsJava.Eunsignlong _ unsignedLong -> failure x transUnary_operator :: Show a => AbsJava.Unary_operator' a -> Result transUnary_operator x = case x of AbsJava.Complement _ -> failure x AbsJava.Logicalneg _ -> failure x AbsJava.Negative _ -> failure x AbsJava.Plus _ -> failure x transAssignment_op :: Show a => AbsJava.Assignment_op' a -> Result transAssignment_op x = case x of AbsJava.Assign _ -> failure x AbsJava.AssignAdd _ -> failure x AbsJava.AssignAnd _ -> failure x AbsJava.AssignDiv _ -> failure x AbsJava.AssignLeft _ -> failure x AbsJava.AssignMod _ -> failure x AbsJava.AssignMul _ -> failure x AbsJava.AssignOr _ -> failure x AbsJava.AssignRight _ -> failure x AbsJava.AssignSub _ -> failure x AbsJava.AssignTrip _ -> failure x AbsJava.AssignXor _ -> failure x transSemi :: Show a => AbsJava.Semi' a -> Result transSemi x = case x of AbsJava.Sem1 _ -> failure x