Pascal with Truffle
Thesis title in Czech: | Pascal nad Trufflem |
---|---|
Thesis title in English: | Pascal with Truffle |
Key words: | Pascal, Truffle, JIT překladač |
English key words: | Pascal, Truffle, JIT compiler |
Academic year of topic announcement: | 2016/2017 |
Thesis type: | Bachelor's thesis |
Thesis language: | angličtina |
Department: | Department of Distributed and Dependable Systems (32-KDSS) |
Supervisor: | Mgr. Vojtěch Horký, Ph.D. |
Author: | hidden - assigned and confirmed by the Study Dept. |
Date of registration: | 27.10.2016 |
Date of assignment: | 03.11.2016 |
Confirmed by Study dept. on: | 29.11.2016 |
Date and time of defence: | 06.09.2017 00:00 |
Date of electronic submission: | 21.07.2017 |
Date of submission of printed version: | 21.07.2017 |
Date of proceeded defence: | 06.09.2017 |
Opponents: | RNDr. David Bednárek, Ph.D. |
Guidelines |
The goal of the thesis is to design and implement an interpreter of the Pascal programming language using the Truffle framework (a library for writing interpreters on top of Graal/Java VM).
The interpreter will support the original language specification (as designed by Niklaus Wirth) as well as some extensions provided by the well-known Turbo Pascal compiler. Among the supported extensions of Turbo Pascal will be (long) strings, additional integer types, units (modules) and a selected subset of the standard units (base libraries). Where possible, the functionality would mimic the original behavior closely (e.g. basic file operations from the DOS module) with a reasonable fallback. Unsupported features (e.g. inline assembler) must be reported to the user without actually starting the interpretation. The goal of the thesis is to create a functional environment for Pascal that is open to extensions and integration. It must be possible to add new system units to the environment as well as add new language constructs without breaking compatibility with existing programs. The interpreter must be easily integrated into bigger programs where it can serve e.g. as a scripting engine. The interpreter is expected to work as a command-line utility (any binding to OS must use Java-provided API). Although the goal of the thesis is not to create a performance-optimized interpreter, the performance aspect can not be omitted and at least a comparison with other compilers must be present in the thesis. |
References |
[1] Niklaus Wirth: The Programming Language Pascal (Revised Report), 1973.
[2] Borland International Inc.: TURBO Pascal 7 Reference Manual, 1992 [3] Truffle: https://github.com/graalvm/truffle, 2016 [4] Alfred V. Aho et al.: Compilers: Principles, Techniques, and Tools, 2006 |