如何在Sprache解析器中使用Token()方法

时间:2017-12-19 09:34:26

标签: sprache

我正在使用'令牌()'丢弃前导空格和尾随空格的方法但是它没有,这个测试失败并带有消息 Expected string to be "token", but it has unexpected whitespace at the end.

我尝试在方法Token()之前调用方法Text(),但它也没有帮助。 Parse.AnyChar.Many().Token().Text()

如何以正确的方式使用方法Token()

[Test]
public void Test()
{
  Parser<string> parser = Parse.AnyChar.Many().Text().Token();
  var actual = parser.Parse(" token ");

  actual.Should().Be("token"); // without leading and trailing whitespaces
}

1 个答案:

答案 0 :(得分:1)

Parse.AnyChar修饰符发挥作用之前,

Token会占用尾随空格。

要修复解析器,请排除这样的空格:

[Test]
public void Test()
{
    var parser = Parse.AnyChar.Except(Parse.WhiteSpace).Many().Text().Token();
    var actual = parser.Parse(" token ");

    actual.Should().Be("token"); // without leading and trailing whitespaces
}