?prevdifflink? - Blame
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)
|