19 #ifndef TVM_SCRIPT_PRINTER_DOC_H_ 20 #define TVM_SCRIPT_PRINTER_DOC_H_ 66 static constexpr
const char*
_type_key =
"script.printer.Doc";
83 virtual ~
Doc() =
default;
126 static constexpr
const char*
_type_key =
"script.printer.ExprDoc";
168 v->Visit(
"comment", &comment);
171 static constexpr
const char*
_type_key =
"script.printer.StmtDoc";
201 v->Visit(
"stmts", &stmts);
204 static constexpr
const char*
_type_key =
"script.printer.StmtBlockDoc";
242 v->Visit(
"value", &value);
245 static constexpr
const char*
_type_key =
"script.printer.LiteralDoc";
321 v->Visit(
"name", &name);
324 static constexpr
const char*
_type_key =
"script.printer.IdDoc";
358 v->Visit(
"value", &value);
359 v->Visit(
"name", &name);
362 static constexpr
const char*
_type_key =
"script.printer.AttrAccessDoc";
402 v->Visit(
"value", &value);
403 v->Visit(
"indices", &indices);
406 static constexpr
const char*
_type_key =
"script.printer.IndexDoc";
449 v->Visit(
"callee", &callee);
450 v->Visit(
"args", &args);
451 v->Visit(
"kwargs_keys", &kwargs_keys);
452 v->Visit(
"kwargs_values", &kwargs_values);
455 static constexpr
const char*
_type_key =
"script.printer.CallDoc";
533 v->Visit(
"kind", &kind);
534 v->Visit(
"operands", &operands);
537 static constexpr
const char*
_type_key =
"script.printer.OperationDoc";
574 v->Visit(
"args", &args);
575 v->Visit(
"body", &body);
578 static constexpr
const char*
_type_key =
"script.printer.LambdaDoc";
610 v->Visit(
"elements", &elements);
613 static constexpr
const char*
_type_key =
"script.printer.TupleDoc";
648 v->Visit(
"elements", &elements);
651 static constexpr
const char*
_type_key =
"script.printer.ListDoc";
693 v->Visit(
"keys", &keys);
694 v->Visit(
"values", &values);
697 static constexpr
const char*
_type_key =
"script.printer.DictDoc";
739 v->Visit(
"start", &start);
740 v->Visit(
"stop", &stop);
741 v->Visit(
"step", &step);
744 static constexpr
const char*
_type_key =
"script.printer.SliceDoc";
785 v->Visit(
"lhs", &lhs);
786 v->Visit(
"rhs", &rhs);
787 v->Visit(
"annotation", &annotation);
790 static constexpr
const char*
_type_key =
"script.printer.AssignDoc";
827 v->Visit(
"predicate", &predicate);
828 v->Visit(
"then_branch", &then_branch);
829 v->Visit(
"else_branch", &else_branch);
832 static constexpr
const char*
_type_key =
"script.printer.IfDoc";
867 v->Visit(
"predicate", &predicate);
868 v->Visit(
"body", &body);
871 static constexpr
const char*
_type_key =
"script.printer.WhileDoc";
911 v->Visit(
"lhs", &lhs);
912 v->Visit(
"rhs", &rhs);
913 v->Visit(
"body", &body);
916 static constexpr
const char*
_type_key =
"script.printer.ForDoc";
958 v->Visit(
"lhs", &lhs);
959 v->Visit(
"rhs", &rhs);
960 v->Visit(
"body", &body);
963 static constexpr
const char*
_type_key =
"script.printer.ScopeDoc";
1004 v->Visit(
"expr", &expr);
1007 static constexpr
const char*
_type_key =
"script.printer.ExprStmtDoc";
1040 v->Visit(
"test", &test);
1041 v->Visit(
"msg", &msg);
1044 static constexpr
const char*
_type_key =
"script.printer.AssertDoc";
1076 v->Visit(
"value", &value);
1079 static constexpr
const char*
_type_key =
"script.printer.ReturnDoc";
1124 v->Visit(
"name", &name);
1125 v->Visit(
"args", &args);
1126 v->Visit(
"decorators", &decorators);
1127 v->Visit(
"return_type", &return_type);
1128 v->Visit(
"body", &body);
1131 static constexpr
const char*
_type_key =
"script.printer.FunctionDoc";
1171 v->Visit(
"name", &name);
1172 v->Visit(
"decorators", &decorators);
1173 v->Visit(
"body", &body);
1176 static constexpr
const char*
_type_key =
"script.printer.ClassDoc";
1204 static constexpr
const char*
_type_key =
"script.printer.CommentDoc";
1226 static constexpr
const char*
_type_key =
"script.printer.DocStringDoc";
1245 #endif // TVM_SCRIPT_PRINTER_DOC_H_ void VisitAttrs(AttrVisitor *v)
Definition: doc.h:1074
Array< IdDoc > args
The arguments of this anonymous function.
Definition: doc.h:568
static LiteralDoc Str(const String &v, const Optional< ObjectPath > &p)
Create a LiteralDoc to represent string.
Definition: doc.h:295
IdDoc(std::nullptr_t)
Definition: doc.h:340
Array< AssignDoc > args
The arguments of function.
Definition: doc.h:1114
Reference type of IfDocNode.
Definition: doc.h:841
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:166
Array< StmtDoc > body
The body of class.
Definition: doc.h:1167
Doc that represents docstring.
Definition: doc.h:1224
Doc that represents dictionary literal.
Definition: doc.h:679
Optional< ExprDoc > step
The step of slice.
Definition: doc.h:735
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:1169
Array< ExprDoc > elements
Elements of tuple.
Definition: doc.h:606
Doc that represents assign statement.
Definition: doc.h:770
Reference type of IdDocNode.
Definition: doc.h:333
Definitions and helper macros for IR/AST nodes.
The container doc that holds a list of StmtDoc.
Definition: doc.h:194
Reference type of StmtDocNode.
Definition: doc.h:180
std::string DLDataType2String(DLDataType t)
convert a TVM type to string.
Definition: data_type.h:341
Array< ExprDoc > elements
Elements of list.
Definition: doc.h:644
Array< ExprDoc > operands
Operands of this expression.
Definition: doc.h:529
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:240
Array< ExprDoc > decorators
Decorators of function.
Definition: doc.h:1116
static constexpr const char * _type_key
Definition: doc.h:66
static LiteralDoc Boolean(bool v, const Optional< ObjectPath > &p)
Create a LiteralDoc to represent boolean.
Definition: doc.h:279
virtual ~DocNode()=default
ObjectPtr< ArrayNode > make_object()
Definition: array.h:898
Array< StmtDoc > body
The body of function.
Definition: doc.h:1120
runtime implementation for LibTorch/TorchScript.
Definition: analyzer.h:36
Doc that represents literal value.
Definition: doc.h:227
Reference type of ForDocNode.
Definition: doc.h:925
Reference type of DocNode.
Definition: doc.h:78
ObjectRef value
the internal representation of the literal value.
Definition: doc.h:238
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:646
static LiteralDoc Float(double v, const Optional< ObjectPath > &p)
Create a LiteralDoc to represent float.
Definition: doc.h:287
The base class of expression doc.
Definition: doc.h:94
Doc that represents for statement.
Definition: doc.h:900
The base class of statement doc.
Definition: doc.h:154
static LiteralDoc Int(int64_t v, const Optional< ObjectPath > &p)
Create a LiteralDoc to represent integer.
Definition: doc.h:271
Reference type of WhileDocNode.
Definition: doc.h:880
Reference type of DocStringDocNode.
Definition: doc.h:1235
Doc that represents an expression as statement.
Definition: doc.h:997
Doc that represents special scopes.
Definition: doc.h:947
Reference type of ScopeDocNode.
Definition: doc.h:972
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:783
String DocToPythonScript(Doc doc, const PrinterConfig &cfg)
Convert Doc into Python script.
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:319
Reference type of AttrAccessDocNode.
Definition: doc.h:371
Reference type of ClassDocNode.
Definition: doc.h:1185
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:531
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:1002
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:691
Optional< ExprDoc > rhs
The right hand side of the assignment.
Definition: doc.h:779
base class of all object containers.
Definition: object.h:167
Reference type of OperationDocNode.
Definition: doc.h:546
Array< StmtDoc > body
The body of the scope doc.
Definition: doc.h:954
String name
The attribute to be accessed.
Definition: doc.h:354
Array< Doc > indices
The indices to access.
Definition: doc.h:398
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:356
Managed reference class to FloatImmNode.
Definition: expr.h:567
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:124
Doc that represents function definition.
Definition: doc.h:1103
Visitor class to get the attributes of an AST/IR node. The content is going to be called for each fie...
Definition: reflection.h:52
AttrFrame Attr(ObjectRef node, String attr_key, PrimExpr value)
Create an attribute.
Reference type of LiteralDocNode.
Definition: doc.h:254
Array< StmtDoc > else_branch
The else branch of the if-then-else statement.
Definition: doc.h:823
Array< ExprDoc > kwargs_values
The values of keyword arguments.
Definition: doc.h:445
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:64
The base class of all Doc.
Definition: doc.h:53
Floor division.
Definition: analyzer.h:59
Doc that represents assert statement.
Definition: doc.h:1031
Runtime primitive data type.
Definition: data_type.h:41
Reference type of DictDocNode.
Definition: doc.h:706
Doc that represents operation.
Definition: doc.h:486
static DataType Float(int bits, int lanes=1)
Construct an float type.
Definition: data_type.h:178
static LiteralDoc DataType(const runtime::DataType &v, const Optional< ObjectPath > &p)
Create a LiteralDoc to represent string.
Definition: doc.h:301
Array, container representing a contiguous sequence of ObjectRefs.
Definition: array.h:289
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:956
Managed reference class to IntImmNode.
Definition: expr.h:520
Reference type of CallDocNode.
Definition: doc.h:464
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:572
Optional< ExprDoc > start
The start of slice.
Definition: doc.h:731
Array< ObjectPath > source_paths
The list of object paths of the source IR node.
Definition: doc.h:62
Reference to string objects.
Definition: string.h:98
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:1122
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:865
TVM_DECLARE_BASE_OBJECT_INFO(DocNode, Object)
DictDoc()
Create an empty dictionary.
Definition: doc.h:711
Array< ExprDoc > args
The positional arguments.
Definition: doc.h:436
Doc that represents anonymous function.
Definition: doc.h:565
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:447
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:737
Doc that represent if-then-else statement.
Definition: doc.h:816
Array< StmtDoc > body
The body of the while statement.
Definition: doc.h:863
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:1038
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:825
Reference type of IndexDocNode.
Definition: doc.h:415
Reference type of ExprStmtDocNode.
Definition: doc.h:1016
Kind kind
The kind of operation (operator)
Definition: doc.h:527
Reference type of SliceDocNode.
Definition: doc.h:753
Base class of all object reference.
Definition: object.h:511
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:199
Reference type of ListDocNode.
Definition: doc.h:660
bool is_void() const
Definition: data_type.h:109
Doc that represents function call.
Definition: doc.h:431
Kind
Definition: doc.h:488
Reference type of AssertDocNode.
Definition: doc.h:1053
#define TVM_DECLARE_FINAL_OBJECT_INFO(TypeName, ParentType)
helper macro to declare type information in a final class.
Definition: object.h:671
String name
The name of the identifier.
Definition: doc.h:317
Doc that represents identifier.
Definition: doc.h:314
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:608
static DataType Bool(int lanes=1)
Construct a bool type.
Definition: data_type.h:191
ListDoc()
Create an empty ListDoc.
Definition: doc.h:665
Array< StmtDoc > stmts
The list of statements.
Definition: doc.h:197
Optional container that to represent to a Nullable variant of T.
Definition: optional.h:51
Doc that represents class definition.
Definition: doc.h:1160
Reference type of ReturnDocNode.
Definition: doc.h:1088
Doc that represents index access on another expression.
Definition: doc.h:387
Array< ExprDoc > keys
keys of dictionary
Definition: doc.h:682
Reference type of ExprDocNode.
Definition: doc.h:135
Array< ExprDoc > values
Values of dictionary.
Definition: doc.h:689
Reference type of StmtBlockDocNode.
Definition: doc.h:212
Array< StmtDoc > then_branch
The then branch of the if-then-else statement.
Definition: doc.h:821
Array< StmtDoc > body
The body of the for statement.
Definition: doc.h:907
Doc that represents while statement.
Definition: doc.h:858
Array< String > kwargs_keys
The keys of keyword arguments.
Definition: doc.h:438
constexpr runtime::NullOptType NullOpt
Definition: optional.h:160
Doc that represents return statement.
Definition: doc.h:1069
Reference type of FunctionDocNode.
Definition: doc.h:1140
Array< ExprDoc > decorators
Decorators of class.
Definition: doc.h:1165
TupleDoc()
Create an empty TupleDoc.
Definition: doc.h:627
Definition: script_printer.h:97
Optional< ExprDoc > annotation
The type annotation of this assignment.
Definition: doc.h:781
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:400
#define TVM_DEFINE_NOTNULLABLE_OBJECT_REF_METHODS(TypeName, ParentType, ObjectName)
Definition: object.h:728
Doc that represents slice in Index expression.
Definition: doc.h:728
Reference type of AssignDocNode.
Definition: doc.h:799
Reference type of LambdaDocNode.
Definition: doc.h:587
Doc that represents list literal.
Definition: doc.h:641
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:909
Doc that represents attribute access on another expression.
Definition: doc.h:349
Doc that represents tuple literal.
Definition: doc.h:603
static DataType Int(int bits, int lanes=1)
Construct an int type.
Definition: data_type.h:164
static LiteralDoc None(const Optional< ObjectPath > &p)
Create a LiteralDoc to represent None/null/empty value.
Definition: doc.h:263
Reference type of TupleDocNode.
Definition: doc.h:622
Optional< ExprDoc > stop
The exclusive end of slice.
Definition: doc.h:733