Состряпал сегодня прототип препроцессного генератора словоформ для 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)
Неактивен
Извиняюсь, что обделили вниманием. Программка замечательная, отлично подходит для встраивания в среду разработки. Теперь есть альтернативный вариант - генерация на этапе компиляции, что сильно улучшает читаемость кода, но и этот подход тоже очень неплох.
Неактивен
Встроенный генератор по качеству склонений не лучше. Правила заданы ещё не все, и исключения прописывать не планирую.
Неактивен
ТАДС позволяет использовать внешние функции написанные на других языках программирования.
Подробнее здесь (пока на английском).
Насколько знаю, Майкл Робертс позже урезал этот функционал в целях безопасности. Но учитывая, что мы хотим подключать внешние функции на этапе компиляции, а не во время игры, это обходится.
Неактивен