diff --git a/.trae/rules/project_rules.md b/.trae/rules/project_rules.md new file mode 100644 index 0000000..59c2d7a --- /dev/null +++ b/.trae/rules/project_rules.md @@ -0,0 +1,15 @@ +我正在设计一个数据结构与算法可视化平台,在我的设想中,平台会提供一个代码编辑器,用户可以在其中编写算法的实现代码,当用户点击运行按钮时,平台会调用后端的编译器来执行用户编写的代码,获取到算法执行过程中所涉及的数据结构的变化,并将整个过程可视化地展示在平台中。 + +从技术的角度,我希望它能够适配不同的编程语言,所以我不会考虑从编译技术的层面去适配不同的编程语言(例如自定义一个编译器),而是考虑设计一套多语言的 SDK 来实现这一目标。从整体上来看,SDK 提供的 API 用于“标记”数据结构的操作,用户可以在算法的实现中调用这些 API 来标记数据结构的变化,这样在代码被编译运行后,就能够获取数据结构的变化过程(序列化为 JSON)。 + +这样如果从用户的角度来看,用户可以几乎不修改算法的实现,而是只需要在合适的位置调用平台提供的 API 即可。 + +这个项目是关于这个平台的多语言 SDK 设计与实现方案。 + +项目中有这样一些概念: + +- Tracer: 用于记录数据结构的变化过程,每一种数据结构都有一个对应的 Tracer 类(ArrayTracer, StackTracer, QueueTracer, MatrixTracer, SortTracer, LinkTracer, TreeTracer, GraphTracer)。 + +- Action: 用于描述数据结构的操作类型,每一种操作都有一个对应的 Action。 + +- Command: 用于描述每一次数据结构操作的指令,一条指令包含了 tracer、action、params,并最终会序列化为 JSON。