Back to work

Final-year Computer Science project

TongaLang

An educational interpreted programming language using Tonga-based keywords and a desktop IDE.

Active development2025–2026Private source
Programming LanguageTongaLangPython · PLY · Tkinter · Pytest · AST · .tg files
Role
Developer & Researcher
Status
Active development
Year
2025–2026
Stack
Python · PLY · Tkinter · Pytest · AST · .tg files

01 · Context

The problem

Beginner programmers may need to learn programming concepts and interpret unfamiliar English syntax at the same time, adding linguistic and cognitive load.

The response

TongaLang explores introductory programming through Tonga-based keywords while preserving familiar computational concepts. It is an educational language, not a replacement for mainstream production languages.

02 · Contribution

What I built

  • 01

    Researched minimal languages and interpreter construction before implementation.

  • 02

    Mapped programming concepts into Tonga through linguistic research and consultation with native speakers.

  • 03

    Built a terminal interpreter, then separated the language engine from a Tkinter IDE-style interface.

  • 04

    Created automated tests and deliberately invalid programs to test failure behaviour.

03 · Implemented evidence

Current
capabilities.

Custom lexer and parser
Abstract Syntax Tree and interpreter
Variables, arithmetic and Boolean logic
Conditions and multiple loop structures
Functions, scope and break statements
Input, output and explicit type conversion
Bilingual Tonga and English errors
Syntax highlighting and debug tools
.tg file support
Pytest regression suites

Execution pipeline

From source to
feedback.

  1. Source .tg program
  2. Lexer tokens
  3. Parser grammar
  4. AST structure
  5. Interpreter runtime
  6. Output or bilingual error

04 · Engineering

Hard parts,
clear decisions.

Useful bilingual errors

Lexical, syntax and runtime failures needed controlled feedback that preserved technical meaning without exposing raw Python exceptions.

Graphical program input

Moving from terminal input to Tkinter required execution state to pause and resume without freezing the interface event loop.

Growing without regressions

Each feature could affect tokens, grammar, AST nodes, runtime behaviour, highlighting and existing programs, so changes were mapped across every layer and regression-tested.

05 · Reflection

What I learned

Compiler and interpreter fundamentalsGrammar and AST designRuntime environments and scopeGUI integrationAutomated and adversarial testingEducational language design

Planned or still in development

  • Continued IDE polish
  • Expanded learning examples and documentation

Private repository inspected locally: lexer, parser, AST, interpreter, bilingual-error modules and automated tests are present.

Open to opportunities

Let’s discuss your role,
product or technical challenge.

Open to graduate software roles, internships, freelance projects, remote work, local business systems, startup partnerships and technical collaborations.

Start a conversation