Как использовать метод 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
}