Copyright | (c) Kimiyuki Onaka 2020 |
---|---|
License | Apache License 2.0 |
Maintainer | kimiyuki95@gmail.com |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Expr
module has the basic data types for C++ language.
The data types are intended to use for the code generation.
Documentation
TyAuto | auto |
TyVoid | void |
TyBool | bool |
TyInt | int |
TyInt32 | int32_t |
TyInt64 | int64_t |
TyTuple [Type] | std::tuple<T1, T2, ...> |
TyVector Type | std::vector<T> |
TyArray Type Integer | std::arrya<T, n> |
TyString | std::string |
TyFunction Type [Type] | std::function<Tr (T1, T2, ...)> |
TyConvexHullTrick | jikka::convex_hull_trick |
TySegmentTree Monoid' | atcoder::segtree<T, op, e> |
TyIntValue Integer | an integer |
MonoidIntPlus | \((\mathbb{Z}, +, 0)\) |
MonoidIntMin | \((\mathrm{int64\_t}, \min, \mathrm{INT64\_MAX})\) |
MonoidIntMax | \((\mathrm{int64\_t}, \max, \mathrm{INT64\_MIN})\) |
MonoidIntGcd | \((\mathbb{Z}, \gcd, 0)\) |
MonoidIntLcm | \((\mathbb{Z}, \mathrm{lcm}, 1)\) |
Function FunName [Type] | other functions |
Method FunName | other methods |
At | subscription |
SetAt Type | updated array |
Cast Type | cast |
StdTuple [Type] | functio |
StdGet Integer | function |
ArrayExt Type | std::array<T, n>{e1, e2, ..., en} |
VecExt Type | std::vector<T>{e1, e2, ...} |
VecCtor Type | constructors |
Range | function |
MethodSize |
|
ConvexHullTrickCtor | the constructor of |
ConvexHullTrickCopyAddLine | This makes a copy of |
SegmentTreeCtor Monoid' | the constructors of |
SegmentTreeCopySetPoint Monoid' | This makes a copy of |
Add | + |
Sub | - |
Mul | * |
Div | / |
Mod | % |
BitAnd | & |
BitOr | | |
BitXor | ^ |
BitLeftShift | << |
BitRightShift | >> |
And |
|
Or |
|
LessThan | < |
LessEqual | <= |
GreaterThan | > |
GreaterEqual | >= |
Equal | == |
NotEqual | != |
SimpleAssign | = |
AddAssign | += |
SubAssign | -= |
MulAssign | *= |
DivAssign | /= |
ModAssign | %= |
BitLeftShiftAssign | <<= |
BitRightShiftAssign | >>= |
BitAndAssign | &= |
BitOrAssign | |= |
BitXorAssign | ^= |
Var VarName | |
Lit Literal | |
UnOp UnaryOp Expr | |
BinOp BinaryOp Expr Expr | |
Cond Expr Expr Expr | e1 ? e2 : e3 |
Lam [(Type, VarName)] Type [Statement] | lambda expression |
Call Function [Expr] |
|
CallExpr Expr [Expr] |
|
data AssignExpr Source #
AssignExpr AssignOp LeftExpr Expr | e1 = e2 |
AssignIncr LeftExpr | ++ e |
AssignDecr LeftExpr | -- e |
Instances
Eq AssignExpr Source # | |
Defined in Jikka.CPlusPlus.Language.Expr (==) :: AssignExpr -> AssignExpr -> Bool # (/=) :: AssignExpr -> AssignExpr -> Bool # | |
Ord AssignExpr Source # | |
Defined in Jikka.CPlusPlus.Language.Expr compare :: AssignExpr -> AssignExpr -> Ordering # (<) :: AssignExpr -> AssignExpr -> Bool # (<=) :: AssignExpr -> AssignExpr -> Bool # (>) :: AssignExpr -> AssignExpr -> Bool # (>=) :: AssignExpr -> AssignExpr -> Bool # max :: AssignExpr -> AssignExpr -> AssignExpr # min :: AssignExpr -> AssignExpr -> AssignExpr # | |
Read AssignExpr Source # | |
Defined in Jikka.CPlusPlus.Language.Expr readsPrec :: Int -> ReadS AssignExpr # readList :: ReadS [AssignExpr] # readPrec :: ReadPrec AssignExpr # readListPrec :: ReadPrec [AssignExpr] # | |
Show AssignExpr Source # | |
Defined in Jikka.CPlusPlus.Language.Expr showsPrec :: Int -> AssignExpr -> ShowS # show :: AssignExpr -> String # showList :: [AssignExpr] -> ShowS # |
data DeclareRight Source #
DeclareDefault | T x; |
DeclareCopy Expr | T x = e; |
DeclareInitialize [Expr] |
|
Instances
Eq DeclareRight Source # | |
Defined in Jikka.CPlusPlus.Language.Expr (==) :: DeclareRight -> DeclareRight -> Bool # (/=) :: DeclareRight -> DeclareRight -> Bool # | |
Ord DeclareRight Source # | |
Defined in Jikka.CPlusPlus.Language.Expr compare :: DeclareRight -> DeclareRight -> Ordering # (<) :: DeclareRight -> DeclareRight -> Bool # (<=) :: DeclareRight -> DeclareRight -> Bool # (>) :: DeclareRight -> DeclareRight -> Bool # (>=) :: DeclareRight -> DeclareRight -> Bool # max :: DeclareRight -> DeclareRight -> DeclareRight # min :: DeclareRight -> DeclareRight -> DeclareRight # | |
Read DeclareRight Source # | |
Defined in Jikka.CPlusPlus.Language.Expr readsPrec :: Int -> ReadS DeclareRight # readList :: ReadS [DeclareRight] # | |
Show DeclareRight Source # | |
Defined in Jikka.CPlusPlus.Language.Expr showsPrec :: Int -> DeclareRight -> ShowS # show :: DeclareRight -> String # showList :: [DeclareRight] -> ShowS # |
ExprStatement Expr | e; |
Block [Statement] | { stmt1; stmts2; ...; } |
If Expr [Statement] (Maybe [Statement]) |
|
For Type VarName Expr Expr AssignExpr [Statement] | for (T x = e1; e2; e3) { stmt1; stmts2; ...; } |
ForEach Type VarName Expr [Statement] | for (T x : e) { stmt1; stmts2; ...; } |
While Expr [Statement] | while (e) { stmt1; stmts2; ...; } |
Declare Type VarName DeclareRight | Declarations with/witout initializations. See |
DeclareDestructure [VarName] Expr | auto [x1, x2, ...] = e; |
Assign AssignExpr | e1 op= e2; |
Assert Expr | assert (e); |
Return Expr | return e; |
data ToplevelStatement Source #
VarDef Type VarName Expr | const T x = e; |
FunDef Type VarName [(Type, VarName)] [Statement] | T f(T1 x1, T2 x2, ...) { stmt1; stmt2; ... } |
StaticAssert Expr String | static_assert(e, msg); |
Instances
Eq ToplevelStatement Source # | |
Defined in Jikka.CPlusPlus.Language.Expr (==) :: ToplevelStatement -> ToplevelStatement -> Bool # (/=) :: ToplevelStatement -> ToplevelStatement -> Bool # | |
Ord ToplevelStatement Source # | |
Defined in Jikka.CPlusPlus.Language.Expr compare :: ToplevelStatement -> ToplevelStatement -> Ordering # (<) :: ToplevelStatement -> ToplevelStatement -> Bool # (<=) :: ToplevelStatement -> ToplevelStatement -> Bool # (>) :: ToplevelStatement -> ToplevelStatement -> Bool # (>=) :: ToplevelStatement -> ToplevelStatement -> Bool # max :: ToplevelStatement -> ToplevelStatement -> ToplevelStatement # min :: ToplevelStatement -> ToplevelStatement -> ToplevelStatement # | |
Read ToplevelStatement Source # | |
Defined in Jikka.CPlusPlus.Language.Expr | |
Show ToplevelStatement Source # | |
Defined in Jikka.CPlusPlus.Language.Expr showsPrec :: Int -> ToplevelStatement -> ShowS # show :: ToplevelStatement -> String # showList :: [ToplevelStatement] -> ShowS # |