GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - TheSYNcoder/JuCC: JuCC - Jadavpur University Compiler Compiler

BranchesTags
Open more actions menu

Latest commit

 

History

38 Commits
38 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
benchmark
benchmark
 
 
build_support
build_support
 
 
docs
docs
 
 
script/installation
script/installation
 
 
server
server
 
 
src
src
 
 
test
test
 
 
third_party
third_party
 
 
.clang-format
.clang-format
 
 
.clang-tidy
.clang-tidy
 
 
.dockerignore
.dockerignore
 
 
.gitignore
.gitignore
 
 
CMakeLists.txt
CMakeLists.txt
 
 
Dockerfile
Dockerfile
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
codecov.yml
codecov.yml
 
 
grammar.g
grammar.g
 
 

Repository files navigation

JuCC

JuCC logo


build codecov

This is the official Jadavpur University Compiler Compiler repository.

Key Features

  • Supports a subset of the C language for now.
  • Custom grammar files to easily extend the language.
  • LL(1) parsing with panic mode error recovery.
  • Generates .json parse tree outputs for easy visualization with Treant.js.
  • 100% Open Source (Apache-2.0 License)

Quickstart

The JuCC project is built and tested on Ubuntu 20.04.

$ git clone https://github.com/TheSYNcoder/JuCC
$ cd JuCC
$ sudo ./script/installation/packages.sh
$ cd server
$ npm i
$ cd ..
$ mkdir build
$ cd build
$ cmake -GNinja -DCMAKE_BUILD_TYPE=Release ..
$ ninja jucc
$ ./bin/jucc -g <grammar_file> -f <input_file> -o <output_json_file>

To run the unit tests provided,

$ mkdir build
$ cd build
$ cmake -GNinja -DCMAKE_BUILD_TYPE=Release ..
$ ninja
$ ./bin/jucc_test

To run the benchmarks, Note: -DCMAKE_BUILD_TYPE=Release is needed

$ mkdir build
$ cd build
$ cmake -GNinja -DCMAKE_BUILD_TYPE=Release ..
$ ninja
$ ./bin/jucc_benchmark

Before pushing or making a pull request ( The tests must pass, compulsory !! )

$ ninja
$ ninja check-format
$ ninja check-clang-tidy
$ ninja check-lint
$ ninja test

To add a new unit test, make a folder with the same relative path as in the src folder, and define your test. Please refer to docs for more details about writing tests using the googletest framework.

Additional Notes:

  • If you know what you're doing, install the prerequisite packages from ./script/installation/packages.sh manually.

For Developers

Please see the docs.

Contributing

Contributions from everyone are welcome!

About

JuCC - Jadavpur University Compiler Compiler

Topics

c-plus-pluscodecoveragecompilercompiler-constructioncompiler-designlexer-analyzerlexer-parserll1-parserparsing

Resources

Readme
Apache-2.0 license
Activity

Stars

44 stars

Watchers

0 watching

Forks

2 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.