Программирование языка для разбора строки за несколько проходов - PullRequest
2 голосов
/ 13 октября 2009

Я работаю над библиотекой перевода Брайля, и мне нужно перевести строку текста на Брайль. Я планирую сделать это в несколько проходов, но мне нужен способ отслеживать, какие части строки были переведены, а какие нет, поэтому я не буду переводить их заново.

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

Я полагаю, что многопроходный перевод строк не так уж редок, я просто не уверен, какие есть варианты для этого.

Ответы [ 2 ]

4 голосов
/ 13 октября 2009

Более обычным подходом будет токенизация вашего ввода, а затем работа с токенами. Например, начните с токенизации строки в токен для каждого символа. Затем в первом проходе создайте прямое отображение Брайля, токен за токеном. В последующих проходах вы можете заменить больше токенов, например, заменив последовательности входных токенов одним выходным токеном.

Поскольку ваши токены являются объектами или структурами, а не простыми символами, вы можете прикрепить дополнительную информацию к каждому - например, исходные токены, которые вы перевели (или, скорее, транслитерировали) из текущего токена.

0 голосов
/ 05 января 2010

Ознакомьтесь с базовой теорией компилятора.

...