Sprache DelimitBy新系列

时间:2015-08-09 19:08:52

标签: c# sprache

我将这些解析器作为语法的一部分:

public static readonly Parser<string> SpaceOrTab =
        Parse.Char(' ').Or(Parse.Char('\t')).Many().Text().Named("SpaceOrTab");

public static readonly Parser<string> NewLine = Parse.LineEnd;
public static readonly Parser<string> NewLineToken = Parse.LineEnd.Contained(SpaceOrTab, SpaceOrTab);
public static readonly Parser<string> NewLineSeparator = NewLineToken.AtLeastOnce().Select(x => string.Join("", x)); 
public static readonly Parser<string> CommaSeparator = Parse.String(",").Token().Text();
public static readonly Parser<string> Separator = NewLineSeparator.Or(CommaSeparator).Named("Separator");

我想要一个分隔符解析器,它是“至少一个LineEnd”或逗号。

这样我就可以解析像:

这样的东西
1, 2 , 3 , 4

1
2
3
4

我尝试了很多不同的选项来定义NewLineSeparator,但我显然做错了。通过逗号分隔工作正常,newlineseparator解析器似乎没有得到任何匹配。

此处提供完整的来源,以防有人想要查看:https://github.com/rogeralsing/SpracheHocon/blob/master/SpracheHocon/Program.cs

1 个答案:

答案 0 :(得分:0)

尝试.DelimitedBy(Parse.Chars(&#34; \ r \ t,&#34;))