May 06, 2012 23:09
Лексический синтез - отображение последовательности токенов в последовательность символов. Это преобразование из лексического уровня языка в текстовый. Основным свойством такого преобразования является монотонность: предшествующие токены отображаются в предшествующие символы, последующие - в последующие символы.
Суть преобразования заключается в замене каждого из токенов набором из одного или нескольких символов.
После преобразования обычно осуществляется "сглаживание" текста, необходимое для улучшения его читабельности. Например, предлоги "об", "в", "с", "к" и др. могут получить дополнительную гласную "о" (если за ними следует плохо сочетающийся с ними символ).
Типы токенов как раз и определяют, каким образом над ними выполняется преобразование. Слова, числа и константы отделяются друг от друга пробелами, знаки препинания приклеиваются к предшествующему или последующему токену.
Для каждого токена задано его представление в виде набора символов, и лексический преобразователь тупо выводит их в качестве результата (ну, иногда применяя сглаживание). Представление токена - это собственно и есть его лексема. Скажем, для токена {Слово, лиса} представлением будет набор символов "лиса". Для токена {Знак, ","} представлением будет ",".
В общем, преобразование тривиальное, и его может реализовать каждый школьник. Нужно задать: а) преобразование для каждого из типов токенов; б) сглаживающую функцию в виде набора шаблонов. Реализация не заставит себя долго ждать.
ИИ