Tool AdicHelper - A cJass parser

Van Damm

New Member
Reaction score
7
Everything that works in vJass, works in cJass.

The compiler chain is: World Editor -> AdicHelper -> JassHelper -> resulting war3map.j
 

Frozenhelfir

set Gwypaas = Guhveepaws
Reaction score
56
Woops, I must just be retarded :(

Ran into a peculiar bug with cJass that I don't recall running into with vJass

JASS:
struct A{
    group immune
}

private group immune

void B(){
    A D = A.create()
    immune = D.immune
}


It tries to add the scope prefix onto D.immune, and then says it isn't a member of A.

Found another one:

JASS:
A bah = A.create()
struct A{
}


It doesn't recognize struct A if you declare the global above it.
 

Van Damm

New Member
Reaction score
7
New development version is out: 1.4.1.1


In this dev version we've implemented removal of unused functions from resulting map script. Example follows:
JASS:
void f_00 (int i) {}
void f_01 () {}

After saving the map with Optimizer turned on you won't find the [ljass]f_00[/ljass] function in the resulting map script. But if you modify the code:
JASS:
void f_00 (int i) {}
void f_01 () { f_00 (0) }

then both functions will remain in the map script. The first function was removed because it's considered optional (you won't execute it using Execute func because it takes arguments and there are no direct calls to it), [ljass]f_01[/ljass] could possibly be executed somewhere, so it won't be removed.


And now a question to users: we want some keyword to indicate functions without arguments that are not executed by ExecuteFunc and can be easily removed if not used elsewhere. We suggest optional:
JASS:
optional void fx () {}
 
Reaction score
341
All of these script optimizations shouldn't be done in cJass -_-

cJass should strictly just be a precompiler, use an optimizer for script optimizations.
 

Van Damm

New Member
Reaction score
7
This optimization is done only if "Enable AdicOptimizer" menu entry is checked. I hope ADOLF will move all other optimizations there too =)

And, btw, Vex's optimizer doesn't remove excessive code.
 

Jesus4Lyf

Good Idea™
Reaction score
397
I like what you're doing. I think optimisations should be done at this level, personally.

I have a request. For this request, I think I'd throw out everything for cJass.
  1. Allow overriding the "destroy" method completely on structs (but allow that method to call the real "destroy").
  2. Allow multiple modules to write multiple onInit methods, and if possible, onAllocate and onDeallocate or something.
What do you think? :)

Edit: Don't worry, seems I finally contacted Vex. o_O
And it looks like he's willing to fix stuff.
 

Narks

Vastly intelligent whale-like being from the stars
Reaction score
90
For your optimizer, maybe make it create a report of all the functions that could be optimized, but have not (because of execfunc stuff)?
 

Sevion

The DIY Ninja
Reaction score
413
Ditto. But somehow, I've never had it when I used both AIDS and cJASS ;) So so far, it's not been a problem. But it would prove to be problematic if I did use AIDS and cJASS at the same time.
 

Lyerae

I keep popping up on this site from time to time.
Reaction score
105
Or if the cJASS compiler had something like //! cjass and //! endcjass, which it ignores anything not in those tags.
 

Sevion

The DIY Ninja
Reaction score
413
Or perhaps a way you can mark a trigger to not parse? Like, if you could right click the trigger on the left pane, and click "Don't cJASS Parse" or something.
 

Frozenhelfir

set Gwypaas = Guhveepaws
Reaction score
56
OR just have it ignore things in those tags. This way you only have to use it on a few systems that don't work if you are coding the whole map in cjass like I am :eek:
 

Sevion

The DIY Ninja
Reaction score
413
Well, with the tags, you'd have to scroll back and forth in the library and that can get tiring if it's a large one. (Or be smart and use the scroll bar...)

If you cold easily just right click the trigger object and click "Don't Parse" that'd be simpler. Not as simple to code, but simpler in the end result.
 

Van Damm

New Member
Reaction score
7
@Frozenhelfir:
The latest development version (1.4.1.20) compiles the latest version of AIDS without errors. You just need to update from development branch if you use stable version.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top