A Compiler implemented as an assignment for the Compilers course. It is
designed for the LCPL programming language, an object oriented language
created for academic purpose.

    The implementation follows 3 steps:

1.  Semantic analysis
        Done using ANTLR4 parser generator. Using visitor design pattern,
    a syntactic tree was created from lcpl source code and serialized to disk.
2.  Syntactic analysis
        The syntactic tree is imported from the serialized format and parsed
    in order to find syntactic errors. Additional information is collected and
    inserted into the tree nodes.
3.  Code generation
        The tree is parsed once again to generate code using LLVM IR. This
    "assembly" code can be compiled to binary using LLVM tool suite.


Vladimir Cernov