vrJASS Language
What is vrJASS?
A just-for-fun programming language which compiles down to JASS (Warcraft 3). It aims to improve and replace the beloved vJASS.
What? x2
An update to vJASS which tries to solve its flaws.
I want to try it! - I need a manual
https://github.com/Ruk33/vrJASS/wiki
Last version
https://github.com/Ruk33/vrJASS/releases
Like SublimeText?
Here, a linter: https://github.com/Ruk33/SublimeLinter-contrib-vrjasslint
TODOs
Green -> Done
When is it gonna be ready?
It already is on an stable version!
Where can I see the progress/code?
https://github.com/Ruk33/vrJASS
How can I help you?
If you know Java or Antlr4 you can check the repository and send me pull requests (don't worry if you don't know too much about them, I'm new too!). If you don't know these languages, let me know your suggestions, I'm open to them
So there will be no changes for the final-user (you), it will be like coding with the actual vJASS in my current setup in Newgen without any weird stuff, right?
Kinda. Yes, it is gonna be the same syntax, same features (excepting just a few that no one uses) but with a few and hopefully useful new features like better error messages, free variable definition (not only at the beginning), new loops, etc..
Few examples
Anonymous functions
Free variable definition
Operators +=, -=, *=, /=
Improved loops
Null/0 conditional
What does vr mean?
Pick the one you like the most:
Greetings.

What is vrJASS?
A just-for-fun programming language which compiles down to JASS (Warcraft 3). It aims to improve and replace the beloved vJASS.
What? x2
An update to vJASS which tries to solve its flaws.
I want to try it! - I need a manual
https://github.com/Ruk33/vrJASS/wiki
Last version
https://github.com/Ruk33/vrJASS/releases
Like SublimeText?
Here, a linter: https://github.com/Ruk33/SublimeLinter-contrib-vrjasslint
TODOs
- 80%-100% (I'm planning not to implement a few features, like function interfaces, but if anyone can/want-to code it, will be welcome) compatibility with vJASS
- Improve debug messages
- Fix (module) initializations (implemented as abstract classes)
- Improve OOP (type-safety, attributes initialization, etc.)
- Anonymous functions
- Free variable definition
- Add operators +=, -=, *=, /=
- Improve/add loops
- Null/Empty string/0 Conditional (null->false, "" -> false, 0 -> false)
Auto-null local handle variablesOptimizers do this alreadyReturn arraySimply use structs- Allow
end
as alternative toendfunction
,endmethod
,endloop
, etc. Hooks (before/after)?Delegated to cJASSAlternative C-like syntaxDelegated to cJASS
Green -> Done
When is it gonna be ready?
It already is on an stable version!
Where can I see the progress/code?
https://github.com/Ruk33/vrJASS
How can I help you?
If you know Java or Antlr4 you can check the repository and send me pull requests (don't worry if you don't know too much about them, I'm new too!). If you don't know these languages, let me know your suggestions, I'm open to them
So there will be no changes for the final-user (you), it will be like coding with the actual vJASS in my current setup in Newgen without any weird stuff, right?
Kinda. Yes, it is gonna be the same syntax, same features (excepting just a few that no one uses) but with a few and hopefully useful new features like better error messages, free variable definition (not only at the beginning), new loops, etc..
Few examples
Anonymous functions
JASS:
call TimerStart(..., function takes nothing returns nothing
local timer expiredTimer = GetExpiredTimer()
// ...
endfunction)
JASS:
function foo takes nothing returns nothing
call TimerStart(...)
if (...) then
// ...
endif
local unit bar = CreateUnit(...)
endfunction
JASS:
local integer i = 5
set i += 5 // same as set i = i + 5
set i -= 5 // same as set i = i - 5
set i *= 5 // same as set i = i * 5
set i /= 5 // same as set i = i / 5
JASS:
while (true)
if (shouldSkipThisIteration) then
continue
endif
// ...
if (isOver) then
break // same as exitwhen true
endif
endwhile
JASS:
local unit u = null
if (u) then
// unit isn't null
else
// unit is null
endif
local MyCustomStruct instance = ...
if (instance) then
// instance exists (allocated)
else
// instance does not exists (not-allocated)
endif
What does vr mean?
Pick the one you like the most:
- Beer (default), because everyone loves beer
- Vexorian r$~%d-newbetterversionftw
- Vexorian Ruke
Greetings.
Last edited: