Saief1999 / QIde

An IDE with an embedded, hand-written, java compiler

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

QIde

Overview

This is a mini java compiler. Written in Flex (Lex) and Bison (Yacc). In addition to a GUI written in QT6 and Qt Widgets

Warnings & Errors

Code Generation

Technical Overview

Core

The QIde-core represents the core functionalities of the compiler. It accepts text from a file, analyzes it and generates the appropriate syntax and semantic errors.

It's possible to run The Core application as a standalone. For more instructions check The Core README

Components

  • The analyzer is written in flex

  • The syntax scanner is written in bison. Based on a minified version of the java Grammar

  • The semantic analysis uses a symbol table : a list of hashmap ( each represeting a scope ). Check the source code for more info

GUI

The QIde-gui represents the Gui application. The Gui is written entirely in Qt 6 and Qt Widgets. No Ui files have been used in the process ( meaning all the components are written as code, offering more flexibility). For more information check The Gui README

Build

The entire project is built with cmake (linking the core and the gui sources).

To compile from source start by running

cmake . -B build

Note

If there is an issue with Qt not being found, do one of the following:

  • Add QT_DIR as an environment variable and call cmake again
  • Or, you can call cmake with the following additional argument -DCMAKE_PREFIX_PATH=/path/to/qt/gcc, or any other compiler used by cmake

This will generate some build files. Based on your system and on the available Build system Generator the next command might differ. If you're using make as a build generator ( changed in the cmake config ) then simply run

cd build
make

Usage

After the build phase, a binary QIde will be generated. That's your entry point to the Gui application. You'll only have to execute it:

./QIde

About

An IDE with an embedded, hand-written, java compiler


Languages

Language:C++ 57.6%Language:Yacc 27.4%Language:LLVM 7.1%Language:Lex 4.1%Language:CMake 2.7%Language:Makefile 0.8%Language:Shell 0.2%Language:Java 0.1%