Сейчас 21:33:20 Понедельник, 11 июня, 2012 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 8 из 8«12678
Модератор форума: PUVer, FkoFF, Kartoha, SirNikolas 
Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » JASP (Just Another Script Preprocessor)
JASP
Ty3uKДата: Понедельник, 02 Апрель 2012, 12:26:42 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки:
- небольшой препроцессор для языка Jass2, который запускается перед парсером vJass (JassHelper). Полную информацию о возможностях вы можете прочитать в мануале, все ссылки внизу.

 

lawsonДата: Понедельник, 07 Май 2012, 00:33:00 | Сообщение # 176
10 уровень
Группа: Проверенные
Сообщений: 3088
Награды: 0
Репутация: 269
Блокировки:
Quote (SirNikolas)
++i + ++i?

Хмм ни разу такого не видел, но по идеи - сначала должны выполниться инкременты, а только потом складывать возвращенное значение.

Nic nie wiem bo mam chuj.
Кароче делаю ИИ на JASS


Сообщение отредактировал lawson - Понедельник, 07 Май 2012, 00:34:19
 

SirNikolasДата: Понедельник, 07 Май 2012, 09:16:23 | Сообщение # 177
10 уровень
Группа: КоМодераторы
Сообщений: 4000
Награды: 1
Репутация: 837
Блокировки:
http://lurkmore.to/++i_+_++i

 

Ty3uKДата: Суббота, 02 Июнь 2012, 15:50:14 | Сообщение # 178
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки:
Я не модератор и темы закрывать не умею

Добавлено (02 Июнь 2012, 15:50:14)
---------------------------------------------
Возможно, кого-то это заинтересует, а кого-то заставит плясать
Итак, я научил жасп взаимодействовать с cJass, т.е. их взаимное использование с этого момента возможно и даже нужно :)
Комментим, господа


 

SirNikolasДата: Суббота, 02 Июнь 2012, 16:40:16 | Сообщение # 179
10 уровень
Группа: КоМодераторы
Сообщений: 4000
Награды: 1
Репутация: 837
Блокировки:
yahoo
Ну что еще сказать)

 

Ty3uKДата: Воскресенье, 03 Июнь 2012, 18:34:37 | Сообщение # 180
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки:
SirNikolas, сам тихо радуюсь :)

Добавлено (03 Июнь 2012, 18:34:37)
---------------------------------------------
бтв, я переписываю жасп на с#
все готовимся к катострофе trollface


 

DreiiДата: Воскресенье, 03 Июнь 2012, 19:01:17 | Сообщение # 181
10 уровень
Группа: Проверенные
Сообщений: 4518
Награды: 0
Репутация: 574
Блокировки:
Иди учи матан!

<3

"Аннушка уже разлила масло." - М.Булгаков - Мастер и Маргарита


[НАРАБОТКА]Самая простая система сложения зарядов
[СТАТЬЯ]FSGUI - Выбор героя
 

Ty3uKДата: Воскресенье, 03 Июнь 2012, 19:10:34 | Сообщение # 182
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки:
какой матан, ты же в 11 классе : trollface:

 

Like_a_NoobДата: Понедельник, 04 Июнь 2012, 11:29:47 | Сообщение # 183
6 уровень
Группа: Проверенные
Сообщений: 216
Награды: 0
Репутация: 74
Блокировки:
Quote (Ty3uK)
бтв, я переписываю жасп на с#
все готовимся к катострофе trollface

хочу это увидеть idiot
 

Ty3uKДата: Понедельник, 04 Июнь 2012, 12:10:56 | Сообщение # 184
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки:
Code
using System;
using System.IO;
using System.Windows.Forms;
using System.Collections.Generic;
using SFMpq;

class JASP
{

     private static int MPQ;
     private static string[] war3map;
     private static List<string> script = new List<string>();

     //==========================================================================================//
     //
     //                    **Main API**
     //
     //==========================================================================================//

     private static void SplitComments()
     {
         for (int i = 0; i < war3map.Length; i++)
         {
             if (war3map[i].IndexOf("//") != -1)
             {
                 int index = war3map[i].IndexOf("//");
                 war3map[i] = war3map[i].Substring(0, index);
                  
             }
         }
     }

     private static void ReplaceSpaces()
     {
         for (int i = 0; i < war3map.Length; i++)
         {
             while (war3map[i].IndexOf("  ") != -1)
             {
                 war3map[i] = war3map[i].Replace("  ", " ");
             }
             war3map[i] = war3map[i].Trim();
             if (war3map[i].Length > 0) script.Add(war3map[i]);
         }
     }

