Анализатор кода QSP

Анализатор кода QSP

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

Этим летом я переработал код, написав полноценный анализатор синтаксиса QSP без регулярных выражений.

Анализатор выполняет проверку на двух уровнях:
1. Проверка синтаксиса. Все ошибки, которые можно однозначно определить по соответствию синтаксическим правилам языка QSP.
Пример: незакрытые многострочные операторы, незакрытые скобки, неверное количество аргументов функции и т.д.
2. Предупреждения. Предположения об ошибках, основанные на анализе структуры игры - переменные, локации, предметы, действия.
Пример: локации, на которые нет перехода, использование неинициализированных переменных, попытка удалить предмет, который нигде не добавляется, и т.д.

Ссылка на проект, для тех, кому интересно: http://code.google.com/p/qsp-analyser/

Главная ценность проекта - исходный код, который полностью открыт. Его я буду обновлять регулярно, по мере работы над проектом.

Внимание: анализатор работает только с файлом текстового формата (TXT2GAM). Поэтому для проверки вам придётся экспортировать игру в кугене. Игра -> Экспорт -> Текстовый файл формата TXT2GAM.

Скачать

Замечания, предложения - приветствуются.

Изменено: Nex
25.Апр.14 07:33:22
Nex
useravatar
Онлайн
4148 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Анализатор кода QSP

Оба уровня проверки я намереваюсь встроить в редактор QGen, с этой целью и затеял переработку кода.
Анализатор написан на C#, а QGen - на C++, так что перенос кода тоже займет время.

Nex
useravatar
Онлайн
4148 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Анализатор кода QSP

Второй уровень проверки переработан, регулярные выражения больше не используются.

Выложил первый рабочий релиз.

1й уровень проверки - синтаксический анализ;
2й уровень проверки - проверяются ссылки на локации, обращения к переменным, добавление/удаление предметов и действий.

Nex
useravatar
Онлайн
4148 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Анализатор кода QSP

Замечательная вещь. Просканировал им свою игру и нашел четыре ошибки! Неизвестное действие, два незакрытых апострофа, и Act без двоеточия.
Номера строк, которые указывает анализатор, разнятся с номерами строк в поле "выполнить при посещении". Но это видимо потому, что в QGen я работал и с полями "описание" и "базовые действия", их строки тоже посчитались. Утилита очень полезна. Вручную я б искал эти ошибки пару недель.

А возможность просматривать список явных переменных, действий и локаций - это просто таки мечта. Тут только такой вопрос. Что такое "потерянные локации"?

Aleks Versus
воздвигатель башни
useravatar
Онлайн
1209 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Анализатор кода QSP

Потерянные - те, на которые нет явно заданных переходов.
Пример:

Код:

$nextloc = 'Победа'

...
GOTO $nextloc

В такой ситуации, анализатор не засчитает это за переход(обращение к локации). Но можно внести "$nextloc" в специальный список переменных в панели настроек, тогда присваивание значения будет считаться за переход.

С номерами строк, все именно так.

Nex
useravatar
Онлайн
4148 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Анализатор кода QSP

В самом деле, отличная вещь. Спасибо, Некс!

AleCoTeen
Искатель
useravatar
Offline
509 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Анализатор кода QSP

На здоровье. Я еще буду вносить исправления, алгоритм разбора пока что не идеален, но уже сейчас работает очень надежно.

Nex
useravatar
Онлайн
4148 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Анализатор кода QSP

Новый релиз утилиты, версия 1.2.24. Качаем по ссылке в первом сообщении.

Что нового:
1. Экспорт в CSV и перевод, подробнее см. в следующем сообщении. Доступен во вкладке "Конвертация".
2. Форматирование кода - "выравнивание" кода, выставляет отступы внутри многострочных операторов. Доступно во вкладке "Конвертация".
3. Номера строк теперь соответствуют номерам строк в текстовом файле.
4. Добавлена настройка "Разбор кода в фигурных скобках" - для тех, кто использует фигурные скобки не для записи кода.
5. Реализован разбор подвыражений - "<<$var>>".

Также исправлено некоторое количество багов в алгоритмах разбора, и сделаны косметические улучшения.

Nex
useravatar
Онлайн
4148 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Анализатор кода QSP

Экспорт текстовых констант в CSV-файл и перевод.

Сделано для удобства перевода игры на другой язык. Работает так: открываем утилиту, выбираем исходный код квеста. Открываем вкладку "Конвертация". Жмем "Экспорт в CSV". Если в исходном файле нет ошибок, генерируется CSV-файл, в котором записана таблица из четырех колонок. В первой - номер строки таблицы и название локации, из которой взят текст. Во второй - исходный текст. В третьей - нужно вписать перевод. В четвертой можно писать любые комментарии, ее содержимое не учитывается.
CSV-файл можно редактировать во многих офисных программах. Точно он поддерживается программами OpenOffice Calc и MS Excel. Когда перевод готов, нажимаем кнопку "Сделать перевод, используя CSV". Сгенерируется файл с именем таким как у исходного квеста + указанный суффикс(пример: исходный квест "game.txt", CSV-файл "game.csv", файл перевода "game_tr.txt"). Получили переведенную игру.

Для чего это нужно? Во-первых, наглядное представление не даст пропустить непереведенных строк.
Во-вторых, можно будет поручить перевод человеку, не знакомому с языком QSP.

Ну и еще это может служить удобным средством для проверки орфографии, до тех пор пока она не будет-таки реализована в кугене.

Nex
useravatar
Онлайн
4148 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Анализатор кода QSP

Отличное новшество с переводом, можно наши игры на английский перевести!

Ntropy
useravatar
Offline
146 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
934
Всего опросов:
13
Всего сообщений:
16789822
Сообщений на этой неделе:
16
Пользователи форума:
 
Всего пользователей:
1980
Последним зарегистрировался:
DavidMip