ADOLF

cJass - дополнение к языку JASS

» опубликован

Что это?

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 Кбайт). На данный момент у нас есть планы, касающиеся многих конструкций, оптимизатора, и всего прочего.


Просмотров: 83 949



NETRAT #151 - 11 лет назад 0
ну так загружай не exe а _xe или архив
NETRAT добавил:
sfmpq.dll и horus.dll upx сожмите
а SQLite будет эффективнее файл-дб?
Chester #152 - 11 лет назад 0
[code]enum {array}[/code]
Можно ли это назвать багом?
Van Damm #153 - 11 лет назад 0
Можно ли это назвать багом?
Это можно назвать идиотизмом.
Chester #154 - 11 лет назад 0
[quote]Это можно назвать идиотизмом.[/quote]
Идиотизм то идиотизмом, но это парсит. Думаю что такого не должно быть.
Van Damm #155 - 11 лет назад 0
Chester,
Думаю что такого не должно быть.
lolwut? ты сам придумал использовать ключевые слова как идентификаторы?
NCrashed #156 - 11 лет назад 0
Если вот так написать (опечатка), то парсер зависнет:
	defain {
		privat msg(t) = BJDebugMsg(t)
	}
Van Damm #157 - 11 лет назад 0
NCrashed, =(
пока защиты от всякого рода описок маловато
ScorpioT1000 #158 - 11 лет назад 0
потомучто асм) :P
adic3x #159 - 11 лет назад 0
потомучто асм)
потому что я обрабатываю код как есть, побайтово
ScorpioT1000 #160 - 11 лет назад 0
молодец) любой нормальный кто пишет парсер вставит синтакс чекер(хотябы на то, что он же парсит) а не будет фаталить, я уж не знаю что там у вас на асм)
adic3x #161 - 11 лет назад 0
я впилю синтаксис чекер, когда у меня будет полный или более менее полный синтаксис языка
Sebra #162 - 11 лет назад 0
Это?
Или что ты хочешь, и в какой форме?
Если не найдём, то для тебя сделаем. :)
ScorpioT1000 #163 - 11 лет назад 0
что ты имеешь ввиду?
adic3x #164 - 11 лет назад 0
нет, мне удобнее свой сделать) т.е. оно уже во многих случаях выдает норм ерроры
Sebra #165 - 11 лет назад 0
Так может тебе помочь? Ты в каком виде делаешь?
adic3x #166 - 11 лет назад 0
Так может тебе помочь?
спасибо, но сначала глянь мой сорц) т.е. мне это легче самому будет сделать
ADOLF добавил:
Ты в каком виде делаешь?
словами это не описать
Sebra #167 - 11 лет назад 0
Что ж ты думаешь, я в него не глядел?
Зря ты всё в асме делаешь.
Van Damm #168 - 11 лет назад 0
Sebra, по-другому не будет.
Sebra #169 - 11 лет назад 0
Вероятно да.
Хотя Адольф кое что всё таки во внешние файлы вынес.
Я имею в виду библиотеку ptintf.
Или может ему легче было бы строить программу просто глядя на формальное описание синтаксиса.
Ну да ладно. Нет так нет.
adic3x #170 - 11 лет назад 0
Я имею в виду библиотеку ptintf.
я венес во внешний файл разметку, там немного не то
Chester #171 - 11 лет назад 0
ADOLF, а что enum считает только до 10? (0-9)
ScorpioT1000 #172 - 11 лет назад 0
с чего бы ?
Chester #173 - 11 лет назад 0
После 10-го перечисления, все остальные выдает 1
Chester добавил:
хоть с именным хоть без него
Van Damm #174 - 11 лет назад 0
После 10-го перечисления, все остальные выдает 1
хаха, неужели баг каунтера вылез и тут? xD
Chester #175 - 11 лет назад 0
cJass последней версии
adic3x #176 - 11 лет назад 0
гляну..., но не сегодня)
bee #177 - 11 лет назад 0
люди! вот я скачал, установил, и уже все должно работать в JNGP, т.е. запускать от старого ярлыка без изменений?
DragonSpirit #178 - 11 лет назад 0
Bee, да,только добавиться новый пункт cJass(со своими подпунктами)
bee #179 - 11 лет назад 0
DragonSpirit, угу, уже пользуюсь.
язык то сложный вроде, это же C++ только на языке WC3?
еще пару вопросов: я смотрел примеры, сначала fireball. открыл, сохранил и при проверке JNGP жаловался на строки где было записанно func
т.е. например
TimerStart(t_main, SPELL_PERIOD, true, func onTimer)
я изменил все "func" на "function" а он опять выдает ошибки! =\
4 комментария удалено
Chester #184 - 11 лет назад 0
Посмотри есть ли инкул либы cj_types.j вот такая строка должна быть:
[b]include[/b] "cj_types.j"
Помоему, в ранних версиях [b]cJass[/b]a в либе cj_types.j было профайнино слово func = [b]function[/b], а в новой версии нету, ибо примеры спелов под старый [b]cJass[/b]. Или мб не та либа?
Если я прав, то нужно задефить слово func а также вроде ret
Хилка:
[quote]
[b]define[/b] {
func = [b]function[/b]
ret = [b]return[/b]
}
[/quote]
Это сообщение удалено
Sebra #186 - 11 лет назад 0
По мне уж лучше такое в тексте заменить. По месту.
3-4 пропущенные иногда буквы сильно не помогут.
bee #187 - 11 лет назад 0
у меня пара вопросов:
» 1
function <название функции> takes <аргументы> returns <аргументы> {
...

call blablabla(blablabla)
call blablabla(blabla)

...
}
тоже самое что
function <название функции> takes <аргументы> returns <аргументы>
...

