Parsing Scala中文本分析的探讨

Parsing Scala中文本分析的探讨,parsing,scala,tokenize,Parsing,Scala,Tokenize,我正在制作一个应用程序,它将解析Scala中的命令。命令的一个示例是: todo get milk for friday 因此,我们的计划是让一个相当智能的解析器将行分开,并识别命令部分以及字符串中有时间引用的事实 一般来说,我需要在Scala中创建一个标记器。所以我想知道我的选择是什么。我熟悉正则表达式,但我还计划制作一个类似SQL的搜索功能: search todo for today with tags shopping 我觉得正则表达式在执行命令时会变得很死板,而且会有很多变化。这让

我正在制作一个应用程序,它将解析Scala中的命令。命令的一个示例是:

todo get milk for friday
因此,我们的计划是让一个相当智能的解析器将行分开,并识别命令部分以及字符串中有时间引用的事实

一般来说,我需要在Scala中创建一个标记器。所以我想知道我的选择是什么。我熟悉正则表达式,但我还计划制作一个类似SQL的搜索功能:

search todo for today with tags shopping
我觉得正则表达式在执行命令时会变得很死板,而且会有很多变化。这让我想到实现某种语法


在Scala中,我在这方面有哪些选择

您想搜索“解析器组合器”。我有一篇使用这种方法()的博客文章,但我认为最好的参考是Stefan Zieger()的这一系列文章。

这里是我2009年9月在Scala parser combinators上做的一次演示的幻灯片。()演示了一种简单的类似Logo的语言的实现。它可能提供一些见解。

Scala有一个解析器库(Scala.util.parsing.combinator),可以直接从其规范编写解析器。如果您的语言有EBNF,那么编写Scala解析器应该很容易。如果没有,你最好先尝试正式定义你的语言