GithubHelp home page GithubHelp logo

p4's Introduction

P4: EBAL

Project description:

This project is developed as a semester project on the fourth semester on AAU. The goal of the project was to design a language, and implement a corresponding compiler for the language.

The result is a compiler, built around the principles of Crafting a Compiler, ISBN-13: 978-0136067054 and the courses of the semester.

The language designed in this semester is an event based Arduino language, called EBAL, which goal is to abstract away as many details as possible regarding the communication between multiple Arduino boards. The aim is to help with making home automation easier, and to remove the boilerplate code.

The communication works by having one Master board, containing the input pins that needs to be monitored, and one or more slave boards, containing the output pins of the system.

How to use:

The project can be compiled using any java compiler. Code written in EBAL can be seen in TestFiles/CompilerTest.txt.

After compilation, the output code needs to be compiled using an Arduino IDE or compiler. The compiled code utilises a library which can be found in EBAL.Zip.
When installing the library to the Arduino IDE, follow this guide: Arduino library installation. When this is done the output code from the compiler can be run as any other Arduino code.

The output of the EBAL compiler will be multiple files, a file for the Master board, and one for each slave.
These needs to be compiled in the Arduino IDE one by one, and then be put on the respective Arduino boards. When compiling the files through the Arduino IDE, each file needs to be added to a folder with the same name of the output file.

General code overview:

The compiler is implemented using a recursive descent parser, as the designed language is LL(1).

EBAL was designed and implemented as a semester project, and is therefore not fully implemented. The language does not contain any iterative control structures, arrays or strings, nor does it contain a way for the slaves to communicate with the master board.

p4's People

Contributors

arbellum avatar dkalaxdk avatar kaliahh avatar livholm avatar michelleterpling avatar soenderby avatar

Stargazers

 avatar  avatar

Watchers

 avatar

p4's Issues

Scanner

  • Regular Expressions
  • Switch case?
  • DFA?

Type Rules

Hvordan må typerne bruges? Nok mere under semantics

Fix Criteria

Flyt Criteria ind under Language design som en section, efter Paradigms.

Beskriv Arduino sproget. (loop, setup, osv)

Kun analysere Serial, Wire og Eventually i betragtning som libraries

“Spred” Criteria Focus ud på de andre afsnit, så de hver især konkluderer på hvad vi tager med, og hvorfor de ikke helt er gode nok. Så criteria focus kommer ikke til at eksistere efterfølgende.

Lav evt en summary der er resten af criteria focus

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.