pub enum ExprKind {
Show 33 variants
Ident(InternedStr),
IntLit(i64),
UIntLit(u64),
FloatLit(f64),
CharLit(u8),
StringLit(Vec<u8>),
Index {
expr: Box<Expr>,
index: Box<Expr>,
},
Call {
func: Box<Expr>,
args: Vec<Expr>,
},
Member {
expr: Box<Expr>,
member: InternedStr,
},
PtrMember {
expr: Box<Expr>,
member: InternedStr,
},
PostInc(Box<Expr>),
PostDec(Box<Expr>),
CompoundLit {
type_name: Box<TypeName>,
init: Vec<InitializerItem>,
},
PreInc(Box<Expr>),
PreDec(Box<Expr>),
AddrOf(Box<Expr>),
Deref(Box<Expr>),
UnaryPlus(Box<Expr>),
UnaryMinus(Box<Expr>),
BitNot(Box<Expr>),
LogNot(Box<Expr>),
Sizeof(Box<Expr>),
SizeofType(Box<TypeName>),
Alignof(Box<TypeName>),
Cast {
type_name: Box<TypeName>,
expr: Box<Expr>,
},
Binary {
op: BinOp,
lhs: Box<Expr>,
rhs: Box<Expr>,
},
Conditional {
cond: Box<Expr>,
then_expr: Box<Expr>,
else_expr: Box<Expr>,
},
Assign {
op: AssignOp,
lhs: Box<Expr>,
rhs: Box<Expr>,
},
Comma {
lhs: Box<Expr>,
rhs: Box<Expr>,
},
StmtExpr(CompoundStmt),
Assert {
kind: AssertKind,
condition: Box<Expr>,
},
MacroCall {
name: InternedStr,
args: Vec<Expr>,
expanded: Box<Expr>,
call_loc: SourceLocation,
},
BuiltinCall {
name: InternedStr,
args: Vec<BuiltinArg>,
},
}Expand description
式の種類
Variants§
Ident(InternedStr)
IntLit(i64)
UIntLit(u64)
FloatLit(f64)
CharLit(u8)
StringLit(Vec<u8>)
Index
Call
Member
PtrMember
PostInc(Box<Expr>)
PostDec(Box<Expr>)
CompoundLit
PreInc(Box<Expr>)
PreDec(Box<Expr>)
AddrOf(Box<Expr>)
Deref(Box<Expr>)
UnaryPlus(Box<Expr>)
UnaryMinus(Box<Expr>)
BitNot(Box<Expr>)
LogNot(Box<Expr>)
Sizeof(Box<Expr>)
SizeofType(Box<TypeName>)
Alignof(Box<TypeName>)
Cast
Binary
Conditional
Assign
Comma
StmtExpr(CompoundStmt)
Assert
アサーション式(マクロが空に展開されても保持)
MacroCall
マクロ呼び出し(元の呼び出し情報と展開結果を両方保持)
全てのマクロを常に展開しながら、元のマクロ呼び出し情報を AST に保持する。
expanded: 型推論・意味解析用の展開結果nameとargs: コード生成時にマクロ呼び出しを再構築
BuiltinCall
ビルトイン関数呼び出し(引数に型名を含みうる)
offsetof(type, member), __builtin_types_compatible_p(type1, type2) 等、
引数に型名を取りうるビルトイン関数をパースするための汎用ノード。
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ExprKind
impl RefUnwindSafe for ExprKind
impl Send for ExprKind
impl Sync for ExprKind
impl Unpin for ExprKind
impl UnsafeUnpin for ExprKind
impl UnwindSafe for ExprKind
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more