Skip to content

SrebroN/Programski_Prevodioci_1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MikroJava Compiler

English

This project implements a compiler for the MikroJava programming language. The compiler translates syntactically and semantically correct MikroJava programs into MikroJava bytecode, which is executed on the MikroJava Virtual Machine (MJVM).

The compiler provides the following core functionalities:

1. Lexical Analysis

  • Implemented using Lex.

  • Identifies language lexemes and produces a sequence of tokens from the source code.

  • Reports lexical errors with descriptive messages.

2. Syntax Analysis (Parsing)

  • Implemented using CUP.

  • Utilizes a bottom-up LALR(1) parser to check whether tokens form grammatically correct sentences according to the MikroJava grammar specification.

  • Provides feedback on successful parsing or detailed error reports in case of syntax errors.

  • Supports error recovery to continue parsing after encountering syntax issues.

3. Semantic Analysis

  • Performed on the Abstract Syntax Tree (AST) built during parsing.

  • Uses a visitor-based approach to check declarations, type rules, scope resolution, and other semantic constraints, and to generate symbol table.

  • Reports semantic errors with clear explanations.

4. Code Generation

  • Translates syntactically and semantically correct programs into MikroJava bytecode for execution on the MJVM.

  • Uses AST traversal and visitor methods to generate instructions.

Srpski

Ovaj projekat predstavlja kompajler za programski jezik Mikrojava. Kompajler prevodi sintaksno i semantički ispravne Mikrojava programe u Mikrojava bajtkod, koji se izvršava na Mikrojava virtuelnoj mašini (MJVM).

Kompajler obuhvata sledeće osnovne funkcionalnosti:

1. Leksička analiza

  • Implementirana pomoću Lex alata.

  • Prepoznaje jezičke lekseme i formira skup tokena iz izvornog koda.

  • U slučaju greške, ispisuje odgovarajuću poruku.

2. Sintaksna analiza (parsiranje)

  • Implementirana pomoću CUP alata.

  • Koristi se bottom-up LALR(1) parser koji proverava da li tokeni čine gramatički ispravne rečenice u skladu sa gramatikom Mikrojave.

  • Obaveštava korisnika o uspešnosti parsiranja ili ispisuje detaljnu poruku u slučaju greške.

  • Implementiran je i oporavak od grešaka radi nastavka parsiranja.

3. Semantička analiza

  • Zasniva se na apstraktnom sintaksnom stablu (AST) koje se formira tokom parsiranja.

  • Implementirana kroz metode za posećivanje čvorova AST-a radi provere deklaracija, tipova, opsega i drugih semantičkih pravila, kao i generisanje tabele simbola.

  • U slučaju greške, ispisuje jasne i precizne poruke.

4. Generisanje koda

  • Prevodi ispravne programe u Mikrojava bajtkod za izvršavanje na MJVM-u.

  • Koristi metode za obilazak AST-a i generisanje instrukcija.

About

A compiler for imaginary MikroJava programming language, written in Java

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors