This repository contains the construction of a basic compiler step by step, along with one interpreter that has been implemented on a robot's control. All topics viewed during the compilers course 2018-2 ESCOM IPN are covered.
- Introduction
- Hoc Compiler Construction
- GramBot (On Site Programable Vehicle)
- Team
- License
Is a program that translates and executes a program in one language, into a program in another language. We expect the program produced by the compiler to be better than the original.
Is a program that reads an executable program and produces the results of running that program. Usually, this involves executing the source program in some fashion.
Compiler construction is a microcosm of computer science where things like artificial intelligence, algorithms, computational theory, sistems and computer architectures all come together. Even if compilers are a well study subject, they are constantly changing by adding new features to pose new problems, changing costs and re-engineering of old solutions.
The construction of a Hoc compiler involves:
- Lexical Analizer
- Grammar Parsing
- Semantic Analysis
- Translation and simplification
All these topics are implemented in the Hoc folders, where an implementation of a Hoc Compiler applied to polynomials has been made. The compiler allows: - All basic arithmetic operations (e.g addition, substraction, etc...) - Some statistic operations (e.g mean, middle, mode, etc...) - Integration and Differentiation over polynomials. - All basic components for programming (e.g decisions, cycles, conditions, memory and so more)
A robot vehicle which can be remotely programmable on site from a desktop application, the robot uses its own interpreter allowing it to be customizable by modifying robot’s command set in an easy way. Hardware components of the robot were programed using C++ and Arduino, middleware communication using Python 3 and the interpreter using Java along with Lex and Yacc.
Grambot's codebase is within the folder "Grambot/codebase/", the folder contains the frontend and backend of the application: interface, interpreter and server comunication in Java, middleware communication in Python and finally hardware implementation in Arduino files.
This is the team that made Grambot possible:
César Cruz Arredondo | Jonathan Olea Zuñiga | Eric Alejandro López Ayala | Luis Figeroa Romero |
---|---|---|---|
Python, Java and Arduino Developer |
Java and Python Developer |
Java, Python and Arduino Developer |
Java and Python Developer |