Как использовать метод Token() в парсере Sprache

Я использую метод Token() для удаления начальных и конечных пробелов, но это не так, этот тест завершается с сообщением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 ответ

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
}
Другие вопросы по тегам