代码之家  ›  专栏  ›  技术社区  ›  Tomas Vana

如何将简单语句解析为codedom对象

  •  1
  • Tomas Vana  · 技术社区  · 16 年前

    我需要将一个简单的语句(本质上是对某个对象的一系列函数调用)解析成一个codedom对象(可能是 CodeStatement )我还想提供一些名称空间的默认导入,以便能够使用不太冗长的语句。

    我在网上到处找了一些建议,但是我很困惑什么是不可能的,什么是最简单的方法。例如 this question 似乎是我想要的,不幸的是我不能用这个解决方案 CodeSnippetStatement 我使用的执行引擎(wf规则引擎)似乎不支持。

    有什么建议可以帮助我/指引我走向正确的方向吗?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Tomas Petricek    16 年前

    没有库或函数可以将C代码作为标准.NET库的一部分解析为codedom对象。codedom库有一些似乎是为此而设计的方法,但是没有一个是真正实现的。据我所知,visual studio中有一些可用的实现(例如由设计师使用),但这只是内部实现。

    CodeSnippetStatement 是一个codedom节点,允许您将任何字符串放入生成的代码中。如果您只想创建codedom树来生成c源代码,那么这通常是可以的(源代码生成器只是将字符串打印到输出)。如果wf引擎需要理解字符串中的代码(而不仅仅是生成源代码并编译它),那么 代码段语句 不起作用。

    但是,也有第三方工具可用于分析C源代码。在我参与的一个项目中,我们 NRefactory library (在sharpdevelop中使用)并且工作得很好。它为您提供了表示已解析代码的树(ast),恐怕您需要自己将其转换为相应的codedom树。

        2
  •  1
  •   Tomas Vana    16 年前

    我找到了一个库实现 here 这似乎涵盖了我所需要的一切。我不知道它是否足够健壮,可以在业务场景中使用,但对于我的单元测试来说,这几乎是我所能要求的。

    推荐文章