Супермощный парсер, как анализировать строку с ключевым словом в конце и префиксом переменной длиныC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Супермощный парсер, как анализировать строку с ключевым словом в конце и префиксом переменной длины

Сообщение Anonymous »

Я использую библиотеку синтаксического анализатора Superpower на C#. Я хотел бы создать синтаксический анализатор, который будет анализировать строку, аналогичную следующему выражению регулярного выражения:

Код: Выделить всё

(?'prefix'.*)(some\skeyword)
Например, из строки «Это некоторый префикс некоторого ключевого слова» я хотел бы получить в качестве префикса «Это некоторый префикс».
Моя попытка заключается в следующем:

Код: Выделить всё

        public static readonly TokenListParser Text =
Token.EqualTo(StoryToken.Text)
.Select(x => x.Span.ToStringValue());

public static readonly TokenListParser Keyword =
from k1 in Token.EqualToValueIgnoreCase(StoryToken.Text, "some")
from k2 in Token.EqualToValueIgnoreCase(StoryToken.Text, "keyword")
select "some keyword";

public static readonly TokenListParser TextWithKeyword =
from prefix in Text.Many()
from keyword in Keyword
select string.Join(" ", prefix) + " " + keyword;
Но это не работает. Проблема в том, что строка:

Код: Выделить всё

            from prefix in Text.Many()
потребляет все токены из входных данных, включая «некоторые» и «ключевое слово», и анализатор завершается с ошибкой «ожидалось «некоторые», но обнаружен конец ввода».
Я пытался добавить .Try() перед .Many() в этой строке и пытался добавить .AtEnd() к ключевому слову, но это ничего не меняет.
Есть идеи, как я могу достичь своей цели с помощью парсера Superpower?

Подробнее здесь: https://stackoverflow.com/questions/791 ... and-variab
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»