call blablabla(blablabla)
call blablabla(blabla)

...
endfunction
?
» 2
define {
blablabla=blabla
}
тоже самое что
define
 blablabla=blabla
enddefine
?
Bee добавил:
» 3
я могу писать вот так:
local unit u=null
unit d=null
т.е соеденять local записи и не локал записи. тоже самое с "call"
в одной функции / библиотеки
Nekit1234007 #188 - 11 лет назад 0
  1. хз но вроде нет
  2. да
  3. смотря где пишеш
кури [url=http://cjass.xgm.ru/manual-ru]мануал[/url]
NCrashed #189 - 11 лет назад 0
  1. нет, такая гремучая смесь =), лучше что то одно
  2. да
  3. да, только в функциях
Van Damm #190 - 11 лет назад 0
Bee, хоспади, какой получится говнокод... Читай руководство, там всё написано на русском
Fakov #191 - 11 лет назад 0
Вообщем ошибка такая
Стоит 1.24 вар и последний JNGP.
(Ну про прерикания антивира на AdicHelper.exe я уж не буду говорить)
Суть в том, что при сохранении ранее созданных карт в джипеге, вылазит эта сотня одинаковых ерроров. Что делать ума не приложу, помогайте((
Van Damm #192 - 11 лет назад 0
Судя по ошибкам, у тебя не стоит 1.24, т.к. ругается именно на hashtable
Fakov #193 - 11 лет назад 0
нет, стоит. JNGP лежит в папке с варом 1.24.
Единственное что может быть - попутаны exeшники. Где в JNGP указывать пути к экзешникам которые использовать? 0о
Van Damm #194 - 11 лет назад 0
В реестре. HKCU/Software/Grimoire/ там увидишь, какой ключ
Chester #195 - 11 лет назад 0
[b]Fakov[/b], HKEY_CURRENT_USER\Software\Blizzard Entertainment смотреть пути к файлам тут. Можно еще удалить папочку гримора, но вряд ли это поможет. А то что папочка лежит в папке вара 24, это генпаку ничего не говорит.
Fakov #196 - 11 лет назад 0
HKEY_CURRENT_USER\Software\Blizzard Entertainment
В папках Вар и ВЕ нет пути к ехешнику ВЕ.
ЗЫ: глянул версию открываемого джипегом редактора -действительно 1.21 в нем остался. А в директории Вара редактор 1.24. Надо как то связать джипег с этим ехешником. Как??? где путь к нему указать в джипеге? через реестр?
bee #197 - 11 лет назад 0
Van_Damm, Nekit1234007: курил уже. я потихоньку вникаю
Fakov #199 - 11 лет назад 0
Hellfim, у меня все такое же, только еще есть InsallPathX строчка) это никак не влияет =\