Skip to content
This repository has been archived by the owner on Oct 25, 2020. It is now read-only.

DSL for university class scheduling. Built with Antlr.

License

Notifications You must be signed in to change notification settings

tugas-itb-erick/dsl-class-scheduler

Repository files navigation

DSL Class Scheduling

Tugas IF4150 Rekayasa Perangkat Lunak Spesifik Domain

Overview

This is a DSL (Domain Specific Languange) project made with Antlr and Java. The domain is about Class Scheduling. Class Scheduling is a domain that is very common in both universities and schools. Our aim is to create Class Scheduling DSL that is easy to use, do not have complex syntax, and provides most uses cases needed in real life class scheduling.

In the DSL, we implement several use cases:

  1. User can define Courses, Classrooms, Classes, and Lecturers.
  2. User can define Classrooms capacity and their facilities.
  3. User can specify Courses' facility needs.
  4. User can specify Lecturers' availability.
  5. User can specify Courses that should not be held at the same time.
  6. After user specify all the constraints above, user can automatically generate the schedule that satisfies all the constraints

Running the project

  1. Clone this repository.
  2. Open IntelliJ IDEA, import as gradle project.
  3. Install the plugins.
  4. Execute gradle build.
  5. Run Main.java.

Writing the DSL

1. Examples

Examples can be viewed in the example input file.

2. Running the DSL

To run your DSL code, simply put your code in resources folder. In main program, change:

InputStream is = Main.class.getResourceAsStream("data.txt");

to

InputStream is = Main.class.getResourceAsStream("yourFileName.yourFileExtension");

Documentation

https://docs.google.com/document/d/1PdZ7FJ2zcIwpBq8XltUSvhKnQsJdPg1CKU6YcXmI1-E

Plugins

  1. Antlr
  2. Lombok

Contributors


Roselina P
13515034

Erick Wijaya
13515057

Kezia Suhendra
13515063

Rachel Sidney
13515124

Releases

No releases published

Packages

No packages published