Alexey Yakovlev
Selected projects
Main page
Latest news
Selected projects
File downloads
Foreign projects
Related links
Control panel
Site language
Russian (default)
Color palette
Violet (default)
Bricks in the Wall
Silver Shadows
Thin Lines
Rendering style
Graphical (default)
Text only (for printing)


This section provides short descriptions of my selected projects, including very old ones. If you are interested in more details, please feel free to e-mail me. Please state what project (language or/and compiler) exactly do you mean to help me answer you quickly.


This project consists of two parts: Yalgol/02 algorithmic language and Yalgol/02 compiler for Win32 platform (also implemented in Yalgol/02, of course). Yalgol is an imperative object-oriented programming language, derived from Ada, Java, Pascal and C++. It is still under development, and the next generation of the language will hopefully introduce lots of new features.

Some papers related to the Yalgol project (some of them may not yet be published or translated from Russian):

Archives containing documentation and the compiler source code can be obtained from the File downloads page.

Other projects

I have some projects not related to Yalgol language. They are still active and can be updated from time to time. Projects that aren't updated anymore went to the Outdated Projects section (see below)

Brainf*ck compiler

This is probably the smallest ever compiler for the IBM PC platform. The executable has size of 161 bytes. It is DOS COM-file, and it generates COM-files too. The source language is called Brainf*ck, it was created by Urban Muller as the language for which he could write the smallest ever compiler. His compiler, written for the Amiga OS 2.0, was 240 bytes in size. He improved this result later to something less than 200 bytes.

Writing Brainf*ck programs gives even more pleasure than writing the microscopic compilers for the language. I was suddenly surprized that there are many fans of this captivating exercize all over the world. It seems that the language justifies its name.

Hypertext compressor

Somewhat amusing HTML code compressor, written in Perl. Can compress HTML, Javascript, CSS and even PHP (I still have no idea what for) – of course, using different algorithms for every kind of code. Any method can be switched off via command line switches. Can achieve good compression ratio IMHO.

HTML loses comments, extra spaces, unused quotes in attributes (for example, Width="0" becomes Width=0). In Javascript and CSS parts of code removes comments and spaces separating tokens of different classes.

The compressor behaves in a quite rational way. I don't remember all things it can do and don't have much time to figure it out. To get the script working, you need Perl 5.005 and some initial skills (like script execution ability). I can't provide any documentation on this topic, but it's easy enough to find using any search engine.

Outdated projects

Here are brief descriptions of my old projects which were published on prior versions of my homepage. These projects weren't updated for a long time, and I left them here just for so-called backward compatibility.

Why (Why not a Compiler?)

My first 32-bit production. Simple compiler of Forth-like language Why into i386 assembler source code. It was written on the base of my old 16-bit compiler of the same language.

It can generate pretty efficient code which executes significantly faster then the code generated by most Forth compilers. Top stack elements are cached within the CPU registers, that's why dup, drop, swap and rot words usually don't produce any executable code, but influence the further code generation instead.

The language just looks somewhat like Forth with some variations, as affected by C and Algol. It is very different language indeed, not compatible with the original Forth. Although it contain most of control flow structures from Forth, it has very different runtime library. The standard library of Why includes some specific stack-oriented functions, string and numerical routines, and console I/O. There is also an additional library for 256-color VGA graphics, very fast and effective. It contains some Bresenham algorithms implemented in Why.

Why project-related materials:


The first compiler of Yalgol family (source language is Yalgol/01).

It was written in a hurry, and for my personal use only. This was yet another compiler based on Why engine. Yalgol/01 language has type checking, procedure overloading, dynamic memory allocation and objects (but it don't support structures, pointers and even arrays). Though it's too simple at first sight, the language is quite nice and handy to write serious things like compilers for the next generation language.

This project have never been published. I didn't want to complete and polish it to release, and it had some bugs and inconvenient incompletenesses, that's why it remained my own tool which I used to create Yalgol/02.

JadScript (Just Another Data Definition Scripting Language)

Object hierarchy description language. Absolutely accidental project, written in a day or so.

This specific project was made up mostly over my laziness, just not to bother myself learning some existing technologies. The project was developed as a solution for the very concrete task, as a tool to store the project files of the SOFT-CAD, but the language seemed to be relative multi-purpose. For example, any HTML document can be converted to JadScript and back again without any data loss (if you are earnest about the task ;)

The concept of this language is rather simple as it includes only three elements: object, type and attribute. Any object is characterized by its type, set of attributes and child objects (objects of the next level of hierarchy). I wanted to use these elements to describe any hierarhic system with a tree-like structure.

The compiler for this language, as well as JAL01 compiler, was written on the base of Why compiler engine. This engine seemed suitable enough for my purposes, and I was too busy to write something more suitable. The language design is a bit similar to Yalgol family.

As usual, there is no any documentation, but there are source codes and samples. By the way, the language seems to be too easy to be serious about the documentation. Examples should be enough.

Copyright © 2000-2003 YALLIE, Inc. All Rights Reserved
Используются технологии uCoz