YAL – Yacine’s & Anthony Programming Language

Description

As part of the Compiler Construction course during my CYBERUS Masters module, I developed YAL, an interpreted programming language, using JavaCC and JJTree. The primary goal was to create an accessible language for beginners, inspired by the syntax of Pascal, which was the first programming language I learned in university.

Language Features:

  • Basic Structure: Includes program initialization, variable declarations, and standard control structures.
  • Data Types: Supports integers, strings, booleans, and real numbers.
  • Control Structures: Implements functions, procedures, if statements, and while loops.
  • I/O Operations: Features built-in functions like print for output and readInt, readString for input handling.

Advanced Features and Semantic Analysis:

  • Error Detection: Robust semantic analysis to identify and report various programming errors such as function duplications, type mismatches, and uninitialized variables.
  • Educational Tool: Serves as an educational platform for those new to programming by providing a straightforward and clear syntax.

Learning Outcomes:

  • Enhanced JavaCC and JJTree Skills: Gained deep insights into language parsing and syntax tree generation.
  • UI Design Challenges: Overcame complexities associated with implementing and maintaining a user-friendly language syntax.
  • Practical Deployment Skills: Acquired practical experience in developing and deploying a custom programming language toolset.

This project not only solidified my technical skills but also provided a comprehensive platform for engaging with fundamental concepts of compiler construction and language design.