解析和评估给定条件

发布于 2024-07-25 11:09:31 字数 502 浏览 5 评论 0原文

我想做的是为 .NET 中的以下情况编写一个简单的解析器

( [PART3]function1() AND [PART4]function7() ) OR [PART2]function90() 
  • [PART] 指示评估位置,(假设这是一个巨大的文本文件,PART 将文本文件分成大的chunks)
  • function() 是我记录的函数,可以通过此查询调用。 返回 truefalse
  • 基于此 True/False 以及之间的其他运算符,我想合并结果并返回一个最终 True 或 False整个输入。

在 .NET 中实现这样的事情的最佳方法是什么?是否有任何简单的库可以让我集成它,或者我应该编写一个简单的解析器然后自己做?

PS,我找不到这个问题的好标题。

What I'm trying to do this is writing a simple parser for the following case in .NET

( [PART3]function1() AND [PART4]function7() ) OR [PART2]function90() 
  • [PART] indicates the evaluation location, (assume that this is huge text file, PART separates text files into large chunks)
  • function() s are my documented function which can be called via this queries. Returns true or false
  • Based on this True/False and other operators between, I want to combine the results and return one final True or False from the whole input.

What's the best way to implement such a thing in .NET, is there any easy library which allows me to integrate this, or shall I just write a simple parser and then do it by myself?

P.S. I couldn't find a good title for the question.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

诺曦 2024-08-01 11:09:31

看起来条件很简单,所以在我看来你不需要全功能的编译器生成器。 我可以建议你研究逆波兰表示法,用它来将你的条件解包到堆栈中,然后然后使用简单的解释来评估结果堆栈。

Looks like simple condition, so in my opinion you do not need full-featured compiler producer. I can suggest you look into Reverse Polish Notation, use it to unwrap your conditions into stack, and then evaluate resulting stack using simple interpreting.

小矜持 2024-08-01 11:09:31

尝试 Irony,虽然还没有准备好迎接黄金时段,但它显示出了一些希望。

Irony是一个用于在.NET平台上实现语言的开发工具包。 它利用 C# 语言和 .NET Framework 3.5 的灵活性和强大功能来实现全新且简化的编译器构建技术。
与大多数现有的 yacc/lex 风格的解决方案不同,Irony 不使用任何扫描器或解析器从用专门的元语言编写的语法规范生成代码。 在 Irony 中,目标语言语法直接用 C# 编码,使用运算符重载来表达语法结构。 Irony 的扫描器和解析器模块使用编码为 C# 类的语法来控制解析过程。

Try Irony, although not ready for prime time (yet), it shows some promise.

Irony is a development kit for implementing languages on .NET platform. It uses the flexibility and power of c# language and .NET Framework 3.5 to implement a completely new and streamlined technology of compiler construction.
Unlike most existing yacc/lex-style solutions Irony does not employ any scanner or parser code generation from grammar specifications written in a specialized meta-language. In Irony the target language grammar is coded directly in c# using operator overloading to express grammar constructs. Irony's scanner and parser modules use the grammar encoded as c# class to control the parsing process.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文