接近Scala中的文本解析

Bef*_*rem 2 parsing scala tokenize

我正在创建一个将在Scala中解析命令的应用程序.命令的一个例子是:

todo get milk for friday
Run Code Online (Sandbox Code Playgroud)

所以计划是让一个非常聪明的解析器分开线并识别命令部分以及字符串中有时间参考的事实.

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

search todo for today with tags shopping
Run Code Online (Sandbox Code Playgroud)

我觉得正则表达式将不灵活地实现具有很多变化的命令.这让我想到实现某种语法.

在Scala中我在这方面的选择是什么?

Mit*_*ins 9

您想要搜索"解析器组合器".我有一篇使用这种方法的博客文章(http://cleverlytitled.blogspot.com/2009/04/shunting-yard-algorithm.html),但我认为最好的参考是Stefan Zieger的这一系列帖子(http:/ /szeiger.de/blog/2008/07/27/formal-language-processing-in-scala-part-1/)