我将这些解析器作为语法的一部分:
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
答案 0 :(得分:0)
尝试.DelimitedBy(Parse.Chars(&#34; \ r \ t,&#34;))