我把这些解析器作为我语法的一部分:
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,但我显然做错了什么。用逗号分隔很好,换行符解析器似乎没有得到任何匹配。
完整的源代码可以在这里获得,以防有人想看一眼:https://github.com/rogeralsing/SpracheHocon/blob/master/SpracheHocon/Program.cs
发布于 2016-06-24 07:50:37
尝试.DelimitedBy(Parse.Chars("\r\t,"))
https://stackoverflow.com/questions/31907866
复制相似问题