It is a compiler for C-- programming language. (You can see C-- Documentation)
In Phase 1, the lexer of C-- is made in Cmm.g4 using Antlr.
In Phase 2, the AST is constructed from lexical analysis and the symbol table is filled. Finally, it shows up semantic errors.
In Phase 3, the remaining errors are shown and type-checking is done.
In Phase 4, Java bytecode of the C-- program will be generated.
Checking grammar of language.
- Cyclic Dependency
- Duplicate Function
- Duplicate Struct
- Duplicate Variable
- Function & Struct Name Conflict
- Variable & Function Name Conflict
- Variable & Struct Name Conflict
- Reference to an undeclared variable
- Unsupported usage of operand type
- Type-checking all conditions and statements
- Unsupported usage of function calls
- Not validation of left side of assignment
- Return type validation
- and all other compile errors...
- All of the code generation process is handled in this phase.
- This compiler generates Java bytecode using jasmin assembler.
- After all, the Smoola program is run on Java Virtual Machine.
You should at first generate Cmm.g4 grammer using Antlr. For more info about Antlr visit This Page.
You should run the whole Java project. For running that you can use CmmCompiler.java script. If you run this code, it runs the whole project easily.
After running the Java project, Java bytecode will be generated in the output
folder. Then it's time to run the generated code.
First go to the output
directory in terminal. Then run
java -jar jasmin.jar *.j
and then it will create corresponding Java classes. Then you should run the program through executing your main class:
java <MainClass>