解析用户的查询

Joe*_*nez 5 c# parsing tokenize

所以这就是我想要实现的目标.我想为我的用户提供一个类似谷歌的文本框,他们可以在其中键入他们的查询.我希望他们能够表达半自然语言,如

"view all between 1/1/2008 and 1/2/2008"
Run Code Online (Sandbox Code Playgroud)

如果语法必须结构合理并且仅限于此特定域,那就没问题......这些是将使用它的专家用户.

最终,我认为我希望解析结果可以作为某种表达式树使用.但是,如果你对于哪种数据结构可能更好有其他想法.

这是在C#:-)

tsi*_*mon 4

您正在描述一种编程语言。当然,它是一种小语言(通常称为小语言,或领域特定语言(DSL))。如果您从未听说过递归下降解析器这个术语,那么您最好遵循 Paul 的建议并使用某些描述的下拉框。

然而,我再次同意他的观点,如果你想这样做,Antlr 就是你的最佳选择。该网站上有一些教程可以帮助您入门。基本上,您需要使用巴科斯范式表示法来描述语法。

然后,您将在您的语法上运行 Antlr,它将生成您的解析器。然后,您可以将教科书中的输入输入到抽象语法树中。然后,您可以使用该树来生成查询。这并不像听起来那么困难,但也有一些困难。

如果您真的对此感兴趣并且/或者想要扩展一下您的编程翅膀,您可以通过 Dragon Book(又名编译器:原理、技术和工具)阅读有关该主题的更多信息。

祝你好运,我的朋友。