Важная информация

User Tag List

Показано с 1 по 10 из 10

Тема: Утилита для подготовки текстов

  1. #1
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Утилита для подготовки текстов

    Благодаря теме http://zx.pk.ru/showthread.php?t=8534 и товарищу axor'у написал одну утилитку подготовки текстов для программ.

    Возможности:
    - макроподстановки (в том числе и рекурсивные)
    - выборка по ключам (для огранизации переводов)
    - автоматическая токенизация (для уменьшения размера текста)
    - экспорт в ассемблерный файл

    Вкратце, на примере, как можно применять.

    Предположим, пишем мы игру про Диззи и хотим автоматизировать работу с текстами. Пишем следующий текстовик:

    # имена главных персонажей
    = HERO1
    en> "Dizzy"
    ru> "Диззи"

    = HERO2
    en> "Daisy"
    ru> "Дейзи"

    # места действия
    < PLACE_WORLD
    en> HERO1 "'s World"
    ru> "Мир " HERO1

    < PLACE_HOME
    en> HERO1 " and " HERO2 "'s home. "
    ru> "Дом " HERO2 " и " HERO2 ". "
    en> "Welcome!"
    ru> "Добро пожаловать!"

    # локация
    < START_SCREEN
    > PLACE_HOME
    Как видно, синтаксис очень простой. За символами = и < начинается имя макроса (вид символа определяет дальнейший тип макроса- локальный или глобальный). После опционального ключа и символа > идут текстовые фрагменты, заключенные в кавычки и имена макросов. Ключи в данном случае определяют язык перевода.

    После инстанциирования по ключу (Textator.exe --process --key ru input.txt) получаем результат для русского языка:
    # This file was automatically generated

    < PLACE_HOME
    > "Дом Дейзи и Дейзи. Добро пожаловать!"

    < PLACE_WORLD
    > "Мир Диззи"

    < START_SCREEN
    > "Дом Дейзи и Дейзи. Добро пожаловать!"
    Или для английского (Textator.exe --process --key en input.txt):
    # This file was automatically generated

    < PLACE_HOME
    > "Dizzy and Daisy's home. Welcome!"

    < PLACE_WORLD
    > "Dizzy's World"

    < START_SCREEN
    > "Dizzy and Daisy's home. Welcome!"
    Как видно, исчезли все локальные макросы (которые были объявлены через =).
    Также заметна избыточность текстов. Для исправления, применим следующую функцию- токенизацию. Ну и попутно переведем все в ассемблерный исходник:

    Код:
    ; This source was automatically generated
    ; Local entries
    TOK0    db "Dizzy",0
    TOK3    db "Daisy",0
    TOK6    db "home",0
    TOK8    db "Welcome",0
    
    ; Global entries
    PLACE_HOME
            TOKEN TOK0
            db " and "
            TOKEN TOK3
            db "'s "
            TOKEN TOK6
            db ". "
            TOKEN TOK8
            db "!",0
    PLACE_WORLD
            TOKEN TOK0
            db "'s World",0
    START_SCREEN
            TOKEN TOK0
            db " and "
            TOKEN TOK3
            db "'s "
            TOKEN TOK6
            db ". "
            TOKEN TOK8
            db "!",0
    Вкратце, все

    Техническая информация:
    - проект хостится на http://code.google.com/p/textator
    - доступны исходные коды (+Makefile, Code::Blocks project, MSVS project)
    - также выложены последние билды для винды (из разных студий, на всякий случай).

    В комплекте с билдом идет файл примера и исходники распаковщиков. Поскольку эти распаковщики писались "вслепую", просьба их потестировать и сообщить мне об ошибках и прочем, равно как и об ошибках в программе

    Что в планах:
    - написать внятное руководство (я тут не весь функционал расписал, но его легко откопать)
    - улучшить токенизатор, ибо существующий был написан на коленке

    Upd:

    Свежие билды:
    Builds list

    Руководство:
    Manual

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для breeze
    Регистрация
    11.02.2005
    Адрес
    【RB】
    Сообщений
    3,690
    Спасибо Благодарностей отдано 
    27
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    30 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вещь не плоха и весьма интересная, а для работы с текстами вообще очень удобный инструмент
    (๑•̀ㅂ•́)و✧ Doors UI → https://t.me/doorsui | https://t.me/atari_xl_xe ← Atari XL/XE (●´ω`●)ゞ

  4. #3
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Фух! Я это сделал!
    Токенизатор по фрагментам (до этого был исключительно по словам). Анализирует текст и выделяет оптимальные фрагменты в токены.

    Что еще нового (ревизия 40):
    - включение внешних файлов
    - логи (ключ --verbose)
    - разные оптимизации и фиксы
    - руководство (уже немного устаревшее)

    Ссылка на бинарники - в первом сообщении.

  5. #4
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    100 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А мой реквест не делал?
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  6. #5
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shadow Maker Посмотреть сообщение
    А мой реквест не делал?
    Который именно?

  7. #6
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    100 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Про кусочки там и сям, которые ты сказал макросами сделаешь.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  8. #7
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shadow Maker Посмотреть сообщение
    Про кусочки там и сям, которые ты сказал макросами сделаешь.
    45 ревизия. При таком режиме один вариант оптимизации недоступен (местами может довольно серьезно сказаться).

  9. #8
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    100 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Почему недоступен?

    PS - Строка "командная", не "коммандная" Английский он не русский.
    Последний раз редактировалось Shadow Maker; 18.02.2009 в 16:10.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  10. #9
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shadow Maker Посмотреть сообщение
    Почему недоступен?
    Без режима inline:
    Код:
    ; Global
    SAMPLE db "sample",0
    
    REPEAT equ SAMPLE
    А в режиме inline это проблематично, ибо equ для макросов не работает. А оборачивать макросы друг в друга- хрень какая-то...

  11. #10
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Дабы в истории остался след, аттачу статью про сабжевую программу, написанную в свое время для Абзаца.
    Вложения Вложения

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Упаковка текстов
    от Shadow Maker в разделе Программирование
    Ответов: 18
    Последнее: 10.10.2008, 21:43
  2. Утилита - игры на PC, выглядят как на спеке
    от black_ninja в разделе Разный софт
    Ответов: 9
    Последнее: 22.04.2008, 09:04
  3. Утилита для просмотра *.s 6912
    от hi_soft в разделе Утилиты
    Ответов: 21
    Последнее: 01.07.2006, 12:08

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •