文件名称:锯木厂:处理不可变树木的简单工具
文件大小:121KB
文件格式:ZIP
更新时间:2024-02-21 07:59:29
tree csharp compiler dotnet ast
锯木厂 基于Stack Overflow开发的用于处理不可变树的简单工具。 正在安装 锯木厂。 API文档托管。 讲解 Sawmill包含的功能使处理不可变的树形数据(例如抽象语法树)变得容易。 它排除了与递归遍历树相关的样板,允许您编写直接查询的查询和转换。 Sawmill的设计极其简单和轻巧(它是为单个简单界面提供的一组扩展方法而构建的); 它与lambda和模式匹配等现代C#功能配合得很好(笨拙的旧访问者模式的时代已经过去了!); 当您需要独自进行并在Sawmill的帮助下编写遍历时,它不会妨碍您。 我已经在上编写了关于库的核心思想的分步教程。 入门 例如,假设您正在使用一种简单的算术表达式语言,该函数具有文字数字,变量,加法和一元减法。 每个语法构造都对应于Expr基本类型的子类,因此类似(2 + x) + (-4)的表达式将表示为new Add(new Add(new Lit(2), new Var(x)), new Neg(new Lit(4))) 。 为了使树类型与Sawmill一起使用,它必须实现。 如果对象知道如何访问其直接子对象的集合,则该对象是可重写的。