Я пытаюсь написать в Sprache синтаксический анализатор, который будет анализировать фразу
Основное правило состоит в том, что в него должны входить слова, разделенные одним пробелом, причем первый и последний символы строки являютсяпробел.
Я ожидал бы вызвать что-то вроде следующего:
string phrase = PhraseParser.Parse(" I want to return up to this point ");
и получить результирующую строку «Я хочу вернуться к этой точке».
Я пробовал множество реализаций, но ни одна из них не делала этого для меня.
Обновление Благодаря @PanagiotisKanavos трюк заключался бы в использовании оператора .Then ().Следующие слова:
public static Parser<string> WordParser =
Parse.Letter.Many().Text().Token();
public static Parser<string> PhraseParser =
from leading in Parse.LetterOrDigit.Many().Text()
from rest in Parse.Char(' ').Then(_ => WordParser).Many()
select leading + " " + String.Join(" ", rest);
Возможно, еще можно немного его почистить, но концепция есть.