module Absjava where -- Haskell module generated by the BNF converter newtype Ident = Ident String deriving (Eq,Ord,Show) newtype Unsigned = Unsigned String deriving (Eq,Ord,Show) newtype Long = Long String deriving (Eq,Ord,Show) newtype UnsignedLong = UnsignedLong String deriving (Eq,Ord,Show) newtype Hexadecimal = Hexadecimal String deriving (Eq,Ord,Show) newtype HexUnsigned = HexUnsigned String deriving (Eq,Ord,Show) newtype HexLong = HexLong String deriving (Eq,Ord,Show) newtype HexUnsLong = HexUnsLong String deriving (Eq,Ord,Show) newtype Octal = Octal String deriving (Eq,Ord,Show) newtype OctalUnsigned = OctalUnsigned String deriving (Eq,Ord,Show) newtype OctalLong = OctalLong String deriving (Eq,Ord,Show) newtype OctalUnsLong = OctalUnsLong String deriving (Eq,Ord,Show) newtype JDouble = JDouble String deriving (Eq,Ord,Show) newtype JFloat = JFloat String deriving (Eq,Ord,Show) newtype JLongDouble = JLongDouble String deriving (Eq,Ord,Show) newtype UnicodeChar = UnicodeChar String deriving (Eq,Ord,Show) newtype JChar = JChar String deriving (Eq,Ord,Show) data ProgramFile = Prpkg [Ident] [Semi] [Import] [TypeDecl] | ProgF [Import] [TypeDecl] deriving (Eq,Ord,Show) data Import = ImportN [Ident] [Semi] | ImportA [Ident] [Semi] deriving (Eq,Ord,Show) data TypeDecl = TypeDecl ClassHeader [FieldDeclaration] deriving (Eq,Ord,Show) data ClassHeader = ClassDec [Modifier] Ident | ClassDecE [Modifier] Ident [TypeName] | ClassDecI [Modifier] Ident [TypeName] | ClassDecEI [Modifier] Ident [TypeName] [TypeName] | InterDec [Modifier] Ident | InterDecE [Modifier] Ident [TypeName] | InterDecI [Modifier] Ident [TypeName] | InterDecEI [Modifier] Ident [TypeName] [TypeName] deriving (Eq,Ord,Show) data FieldDeclaration = Dvar [Modifier] TypeSpec [VarDecl] | Dmth [Modifier] TypeSpec MethodDecl MethodBody | Dmthth [Modifier] TypeSpec MethodDecl [TypeName] MethodBody | Dconst [Modifier] Ident [Parameter] Body | Dconstt [Modifier] Ident [Parameter] [TypeName] Body | Dblk Body | Dinnerclass TypeDecl deriving (Eq,Ord,Show) data MethodBody = IBody | MBody Body deriving (Eq,Ord,Show) data LVarStatement = LVar TypeSpec [VarDecl] | LVarf TypeSpec [VarDecl] | Statem Stm deriving (Eq,Ord,Show) data Body = Body [LVarStatement] deriving (Eq,Ord,Show) data Stm = Sem | Lbl Ident | Case Exp | Dflt | Exps Exp | LV [LVarStatement] | Jmp JumpStm | Grd GuardStm | Iter IterStm | Sel SelectionStm deriving (Eq,Ord,Show) data DeclaratorName = DeclName Ident | DeclArray Ident [BracketsOpt] deriving (Eq,Ord,Show) data VarDecl = VDeclAssign DeclaratorName VariableInits | VDecl Ident deriving (Eq,Ord,Show) data VariableInits = IExp Exp | IEmpt | IArri ArrayInits deriving (Eq,Ord,Show) data ArrayInits = Vainit VariableInits | Vai ArrayInits VariableInits | Vais ArrayInits deriving (Eq,Ord,Show) data MethodDecl = Mth DeclaratorName [Parameter] | MthdArr MethodDecl BracketsOpt deriving (Eq,Ord,Show) data Parameter = Param TypeSpec DeclaratorName | Pfinal TypeSpec DeclaratorName deriving (Eq,Ord,Show) data SelectionStm = Ifone Exp Stm [Elseif] | If Exp Stm [Elseif] Stm | Switch Exp Body deriving (Eq,Ord,Show) data Elseif = Elseif Exp Stm deriving (Eq,Ord,Show) data JumpStm = Break | Brlabel Ident | Continue | Continuelabel Ident | Return | ReturnExp Exp | Throw Exp deriving (Eq,Ord,Show) data GuardStm = Synchronized Exp Body | Try Body [Catch] | Tryfinally Body [Catch] Body deriving (Eq,Ord,Show) data Catch = Catch1 TypeSpec Ident Body | Catch2 TypeSpec Body deriving (Eq,Ord,Show) data IterStm = While Exp Stm | Do Stm Exp | For ForInit [Exp] [Exp] Stm deriving (Eq,Ord,Show) data ForInit = Exprs1 [Exp] | DVar TypeSpec [VarDecl] | DVarf TypeSpec [VarDecl] deriving (Eq,Ord,Show) data Modifier = Mabstract | Mfinal | Mpublic | Mprotected | Mprivate | Mtransient | Mvolatile | Mnative | Msync | Mstatic deriving (Eq,Ord,Show) data BasicType = Tchar | Tshort | Tint | Tlong | Tfloat | Tdouble | Tbyte | Tboolean deriving (Eq,Ord,Show) data TypeSpec = ArrayType TypeName [BracketsOpt] | TypeName TypeName deriving (Eq,Ord,Show) data TypeName = BuiltIn BasicType | ClassType [Ident] deriving (Eq,Ord,Show) data BracketsOpt = BracketsOpt deriving (Eq,Ord,Show) data Exp = Eassign Exp Assignment_op Exp | Etype Exp TypeName | Econdition Exp Exp Exp | Elor Exp Exp | Eland Exp Exp | Ebitor Exp Exp | Ebitexor Exp Exp | Ebitand Exp Exp | Eeq Exp Exp | Eneq Exp Exp | Elthen Exp Exp | Egrthen Exp Exp | Ele Exp Exp | Ege Exp Exp | Eleft Exp Exp | Eright Exp Exp | Etrip Exp Exp | Eplus Exp Exp | Eminus Exp Exp | Etimes Exp Exp | Ediv Exp Exp | Emod Exp Exp | Ebcoercion BasicType Exp | Eexpcoercion Exp Exp | Earrcoercion [Ident] [BracketsOpt] Exp | Epreop Unary_operator Exp | Epreinc Exp | Epredec Exp | Epostinc Exp | Epostdec Exp | Especname SpecName | Earr ArrAcc | Emth MthCall | Efld FieldAcc | Econst Constant | Estring String | Enewalloc NewAlloc | Evar [Ident] deriving (Eq,Ord,Show) data SpecName = SSsuper | SSthis | SSnull deriving (Eq,Ord,Show) data NewAlloc = Anewclass TypeName Args | Anewinnerclass TypeName Args [FieldDeclaration] | Anewarray TypeName [DimExpr] | Anewarriempty TypeName [DimExpr] | Anewarrinits TypeName [DimExpr] ArrayInits deriving (Eq,Ord,Show) data ArrAcc = Aarr [Ident] Exp | Aarr1 SpecExp Exp deriving (Eq,Ord,Show) data SpecExp = Cep Exp | Cnp SpecExpNP | Cthis SpecName deriving (Eq,Ord,Show) data SpecExpNP = CNLit Constant | CNParr ArrAcc | CNPmth MthCall | CNPfld FieldAcc deriving (Eq,Ord,Show) data MthCall = Mmth [Ident] Args | Mmth1 SpecExpNP Args | Mmthspec SpecName Args deriving (Eq,Ord,Show) data FieldAcc = Ffvar SpecExp Ident | Ffvar1 NewAlloc Ident | Ffthis [Ident] | Fclass [Ident] | Ffclass2 BasicType deriving (Eq,Ord,Show) data Args = Args [Exp] deriving (Eq,Ord,Show) data DimExpr = DimExpr Exp deriving (Eq,Ord,Show) data Constant = Efloat Double | Echar JChar | Eunicode UnicodeChar | Eunsigned Unsigned | Elong Long | Eunsignlong UnsignedLong | Ehexadec Hexadecimal | Ehexaunsign HexUnsigned | Ehexalong HexLong | Ehexaunslong HexUnsLong | Eoctal Octal | Eoctalunsign OctalUnsigned | Eoctallong OctalLong | Eoctalunslong OctalUnsLong | Ecdouble JDouble | Ecfloat JFloat | Eclongdouble JLongDouble | Eint Integer | Etrue | Efalse | Elonger Integer | Edouble Double deriving (Eq,Ord,Show) data Unary_operator = Plus | Negative | Complement | Logicalneg deriving (Eq,Ord,Show) data Assignment_op = Assign | AssignMul | AssignDiv | AssignMod | AssignAdd | AssignSub | AssignLeft | AssignRight | AssignTrip | AssignAnd | AssignXor | AssignOr deriving (Eq,Ord,Show) data Semi = Sem1 deriving (Eq,Ord,Show) |