Navigation

projects‎ > ‎

tsPyC

For up-to-date information on tsPyC, please head over to the tsPyC page at Sqizit's new home.

The following information should not be considered current, and is retained for historical value only.

Description

TsPyC (rhymes with “spicy”) is a new programming language.  This raises the obvious question, “Why do we need another programming language?”  TsPyC is different because it is built with extension in mind.  It gives programmers the flexibility to enhance the compile-time behaviour of the language.

There numerous situations in which this flexibility could come in handy.  For instance, tsPyC gives the programmer the ability to introduce new keywords into the language and define their behaviour.  By introducing such keywords, programmers have the ability to write code that reflects more clearly what they want to happen rather than the fine detail of how it should be done.  It also allows programmers to develop domain-specific extensions to the language.

TsPyC's extensibility also gives programmers the ability to additional layers of static checking to be done during the process of compiling a program, allowing a greater degree of certainty that a program is robust.  Furthermore, the implementation of tsPyC includes a mechanism for generating C code from a syntax tree structure.  This mechanism is modular, so may be used to generate and compile C code in applications that do not rely on the rest of tsPyC, thus simplifying the task of writing programs which generate C code.

Primarily, tsPyC will:
  • compile tsPyC source code to machine code
  • allow users to customise the compilation process using Python files
  • be platform- and system-independent to the greatest degree possible.
TsPyC will also:
  • provide a Python framework for generating machine code from Abstract Syntax Trees
  • make use of the GNU Compiler Collection (GCC) for machine code generation

Status

As of November 2009, TsPyC is in a state roughly approximating completion.  That is, it works, but there are still things that should be improved about it.  It will be pushed to launchpad in the next few days.

Motivation

The motivation of this project comes from these premises:
  • Programmers should be able to generate machine code more easily.
  • Compiler preprocessors need not be as restrictive as they are.
The project aims to bring flexibility to compiled programming languages.

Documents

Č
Ċ
ď
Josh Bartlett,
Apr 18, 2009 5:32 AM
Ċ
ď
Josh Bartlett,
Nov 24, 2009 1:50 PM