This is the new version of my compiler vrJASS. It aims to have a very high percentage of compatibility with vJASS. In fact, that is the primary goal of this project.
- 100% compatibility with vJASS
- LanguageServer (service to provide autocompletes, errors, etc. in editors)
ANTLR Version: 4.5.3
cd path/to/vrj
./gradlew buildGrammar
Does not requires the compiled grammar (it will do it automatically).
cd path/to/vrj
./gradlew build
cd path/to/vrj/builds/libs
java -jar vrjc.jar file1.j file2.j ...
For the moment, it will only translate or throw errors in the console (stdout).
Keep in mind that this is a very unstable version and many features are not implemented yet.
- src/main/java/ruke/vrj/antlr: All related to ANTLR (lexer, parser, etc.).
- src/main/java/ruke/vrj/compiler: Compile, run phases, store results.
- src/main/java/ruke/vrj/phase: Phases of the compiler. That is definition, typechecking & translation.
- src/main/java/ruke/vrj/translator: Classes that handle how each expession will be translated.
- src/main/java/ruke/vrj/util
./gradlew check
java -jar bin/google-java-format.java --relace path/to/vrj/**/*.java
It will contain information (for example, where it was declared) about an specific element (meaning variables, functions, structs, libraries, etc.).
Maps a name (string) to a symbol. It will also provide functionality to fetch these symbols.
It will handle the declaration of symbols (for example variables, functions, etc.) and it will catch already defined errors.
It will handle the checking of the program (for example if a variable is used it will check that it is in fact declared).
It will handle the translation of the program, from vrJASS to raw JASS.
Great!, here are a few steps:
- Fork the project
- Open an issue describing what are you going to be working on (so we don't duplicate efforts)
- Create a new branch from
master
to work on your feature (git checkout -b ISSUE_ID/breaf-feature-description
). - Create tests that ensure the code does what it must
- Finish the feature
- Pull request!
If you're not sure of your code, don't worry, send a pull request and we will check it together ^^
Great!, here are a few steps:
- Create an issue
- Describe the feature
- Describe the problem that solves
- Write a few usage examples
- Describe how could it be translated into raw JASS (optional)
Please keep in mind that not all feature suggestions are going to be implemented or that it could take a while to do so.
Important: your feature cannot change or break the behavior of vJASS code (remember, vrJASS2' primary goal is to achieve full compatibility with vJASS).
MIT