| Copyright | (c) Kimiyuki Onaka 2020 |
|---|---|
| License | Apache License 2.0 |
| Maintainer | kimiyuki95@gmail.com |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Jikka.CPlusPlus.Language.Expr
Description
Expr module has the basic data types for C++ language.
The data types are intended to use for the code generation.
Documentation
Constructors
| VarName OccName NameFlavour (Maybe NameHint) |
formatVarName :: VarName -> String Source #
formatFunName :: FunName -> String Source #
Constructors
| 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 |
Constructors
| 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)\) |
Constructors
| 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 |
Constructors
| Add | + |
| Sub | - |
| Mul | * |
| Div | / |
| Mod | % |
| BitAnd | & |
| BitOr | | |
| BitXor | ^ |
| BitLeftShift | << |
| BitRightShift | >> |
| And |
|
| Or |
|
| LessThan | < |
| LessEqual | <= |
| GreaterThan | > |
| GreaterEqual | >= |
| Equal | == |
| NotEqual | != |
Constructors
| SimpleAssign | = |
| AddAssign | += |
| SubAssign | -= |
| MulAssign | *= |
| DivAssign | /= |
| ModAssign | %= |
| BitLeftShiftAssign | <<= |
| BitRightShiftAssign | >>= |
| BitAndAssign | &= |
| BitOrAssign | |= |
| BitXorAssign | ^= |
Constructors
| 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 Expr [Expr] |
|
| Callable Function |
data AssignExpr Source #
Constructors
| AssignExpr AssignOp LeftExpr Expr | e1 = e2 |
| AssignIncr LeftExpr | ++ e |
| AssignDecr LeftExpr | -- e |
Instances
| Eq AssignExpr Source # | |
Defined in Jikka.CPlusPlus.Language.Expr | |
| Ord AssignExpr Source # | |
Defined in Jikka.CPlusPlus.Language.Expr Methods 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 Methods readsPrec :: Int -> ReadS AssignExpr # readList :: ReadS [AssignExpr] # readPrec :: ReadPrec AssignExpr # readListPrec :: ReadPrec [AssignExpr] # | |
| Show AssignExpr Source # | |
Defined in Jikka.CPlusPlus.Language.Expr Methods showsPrec :: Int -> AssignExpr -> ShowS # show :: AssignExpr -> String # showList :: [AssignExpr] -> ShowS # | |
data DeclareRight Source #
Constructors
| DeclareDefault | T x; |
| DeclareCopy Expr | T x = e; |
| DeclareInitialize [Expr] |
|
Instances
| Eq DeclareRight Source # | |
Defined in Jikka.CPlusPlus.Language.Expr | |
| Ord DeclareRight Source # | |
Defined in Jikka.CPlusPlus.Language.Expr Methods 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 Methods readsPrec :: Int -> ReadS DeclareRight # readList :: ReadS [DeclareRight] # | |
| Show DeclareRight Source # | |
Defined in Jikka.CPlusPlus.Language.Expr Methods showsPrec :: Int -> DeclareRight -> ShowS # show :: DeclareRight -> String # showList :: [DeclareRight] -> ShowS # | |
Constructors
| 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; |
Instances
| Eq Statement Source # | |
| Ord Statement Source # | |
| Read Statement Source # | |
| Show Statement Source # | |
data ToplevelStatement Source #
Constructors
| VarDef Type VarName Expr | const T x = e; |
| FunDef Type FunName [(Type, VarName)] [Statement] | T f(T1 x1, T2 x2, ...) { stmt1; stmt2; ... } |
| StaticAssert Expr String | static_assert(e, msg); |