用Sprache解析短语(单词用空格分隔)

时间:2019-05-13 11:47:29

标签: c# regex sprache

我正在尝试用Sprache编写一个解析器来解析短语

基本规则是,它应包括用单个空格分隔的单词,字符串的第一个和最后一个字符都是一个空格。

我希望调用类似以下的内容:

string phrase = PhraseParser.Parse("         I want to return up to this point        ");

将结果字符串设为“我想返回到这一点”。

我尝试了许多实现,但没有一个对我有帮助。

更新 感谢@PanagiotisKanavos,诀窍是使用.Then()运算符。以下文字:

public static Parser<string> WordParser =
        Parse.Letter.Many().Text().Token();

public static Parser<string> PhraseParser =
        from leading in Parse.LetterOrDigit.Many().Text()
        from rest in Parse.Char(' ').Then(_ => WordParser).Many()
        select leading + " " + String.Join(" ", rest);

可能仍然可以将其清理干净,但是概念仍然存在。

1 个答案:

答案 0 :(得分:2)

由于@PanagiotisKanavos,诀窍是使用.Then()运算符。以下作品:

public static Parser<string> WordParser =
    Parse.Letter.Many().Text().Token();

public static Parser<string> PhraseParser =
    from leading in Parse.LetterOrDigit.Many().Text()
    from rest in Parse.Char(' ').Then(_ => WordParser).Many()
    select leading + " " + String.Join(" ", rest);
相关问题