Добавлен , опубликован

Что это?

cJass - это еще одно расширение языка JASS, которое полностью совместимо с популярным vJass. Цель его создания - дать программистам еще больше возможностей по созданию простого и качественного кода. Основными направлениями являются:
  1. Макросредства и стандартная библиотека - избавляют от рутины, позволяя сконцентрироваться на основном коде.
  2. Упрощение синтаксиса - мы не хотим снова начинать спор, какой синтаксис лучше (блоки через begin & end или {}), и более того, мы не навязываем свою точку зрения - все конструкции cJass имеют JASS-style аналоги, тем не менее мы предоставляем выбор.
  3. Оптимизация карты - основная концепция cJass - это то, что все языковые конструкции не должны сказываться на качестве генерируемого кода. Также мы работаем над встроенным оптимизатором.

Как это использовать?

Просто скачайте дистрибутив (пароль для архива: cjass), распакуйте и запустите инсталлятор. У вас уже должен быть установлен Jass New Gen Pack.
Ознакомиться с возможностями можно, прочитав руководство пользователя cJass (off-line версия этого файла также имеется в директории программы).

Что-то не работает!

В настоящий момент мы активно дополняем язык всевозможными конструкциями, поэтому полноценная проверка синтаксиса пока отсутствует. Но мы всегда внимательно изучаем
bug-репорты, которые можно оставить в этой теме.

У меня есть идея: а не плохо бы...

Мы всегда рады выслушать Ваши идеи и предложения по внесению каких либо новых возможностей в язык, расширению стандартной библиотеки и т.д. Иногда мы даже действительно делаем то, что Вы нам предлагаете ;) Наша секция обратной связи ждет Вас!
И напоследок немного истории.
А история программы начинается на ресурсе wc3c.net, когда Vexorian, выслушав предложение от ADOLF'a сделать инструкции инкремента и декремента создает ветку с обсуждением синтаксиса... и благополучно забывает об этом. Тогда ADOLF подумал: "А неплохо было бы сделать свой парсер и включить в него всяких вкусностей". Изначально программа весила меньше заветных 9000 байт, распространялась по сети ICQ/Jabber и ее использовали несколько человек.
Однажды один из ее пользователей - Van Damm (впоследствии стал соавтором) сказал "это очень удобно!" (это было сказано про то, что можно вызывать функции без ключевого слова call) - и тогда мы решили, что если это удобно, почему бы не выложить программу на публичное обозрение. Благодаря zibade у нас появился сайт, где сразу стал отписываться Dark Dragon, который помог выявить львиную долю багов и внес множество интересных предложений.
С тех пор прошло много времени, мы сделали много новых версий, вес программы вырос в 3 раза (сейчас 26 Кбайт). На данный момент у нас есть планы, касающиеся многих конструкций, оптимизатора, и всего прочего.
`
ОЖИДАНИЕ РЕКЛАМЫ...
24
Как же меня бесит то что код компилируется с шансом 1 к 3, в лучшем случае ._.
33
Это, кстати, странно. Он должен либо падать, либо не падать. Третьего не дано.
24
Это, кстати, странно. Он должен либо падать, либо не падать. Третьего не дано.
Ты просто не писал сложных вещей. Если есть желание прекратить мои муки и хоть чуть чуть отладить сжасс, я могу дать мой код.
В целом могу выделить таки проблемы:
1)Периодически(крайне часто) не компилится при отсутствии ошибок, падает\ссылает на место где нет ошибки. Проблема исправляется вставкой пробелов в рандомном месте.
2)Периодически(1 к 10) компиляция происходит успешно, карта запускается, но код не исполняется, вероятно криво компилируются коллбэки. Лечение добавить пробелов, рекомпил.
3)Периодически(1 к 20) парсер упрарывается в конец, и начинает ругатся на нативки, спасает только полный перезапуск редактора.
Так же выбешивает когда сжасс падает от синтаксических ошибок не сказав не слова о причине. Учитывая, что сжасс падает в 90%+ случаев не из за ошибок, а из за багов, это порой превращается в дьявольскую экзекуцию.
29
Все это подтверждаю. Особенно косяк номер 2 выбешивал помнится, запускаешь, а ничего не работает. Пришлось частично переписывать на вжассовские модуль-иниты.
24
Так же бывает что сжасс фейлится от конкретного триггера, даже если он полностью пуст. Есть подозрение что это как то связано с именем триггера, т.к. если проблемный триггер преименовать(речь о имени файла триггера), то сжасс перестает наркоманить.
33
О Господи! Прости меня... Ну и вы ребята тоже.
На самом деле там есть много проблем, те же колбеки будут работать некорректно, если на произнесения заклинания например повесить два с одинаковыми равкодами, насколько я помню, есть и еще баги.
Я конечно могу попробовать, например через пару недель, когда вернусь с отдыха. Самый надежный вариант общения со мной - почта. Только подготовьте именно все как надо. Крайне желательно удалить все лишнее. Как это сделать? Убираете что-то, пробуете, если падает - хорошо. Убираете дальше, если падает еще лучше. Цель - свести код к минимуму.
added :
#$!&#@&<# движок сайта, я чудом обнаруживаю новые посты тут.
24
ADOLF, будет оч круто если ты перепишешь cjass с использованием языков высокого уровня(java\C# и тп). Учитывая существование регулярок, и попросту фрейморков для подобных вещей, а так же наличие сформированной концепции языковой надстройки это вероятно займет не больше времени нежели правка asm, а так же позволит всем желающим заниматься поддержкой.
PS: мб заюзать что то типа этого ?
учитывая то cjass писался на asm в академических целях, то нет в принципе смысла надрываться и править его. Я Coco/R не курил подробно, но как мне показалось этот инструмент подходит(идеально?) для решения поставленной задачи.
33
будет оч круто если ты перепишешь cjass с использованием языков высокого уровня
Этого не будет. А, если проблема небольшая, я либо смогу ее исправить, либо просто подсказать, как избавиться от вылетов.
33
Чёрт, у меня еще руки не дошли до тех вылетов, а тут еще и лимит инклюдов? А в чем там суть?
24
ADOLF, суть в том, что при достижении лимита кол-ва инклюдов, парсер падает. Используется столько много инклюдов для включения в скоп пачки приватных дефайнов.
33
Хм... У меня просто сейчас вообще нет времени этим заниматься ;(
10
В руководстве нет ни слова о двумерных массивах. Как они реализуются в сиДжас?
10
nvc123, тут тоже нет: xgm.guru/p/wc3/ex_jass
Где про них написано? Как пользоваться двумерными, от и до?
28
Вармиръ, vjass мануал читай
двумерными пользоваться так же как и одномерными но только скобок 2 а не 1
int a[5][10];// объявление массива чисел 5 на 10
a[3][6]=4; // занесли значение в ячейку с индексами 3 и 6 значение 4
22
nvc123:
Вармиръ, vjass мануал читай
двумерными пользоваться так же как и одномерными но только скобок 2 а не 1
int a[5][10];// объявление массива чисел 5 на 10
a[3][6]=4; // занесли значение в ячейку с индексами 3 и 6 значение 4
А я как даун всю жизнь использовал примерную конструкцию:
set unit[int[temp+1]] = CreateUnit(.......)
:D
Чтобы оставить комментарий, пожалуйста, войдите на сайт.