Состряпал сегодня прототип препроцессного генератора словоформ для RTADS. Идея сводится к тому, что исходник без словоформ скармливается препроцессору, на выходе получаем исходник со словоформами. Обсуждение подобной идеи было где-то на форуме.
Плюсы:
Минусы:
Посмотрите (~1Mb), если подобная программа кому-нибудь будет полезна – с удовольствием буду развивать.
http://rapidshare.com/files/122666450/n … s.rar.html или
http://www.filehoster.ru/files/bb3210
Собственно – это прототип, поэтому фич нет – одни ограничения:)
upd
Пример использвания:)
Берем фрагмент кода из Кащея ((C) fireton), удовлетворяющий ограничениям программы:
// 555 знаков кода shtory : decoration location = bedroom sdesc = "шторы" rdesc = "шторов" // кстати – баг :) ddesc = "шторам" vdesc = "шторы" tdesc = "шторами" pdesc = "шторах" noun = 'шторы' 'штор' 'шторам' 'шторами' 'шторах' 'шторам#d' 'шторами#t' 'занавески' 'занавесок' 'занавескам' 'занавесками' 'занавесках' 'занавескам#d' 'занавесками#t' 'штора' 'шторы' 'шторе' 'штору' 'шторой' 'шторою' 'шторе#d' 'шторой#t' 'занавеска' 'занавески' 'занавеске' 'занавеску' 'занавеской' 'шторою' 'занавеске#d' 'занавеской#t' ldesc = "Тяжелые шторы твоей любимой расцветки - красное на черном..." isThem = true ;
Урезаем этот фрагмент и копируем в файл in.t.
// in.t // 171 знака кода shtory : decoration location = bedroom sdesc = "шторы" noun = 'шторы' 'штора' 'занавески' 'занавеска' ldesc = "Тяжелые шторы твоей любимой расцветки - красное на черном..." isThem = true ;
Выполняем команду:
nounforms < in.t > out.t
Получаем результирующий файл:
// out.t // 640 знаков кода shtory : decoration location = bedroom sdesc = "шторы" rdesc = "штор" ddesc = "шторам" vdesc = "шторы" tdesc = "шторами" pdesc = "шторах" noun = 'шторы' 'штор' 'шторам' 'шторам#d' 'шторы' 'шторами' 'шторами#t' 'шторах' 'штора' 'шторы' 'шторе' 'шторе#d' 'штору' 'шторой' 'шторой#t' 'шторе' 'шторою' 'шторою#t' 'занавески' 'занавесок' 'занавескам' 'занавескам#d' 'занавески' 'занавесками' 'занавесками#t' 'занавесках' 'занавеска' 'занавески' 'занавеске' 'занавеске#d' 'занавеску' 'занавеской' 'занавеской#t' 'занавеске' 'занавескою' 'занавескою#t' ldesc = "Тяжелые шторы твоей любимой расцветки - красное на черном..." isThem = true ;
Отредактировано Gesperid (16.06.2008 00:19)
Неактивен
Извиняюсь, что обделили вниманием. Программка замечательная, отлично подходит для встраивания в среду разработки. Теперь есть альтернативный вариант - генерация на этапе компиляции, что сильно улучшает читаемость кода, но и этот подход тоже очень неплох.
Неактивен
GrAndrey написал:
Извиняюсь, что обделили вниманием. Программка замечательная, отлично подходит для встраивания в среду разработки. Теперь есть альтернативный вариант - генерация на этапе компиляции, что сильно улучшает читаемость кода, но и этот подход тоже очень неплох.
Спасибо, за такую оценку. Встроенный генератор, безусловно, лучше, просто в моем подходе чувствуется какой-то подспудный потенциал.
Неактивен
Встроенный генератор по качеству склонений не лучше. Правила заданы ещё не все, и исключения прописывать не планирую.
Неактивен
GrAndrey написал:
Встроенный генератор по качеству склонений не лучше.
Я имел ввиду лучше, как раз, своей "встроенностью".
GrAndrey написал:
Правила заданы ещё не все, и исключения прописывать не планирую.
А нельзя ли брать словоформы из словаря, из ветки про библиотку не совсем понял? Preinit может сгодиться?
Неактивен
ТАДС позволяет использовать внешние функции написанные на других языках программирования.
Подробнее здесь (пока на английском).
Насколько знаю, Майкл Робертс позже урезал этот функционал в целях безопасности. Но учитывая, что мы хотим подключать внешние функции на этапе компиляции, а не во время игры, это обходится.
Неактивен