     private static int FindBraces(int start)
     {
         int OB = 0, CB = 0, end = 0;
         for (int i = start; i < war3map.Length; i++)
         {
             if (war3map[i].IndexOf("{") != -1) OB++;
             if (war3map[i].IndexOf("}") != -1)
             {
                 CB++;
                 if (CB == OB) { end = i; break; };

             }
         }
         return end;
     }

     private static void ParseFunctions()
     {
         int start = 0, end = 0;
         string temp = "";
         do
         {
             if (war3map[start].IndexOf("{") != -1 && war3map[start].IndexOf("library") == -1 &&
                 war3map[start].IndexOf("scope") == -1 && war3map[start].IndexOf("struct") == -1 &&
                 war3map[start].IndexOf("define") == -1 && war3map[start].IndexOf("enum") == -1)
             {
                 end = FindBraces(start);
                 for (int i = start; i < end; i++) { temp += war3map[i] + "\n"; }
                 start = end;
             }
             start++;
         } while (start < war3map.Length);
     }

     private static void ExtractScript(string aName)
     {
         MPQ = SF.MpqOpenArchiveForUpdate(aName, SF.MOAU_OPEN_EXISTING + SF.MOAU_MAINTAIN_LISTFILE, 0);
         SF.MpqExtractFileTo(MPQ, "war3map.j", "war3map.j");
         war3map = File.ReadAllLines(@"war3map.j");
     }

     private void AddScript()
     {
         SF.MpqAddFileToArchiveEx(MPQ, "war3map.j", "war3map.j", SF.MAFA_REPLACE_EXISTING + SF.MAFA_COMPRESS, SF.MAFA_COMPRESS_DEFLATE, SF.Z_BEST_COMPRESSION);
         SF.MpqCompactArchive(MPQ);
         SF.MpqCloseUpdatedArchive(MPQ, 0);
     }

     //==========================================================================================//
     //
     //                    End **Main API**
     //
     //==========================================================================================//

     static void Main()
     {
         if (File.Exists(SF.DLL))
         {
             ExtractScript("ololo.w3x");
             SplitComments();
             ReplaceSpaces();
             //ParseFunctions();
             //File.WriteAllLines("123.txt", war3map);
         }
         else
         {
             MessageBox.Show("File \"SFMpq.dll\" isn't exists.\nSorry :(", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     }

}

Пока так.
Бтв, юзаю собсьвенный апишник для SFmpq.dll (перенес из апишника для плюсов)

 

SirNikolasДата: Понедельник, 04 Июнь 2012, 12:31:21 | Сообщение # 185
10 уровень
Группа: КоМодераторы
Сообщений: 4000
Награды: 1
Репутация: 837
Блокировки:
Вон ты какой хитрый. А я думал, работаешь с посимвольным вводом.

 

Ty3uKДата: Понедельник, 04 Июнь 2012, 15:25:41 | Сообщение # 186
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки:
ник, на дворе 2012 год (:

Добавлено (04 Июнь 2012, 15:25:41)
---------------------------------------------
до этого жасп вообще на регулярках одних был
сейчас стараюсь без них
ибо парсинг цжасса не получалось на них сделать (:


 

SirNikolasДата: Понедельник, 04 Июнь 2012, 15:26:10 | Сообщение # 187
10 уровень
Группа: КоМодераторы
Сообщений: 4000
Награды: 1
Репутация: 837
Блокировки:
Судя по private static void ParseFunctions(), он будет некорректно обрабатывать однострочные define'ы.

 

Ty3uKДата: Понедельник, 04 Июнь 2012, 15:34:39 | Сообщение # 188
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки:
он и не должен их обрабатывать. согласен, алгоритм так себе, но все же лучше, чем без цжасса (;

 

DragoNДата: Понедельник, 04 Июнь 2012, 17:37:00 | Сообщение # 189
Инквизитор
Группа: Ветераны
Сообщений: 4045
Награды: 6
Репутация: 2200
Блокировки:
Quote (Dreii)
Иди учи матан!

матан не матчасть, если что
апишник видел ещё не в готовом вариант, молодец)

Добра тебе! | Стримы с Владом
(╮°-°)╮┳━━┳ Взял стол.
( ╯°□°)╯ ┻━━┻ И устроил дебош!
жопа не рука, с ней шутки плохи © Privitalik
 

Ty3uKДата: Понедельник, 04 Июнь 2012, 17:59:30 | Сообщение # 190
10 уровень
Группа: Проверенные
Сообщений: 4429
Награды: 0
Репутация: 678
Блокировки:
спасибо :3

 

Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » JASP (Just Another Script Preprocessor)
Страница 8 из 8«12678
Поиск:

Copyright © 2006 - 2012 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©