19 #ifndef TVM_SCRIPT_PRINTER_DOC_H_
20 #define TVM_SCRIPT_PRINTER_DOC_H_
22 #include <tvm/ffi/reflection/access_path.h>
23 #include <tvm/ffi/reflection/registry.h>
69 namespace refl = tvm::ffi::reflection;
86 class Doc :
public ffi::ObjectRef {
89 explicit Doc(ffi::ObjectPtr<DocNode> data) : ffi::ObjectRef(data) {}
129 ffi::Array<ffi::String> kwargs_keys,
130 ffi::Array<ExprDoc, void> kwargs_values)
const;
133 namespace refl = tvm::ffi::reflection;
134 refl::ObjectDef<ExprDocNode>();
155 explicit ExprDoc(ffi::ObjectPtr<ExprDocNode> data) :
Doc(data) {
156 TVM_FFI_ICHECK(data !=
nullptr);
177 mutable ffi::Optional<ffi::String>
comment{std::nullopt};
180 namespace refl = tvm::ffi::reflection;
211 namespace refl = tvm::ffi::reflection;
250 namespace refl = tvm::ffi::reflection;
263 explicit LiteralDoc(ffi::Any value,
const ffi::Optional<AccessPath>& object_path);
302 static LiteralDoc Str(
const ffi::String& v,
const ffi::Optional<AccessPath>& p) {
311 std::string dtype = v.
is_void() ?
"void" : ffi::DLDataTypeToString(v);
320 std::ostringstream os;
339 namespace refl = tvm::ffi::reflection;
374 namespace refl = tvm::ffi::reflection;
375 refl::ObjectDef<AttrAccessDocNode>()
417 namespace refl = tvm::ffi::reflection;
418 refl::ObjectDef<IndexDocNode>()
463 namespace refl = tvm::ffi::reflection;
464 refl::ObjectDef<CallDocNode>()
487 CallDoc(
ExprDoc callee, ffi::Array<ExprDoc> args, ffi::Array<ffi::String> kwargs_keys,
488 ffi::Array<ExprDoc> kwargs_values);
547 namespace refl = tvm::ffi::reflection;
548 refl::ObjectDef<OperationDocNode>()
587 namespace refl = tvm::ffi::reflection;
588 refl::ObjectDef<LambdaDocNode>()
622 namespace refl = tvm::ffi::reflection;
658 namespace refl = tvm::ffi::reflection;
679 explicit ListDoc(ffi::Array<ExprDoc> elements);
701 namespace refl = tvm::ffi::reflection;
702 refl::ObjectDef<DictDocNode>()
725 explicit DictDoc(ffi::Array<ExprDoc> keys, ffi::Array<ExprDoc> values);
746 namespace refl = tvm::ffi::reflection;
747 refl::ObjectDef<SliceDocNode>()
768 explicit SliceDoc(ffi::Optional<ExprDoc> start, ffi::Optional<ExprDoc> stop,
769 ffi::Optional<ExprDoc> step);
787 ffi::Optional<ExprDoc>
rhs;
792 namespace refl = tvm::ffi::reflection;
793 refl::ObjectDef<AssignDocNode>()
814 explicit AssignDoc(
ExprDoc lhs, ffi::Optional<ExprDoc> rhs, ffi::Optional<ExprDoc> annotation);
833 namespace refl = tvm::ffi::reflection;
834 refl::ObjectDef<IfDocNode>()
856 ffi::Array<StmtDoc> else_branch);
873 namespace refl = tvm::ffi::reflection;
874 refl::ObjectDef<WhileDocNode>()
905 namespace refl = tvm::ffi::reflection;
906 refl::ObjectDef<BreakDocNode>();
934 namespace refl = tvm::ffi::reflection;
935 refl::ObjectDef<ContinueDocNode>();
974 namespace refl = tvm::ffi::reflection;
975 refl::ObjectDef<ForDocNode>()
1013 ffi::Optional<ExprDoc>
lhs{std::nullopt};
1020 namespace refl = tvm::ffi::reflection;
1021 refl::ObjectDef<ScopeDocNode>()
1065 namespace refl = tvm::ffi::reflection;
1096 ffi::Optional<ExprDoc>
msg{std::nullopt};
1099 namespace refl = tvm::ffi::reflection;
1100 refl::ObjectDef<AssertDocNode>()
1134 namespace refl = tvm::ffi::reflection;
1180 namespace refl = tvm::ffi::reflection;
1181 refl::ObjectDef<FunctionDocNode>()
1207 ffi::Optional<ExprDoc> return_type, ffi::Array<StmtDoc> body);
1226 namespace refl = tvm::ffi::reflection;
1227 refl::ObjectDef<ClassDocNode>()
1248 explicit ClassDoc(
IdDoc name, ffi::Array<ExprDoc> decorators, ffi::Array<StmtDoc> body);
1260 namespace refl = tvm::ffi::reflection;
1261 refl::ObjectDef<CommentDocNode>();
1285 namespace refl = tvm::ffi::reflection;
1286 refl::ObjectDef<DocStringDocNode>();
1321 namespace refl = tvm::ffi::reflection;
1322 refl::ObjectDef<OpCallDocNode>()
1349 ffi::Optional<DictDoc> config, ffi::Optional<ExprDoc> dispatch = std::nullopt);
Managed reference class to FloatImmNode.
Definition: expr.h:546
Managed reference class to IntImmNode.
Definition: expr.h:511
Runtime primitive data type.
Definition: data_type.h:45
static DataType Float(int bits, int lanes=1)
Construct an float type.
Definition: data_type.h:293
static DataType Bool(int lanes=1, bool is_scalable=false)
Construct a bool type.
Definition: data_type.h:385
static DataType Int(int bits, int lanes=1)
Construct an int type.
Definition: data_type.h:276
bool is_void() const
Definition: data_type.h:211
Doc that represents assert statement.
Definition: doc.h:1091
ffi::Optional< ExprDoc > msg
The optional error message when assertion failed.
Definition: doc.h:1096
static void RegisterReflection()
Definition: doc.h:1098
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.AssertDoc", AssertDocNode, StmtDocNode)
ExprDoc test
The expression to test.
Definition: doc.h:1094
Reference type of AssertDocNode.
Definition: doc.h:1112
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(AssertDoc, StmtDoc, AssertDocNode)
AssertDoc(ExprDoc test, ffi::Optional< ExprDoc > msg=std::nullopt)
Constructor of AssertDoc.
Doc that represents assign statement.
Definition: doc.h:778
ffi::Optional< ExprDoc > annotation
The type annotation of this assignment.
Definition: doc.h:789
ffi::Optional< ExprDoc > rhs
The right hand side of the assignment.
Definition: doc.h:787
ExprDoc lhs
The left hand side of the assignment.
Definition: doc.h:781
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.AssignDoc", AssignDocNode, StmtDocNode)
static void RegisterReflection()
Definition: doc.h:791
Reference type of AssignDocNode.
Definition: doc.h:806
AssignDoc(ExprDoc lhs, ffi::Optional< ExprDoc > rhs, ffi::Optional< ExprDoc > annotation)
Constructor of AssignDoc.
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(AssignDoc, StmtDoc, AssignDocNode)
Doc that represents attribute access on another expression.
Definition: doc.h:366
ffi::String name
The attribute to be accessed.
Definition: doc.h:371
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.AttrAccessDoc", AttrAccessDocNode, ExprDocNode)
ExprDoc value
The target expression to be accessed.
Definition: doc.h:369
static void RegisterReflection()
Definition: doc.h:373
Reference type of AttrAccessDocNode.
Definition: doc.h:387
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(AttrAccessDoc, ExprDoc, AttrAccessDocNode)
AttrAccessDoc(ExprDoc value, ffi::String name)
Constructor of AttrAccessDoc.
Doc that represents break statement.
Definition: doc.h:902
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.BreakDoc", BreakDocNode, StmtDocNode)
static void RegisterReflection()
Definition: doc.h:904
Reference type of BreakDocNode.
Definition: doc.h:917
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(BreakDoc, StmtDoc, BreakDocNode)
BreakDoc()
Constructor of BreakDoc.
Doc that represents function call.
Definition: doc.h:446
ffi::Array< ffi::String > kwargs_keys
The keys of keyword arguments.
Definition: doc.h:453
ffi::Array< ExprDoc > kwargs_values
The values of keyword arguments.
Definition: doc.h:460
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.CallDoc", CallDocNode, ExprDocNode)
static void RegisterReflection()
Definition: doc.h:462
ffi::Array< ExprDoc > args
The positional arguments.
Definition: doc.h:451
ExprDoc callee
The callee of this function call.
Definition: doc.h:449
Reference type of CallDocNode.
Definition: doc.h:478
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(CallDoc, ExprDoc, CallDocNode)
CallDoc(ExprDoc callee, ffi::Array< ExprDoc > args, ffi::Array< ffi::String > kwargs_keys, ffi::Array< ExprDoc > kwargs_values)
Constructor of CallDoc.
Doc that represents class definition.
Definition: doc.h:1216
ffi::Array< ExprDoc > decorators
Decorators of class.
Definition: doc.h:1221
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.ClassDoc", ClassDocNode, StmtDocNode)
static void RegisterReflection()
Definition: doc.h:1225
IdDoc name
The name of class.
Definition: doc.h:1219
ffi::Array< StmtDoc > body
The body of class.
Definition: doc.h:1223
Reference type of ClassDocNode.
Definition: doc.h:1240
ClassDoc(IdDoc name, ffi::Array< ExprDoc > decorators, ffi::Array< StmtDoc > body)
Constructor of ClassDoc.
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(ClassDoc, StmtDoc, ClassDocNode)
Doc that represents continue statement.
Definition: doc.h:931
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.ContinueDoc", ContinueDocNode, StmtDocNode)
static void RegisterReflection()
Definition: doc.h:933
Reference type of ContinueDocNode.
Definition: doc.h:946
ContinueDoc()
Constructor of ContinueDoc.
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(ContinueDoc, StmtDoc, ContinueDocNode)
Doc that represents dictionary literal.
Definition: doc.h:688
ffi::Array< ExprDoc > keys
keys of dictionary
Definition: doc.h:691
static void RegisterReflection()
Definition: doc.h:700
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.DictDoc", DictDocNode, ExprDocNode)
ffi::Array< ExprDoc > values
Values of dictionary.
Definition: doc.h:698
Reference type of DictDocNode.
Definition: doc.h:714
DictDoc(ffi::Array< ExprDoc > keys, ffi::Array< ExprDoc > values)
Constructor of DictDoc.
DictDoc()
Create an empty dictionary.
Definition: doc.h:719
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(DictDoc, ExprDoc, DictDocNode)
The base class of all Doc.
Definition: doc.h:57
static constexpr bool _type_mutable
Definition: doc.h:73
virtual ~DocNode()=default
TVM_FFI_DECLARE_OBJECT_INFO("script.printer.Doc", DocNode, ffi::Object)
static void RegisterReflection()
Definition: doc.h:68
ffi::Array< AccessPath > source_paths
The list of object paths of the source IR node.
Definition: doc.h:66
Doc that represents docstring.
Definition: doc.h:1282
static void RegisterReflection()
Definition: doc.h:1284
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.DocStringDoc", DocStringDocNode, StmtDocNode)
Reference type of DocStringDocNode.
Definition: doc.h:1296
DocStringDoc(ffi::String docs)
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(DocStringDoc, StmtDoc, DocStringDocNode)
Reference type of DocNode.
Definition: doc.h:86
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(Doc, ffi::ObjectRef, DocNode)
Doc(ffi::ObjectPtr< DocNode > data)
Definition: doc.h:89
The base class of expression doc.
Definition: doc.h:102
ExprDoc Attr(ffi::String attr) const
Create a doc representing attribute access on the current ExprDoc.
static void RegisterReflection()
Definition: doc.h:132
TVM_FFI_DECLARE_OBJECT_INFO("script.printer.ExprDoc", ExprDocNode, DocNode)
ExprDoc Call(ffi::Array< ExprDoc, void > args) const
Create a doc representing calling the current ExprDoc.
ExprDoc operator[](ffi::Array< Doc > indices) const
Create a doc representing index access on the current ExprDoc.
ExprDoc Call(ffi::Array< ExprDoc, void > args, ffi::Array< ffi::String > kwargs_keys, ffi::Array< ExprDoc, void > kwargs_values) const
Create a doc representing attribute access on the current ExprDoc.
Reference type of ExprDocNode.
Definition: doc.h:144
ExprDoc(ffi::ObjectPtr< ExprDocNode > data)
Definition: doc.h:155
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(ExprDoc, Doc, ExprDocNode)
ExprDoc operator[](ffi::Array< Doc > indices) const
Create a doc representing index access on the current ExprDoc.
Doc that represents an expression as statement.
Definition: doc.h:1059
static void RegisterReflection()
Definition: doc.h:1064
ExprDoc expr
The expression represented by this doc.
Definition: doc.h:1062
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.ExprStmtDoc", ExprStmtDocNode, StmtDocNode)
Reference type of ExprStmtDocNode.
Definition: doc.h:1076
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(ExprStmtDoc, StmtDoc, ExprStmtDocNode)
ExprStmtDoc(ExprDoc expr)
Constructor of ExprStmtDoc.
Doc that represents for statement.
Definition: doc.h:964
ffi::Array< StmtDoc > body
The body of the for statement.
Definition: doc.h:971
ExprDoc lhs
The left hand side of the assignment of iterating variable.
Definition: doc.h:967
static void RegisterReflection()
Definition: doc.h:973
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.ForDoc", ForDocNode, StmtDocNode)
ExprDoc rhs
The right hand side of the assignment of iterating variable.
Definition: doc.h:969
Reference type of ForDocNode.
Definition: doc.h:988
ForDoc(ExprDoc lhs, ExprDoc rhs, ffi::Array< StmtDoc > body)
Constructor of ForDoc.
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(ForDoc, StmtDoc, ForDocNode)
Doc that represents function definition.
Definition: doc.h:1160
ffi::Array< AssignDoc > args
The arguments of function.
Definition: doc.h:1171
ffi::Array< StmtDoc > body
The body of function.
Definition: doc.h:1177
IdDoc name
The name of function.
Definition: doc.h:1163
static void RegisterReflection()
Definition: doc.h:1179
ffi::Array< ExprDoc > decorators
Decorators of function.
Definition: doc.h:1173
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.FunctionDoc", FunctionDocNode, StmtDocNode)
ffi::Optional< ExprDoc > return_type
The return type of function.
Definition: doc.h:1175
Reference type of FunctionDocNode.
Definition: doc.h:1196
FunctionDoc(IdDoc name, ffi::Array< AssignDoc > args, ffi::Array< ExprDoc > decorators, ffi::Optional< ExprDoc > return_type, ffi::Array< StmtDoc > body)
Constructor of FunctionDoc.
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(FunctionDoc, StmtDoc, FunctionDocNode)
Doc that represents identifier.
Definition: doc.h:333
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.IdDoc", IdDocNode, ExprDocNode)
ffi::String name
The name of the identifier.
Definition: doc.h:336
static void RegisterReflection()
Definition: doc.h:338
Reference type of IdDocNode.
Definition: doc.h:350
IdDoc(std::nullptr_t)
Definition: doc.h:357
IdDoc(ffi::String name)
Constructor of IdDoc.
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(IdDoc, ExprDoc, IdDocNode)
Doc that represent if-then-else statement.
Definition: doc.h:823
static void RegisterReflection()
Definition: doc.h:832
ffi::Array< StmtDoc > else_branch
The else branch of the if-then-else statement.
Definition: doc.h:830
ffi::Array< StmtDoc > then_branch
The then branch of the if-then-else statement.
Definition: doc.h:828
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.IfDoc", IfDocNode, StmtDocNode)
ExprDoc predicate
The predicate of the if-then-else statement.
Definition: doc.h:826
Reference type of IfDocNode.
Definition: doc.h:847
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(IfDoc, StmtDoc, IfDocNode)
IfDoc(ExprDoc predicate, ffi::Array< StmtDoc > then_branch, ffi::Array< StmtDoc > else_branch)
Constructor of IfDoc.
Doc that represents index access on another expression.
Definition: doc.h:403
static void RegisterReflection()
Definition: doc.h:416
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.IndexDoc", IndexDocNode, ExprDocNode)
ffi::Array< Doc > indices
The indices to access.
Definition: doc.h:414
ExprDoc value
The container value to be accessed.
Definition: doc.h:406
Reference type of IndexDocNode.
Definition: doc.h:430
IndexDoc(ExprDoc value, ffi::Array< Doc > indices)
Constructor of IndexDoc.
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(IndexDoc, ExprDoc, IndexDocNode)
Doc that represents anonymous function.
Definition: doc.h:579
static void RegisterReflection()
Definition: doc.h:586
ExprDoc body
The body of this anonymous function.
Definition: doc.h:584
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.LambdaDoc", LambdaDocNode, ExprDocNode)
ffi::Array< IdDoc > args
The arguments of this anonymous function.
Definition: doc.h:582
Reference type of LambdaDocNode.
Definition: doc.h:600
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(LambdaDoc, ExprDoc, LambdaDocNode)
LambdaDoc(ffi::Array< IdDoc > args, ExprDoc body)
Constructor of LambdaDoc.
Doc that represents list literal.
Definition: doc.h:652
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.ListDoc", ListDocNode, ExprDocNode)
ffi::Array< ExprDoc > elements
Elements of list.
Definition: doc.h:655
static void RegisterReflection()
Definition: doc.h:657
Reference type of ListDocNode.
Definition: doc.h:669
ListDoc()
Create an empty ListDoc.
Definition: doc.h:674
ListDoc(ffi::Array< ExprDoc > elements)
Constructor of ListDoc.
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(ListDoc, ExprDoc, ListDocNode)
Doc that represents literal value.
Definition: doc.h:236
ffi::Any value
the internal representation of the literal value.
Definition: doc.h:247
static void RegisterReflection()
Definition: doc.h:249
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.LiteralDoc", LiteralDocNode, ExprDocNode)
Reference type of LiteralDocNode.
Definition: doc.h:261
LiteralDoc(ffi::Any value, const ffi::Optional< AccessPath > &object_path)
static LiteralDoc Boolean(bool v, const ffi::Optional< AccessPath > &p)
Create a LiteralDoc to represent boolean.
Definition: doc.h:286
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(LiteralDoc, ExprDoc, LiteralDocNode)
static LiteralDoc DataType(const runtime::DataType &v, const ffi::Optional< AccessPath > &p)
Create a LiteralDoc to represent string.
Definition: doc.h:310
static LiteralDoc Device(const DLDevice &v, const ffi::Optional< AccessPath > &p)
Create a LiteralDoc to represent device.
Definition: doc.h:319
static LiteralDoc Int(int64_t v, const ffi::Optional< AccessPath > &p)
Create a LiteralDoc to represent integer.
Definition: doc.h:278
static LiteralDoc Float(double v, const ffi::Optional< AccessPath > &p)
Create a LiteralDoc to represent float.
Definition: doc.h:294
static LiteralDoc None(const ffi::Optional< AccessPath > &p)
Create a LiteralDoc to represent None/null/empty value.
Definition: doc.h:270
static LiteralDoc Str(const ffi::String &v, const ffi::Optional< AccessPath > &p)
Create a LiteralDoc to represent string.
Definition: doc.h:302
Doc that represents call to an TIRX operator.
Definition: doc.h:1307
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.OpCallDoc", OpCallDocNode, StmtDocNode)
ffi::Optional< ExprDoc > dispatch
The optional dispatch variant of this op call.
Definition: doc.h:1318
ffi::Array< Doc > args
The positional arguments.
Definition: doc.h:1312
static void RegisterReflection()
Definition: doc.h:1320
ffi::Optional< DictDoc > config
The config of this op call.
Definition: doc.h:1316
ffi::Optional< DictDoc > workspace
The workspace of this op call.
Definition: doc.h:1314
ExprDoc callee
The callee of this function call.
Definition: doc.h:1310
Reference type of OpCallDocNode.
Definition: doc.h:1338
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(OpCallDoc, StmtDoc, OpCallDocNode)
OpCallDoc(ExprDoc callee, ffi::Array< Doc > args, ffi::Optional< DictDoc > workspace, ffi::Optional< DictDoc > config, ffi::Optional< ExprDoc > dispatch=std::nullopt)
Constructor of OpCallDoc.
Doc that represents operation.
Definition: doc.h:500
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.OperationDoc", OperationDocNode, ExprDocNode)
ffi::Array< ExprDoc > operands
Operands of this expression.
Definition: doc.h:544
Kind kind
The kind of operation (operator)
Definition: doc.h:542
Kind
Definition: doc.h:502
static void RegisterReflection()
Definition: doc.h:546
Reference type of OperationDocNode.
Definition: doc.h:560
OperationDoc(OperationDocNode::Kind kind, ffi::Array< ExprDoc > operands)
Constructor of OperationDoc.
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(OperationDoc, ExprDoc, OperationDocNode)
Doc that represents return statement.
Definition: doc.h:1128
ExprDoc value
The value to return.
Definition: doc.h:1131
static void RegisterReflection()
Definition: doc.h:1133
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.ReturnDoc", ReturnDocNode, StmtDocNode)
Reference type of ReturnDocNode.
Definition: doc.h:1145
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(ReturnDoc, StmtDoc, ReturnDocNode)
ReturnDoc(ExprDoc value)
Constructor of ReturnDoc.
Doc that represents special scopes.
Definition: doc.h:1010
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.ScopeDoc", ScopeDocNode, StmtDocNode)
ffi::Optional< ExprDoc > lhs
The name of the scoped variable.
Definition: doc.h:1013
ExprDoc rhs
The value of the scoped variable.
Definition: doc.h:1015
static void RegisterReflection()
Definition: doc.h:1019
ffi::Array< StmtDoc > body
The body of the scope doc.
Definition: doc.h:1017
Reference type of ScopeDocNode.
Definition: doc.h:1034
ScopeDoc(ffi::Optional< ExprDoc > lhs, ExprDoc rhs, ffi::Array< StmtDoc > body)
Constructor of ScopeDoc.
ScopeDoc(ExprDoc rhs, ffi::Array< StmtDoc > body)
Constructor of ScopeDoc.
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(ScopeDoc, StmtDoc, ScopeDocNode)
Doc that represents slice in Index expression.
Definition: doc.h:736
ffi::Optional< ExprDoc > start
The start of slice.
Definition: doc.h:739
ffi::Optional< ExprDoc > step
The step of slice.
Definition: doc.h:743
ffi::Optional< ExprDoc > stop
The exclusive end of slice.
Definition: doc.h:741
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.SliceDoc", SliceDocNode, DocNode)
static void RegisterReflection()
Definition: doc.h:745
Reference type of SliceDocNode.
Definition: doc.h:760
SliceDoc(ffi::Optional< ExprDoc > start, ffi::Optional< ExprDoc > stop, ffi::Optional< ExprDoc > step)
Constructor of SliceDoc.
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(SliceDoc, Doc, SliceDocNode)
The container doc that holds a list of StmtDoc.
Definition: doc.h:205
static void RegisterReflection()
Definition: doc.h:210
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.StmtBlockDoc", StmtBlockDocNode, DocNode)
ffi::Array< StmtDoc > stmts
The list of statements.
Definition: doc.h:208
Reference type of StmtBlockDocNode.
Definition: doc.h:221
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(StmtBlockDoc, Doc, StmtBlockDocNode)
StmtBlockDoc(ffi::Array< StmtDoc > stmts)
Constructor of StmtBlockDoc.
The base class of statement doc.
Definition: doc.h:167
ffi::Optional< ffi::String > comment
The comment of this doc.
Definition: doc.h:177
static void RegisterReflection()
Definition: doc.h:179
TVM_FFI_DECLARE_OBJECT_INFO("script.printer.StmtDoc", StmtDocNode, DocNode)
Reference type of StmtDocNode.
Definition: doc.h:191
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(StmtDoc, Doc, StmtDocNode)
Doc that represents tuple literal.
Definition: doc.h:616
ffi::Array< ExprDoc > elements
Elements of tuple.
Definition: doc.h:619
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.TupleDoc", TupleDocNode, ExprDocNode)
static void RegisterReflection()
Definition: doc.h:621
Reference type of TupleDocNode.
Definition: doc.h:633
TupleDoc(ffi::Array< ExprDoc > elements)
Constructor of TupleDoc.
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(TupleDoc, ExprDoc, TupleDocNode)
TupleDoc()
Create an empty TupleDoc.
Definition: doc.h:638
Doc that represents while statement.
Definition: doc.h:865
static void RegisterReflection()
Definition: doc.h:872
ffi::Array< StmtDoc > body
The body of the while statement.
Definition: doc.h:870
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("script.printer.WhileDoc", WhileDocNode, StmtDocNode)
ExprDoc predicate
The predicate of the while statement.
Definition: doc.h:868
Reference type of WhileDocNode.
Definition: doc.h:886
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(WhileDoc, StmtDoc, WhileDocNode)
WhileDoc(ExprDoc predicate, ffi::Array< StmtDoc > body)
Constructor of WhileDoc.
Abstract device memory management API.
std::ostream & operator<<(std::ostream &os, const DataType &dtype)
Definition: data_type.h:452
ffi::String DocToPythonScript(Doc doc, const PrinterConfig &cfg)
Convert Doc into Python script.
ffi::reflection::AccessPath AccessPath
Definition: doc.h:34
An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.
Definition: analyzer.h:37