Web Site: https://www.victella.me/ETAC/
Alternative: etac.victella.me

e-mail: etac@victella.me


The Official Website of the
ETAC Programming Language

Site Last Updated:  17 December 2018

About ETAC

ETAC (pronounced: E-tack) is an acronym for Enhanced Token Activated Code, that is to say, a “token activated language” (similar to the so-called “concatenative” languages) with an enhanced syntax.  The ETAC programming language is, arguably, the first of an evolutionary step of dictionary and stack based token activated programming languages, capable of full traditional high-level block structured syntax with the versatility and efficiency of a token activated stack-based language.  Most programming languages are written by computer academics who have extensive experience with programs written by student “programmers” which is reflected in the programming languages designed by those academics.  The ETAC programming language is designed for professional programmers, meaning programmers having a professional attitude, not necessarily programmers who work in industry or who have many years of experience.

As an experienced (but retired) software engineer who is also a (non-practising) pure mathematician, I, Victor Vella, created the ETAC programming language to be reasonably permissive — the restrictions are to be with the programmer not the language.  The language is not designed with the restrictions to cater for amateur programmers (including student “programmers”) as most programming languages are today.  The ETAC programming language is entirely original; it is not based on any other programming language.

For an overview of the ETAC programming language with examples, open or download the document ETACOverview.pdf.  The official definition of the ETAC programming language is presented in the document ETACProgLang(Official).pdf (over 370 pages).

This is the first beta release of the ETAC programming language, so naturally some adjustments will probably need to be made in the first few releases.

Note that the following dates are in the form DMY.

Latest Versions

ETAC Programming Language: 1.1 (beta) released on 15/05/2018.
ETAC Interpreter (RunETAC.exe): 2-0.1-6-ena (beta) released on 15/05/2018.
ETAC Interpreter (AppETAC.dll): 2-0.1-6-ena (beta) released on 15/05/2018.
ETAC Compiler (ETACCompiler.exe): 1-0.1-6-ena (beta) released on 15/05/2018.
ETAC Source (collectively): 1-ena released on 15/05/2018.

First Release

The first (beta) version of the ETAC programming language was version 1.1 released on 15/05/2018.
The first (beta) version of the ETAC interpreter was version 2-0.1-6-ena released on 15/05/2018.
The first (beta) version of the ETAC compiler was version 1-0.1-6-ena released on 15/05/2018.
The first version of the ETAC source files was version 1-ena released on 15/05/2018.

Release Type

The ETAC system is propriety software released under licence.  It is free of charge but its use is subject to licence restrictions.  The ETAC interpreter and ETAC compiler is written in the C++ programming language.  The source code for the interpreter and compiler is not released to the public, but some ETAC system code written in ETAC text script is released to the public.

Current Licences

Run ETAC Scripts: RunETAC Licence 1 (RE-Lic-1)
ETAC for Applications: AppETAC Licence 1 (AE-Lic-1)
ETAC Compiler: RunETAC Licence 1 (RE-Lic-1)
ETAC Source: ETACSource Licence 1 (ES-Lic-1)


ETAC is released only for the Windows® operating system using the x86 (32-bit) architecture beginning with Windows® XP.  It is not released for any other operating system and is unlikely to be so in the future.  It is expected to operate correctly on any Windows® operating system compatible with the one mentioned.  ETAC has been tested on Windows® XP (x86) and Windows® 7 (x64).

Documentation Languages

The ETAC documentation and licences are written in the Australian English language only.

Code Pages

ETAC currently only recognises Western European Windows® code page 1252; ETAC text script files and ETAC strings written in Unicode are not supported.  However, it is intended that ETAC will, in the future, fully support Unicode.


ETAC is implemented with an internal standard TAC library consisting of 137 items.  Application programmers can write their own external TAC libraries in the C++ programming language to extend that set.  In addition, ETAC comes with 54 library items written in ETAC text script and considered to be part of the ETAC programming language.  External TAC libraries are expected to be released with the ETAC system in the future.

Application Program Interaction

An application program written in the C++ programming language can interact directly with the ETAC interpreter, via the ETAC for Applications dynamic linked library (AppETAC.dll).  This allows the application program to directly run ETAC code, and for ETAC code to directly call functions within the application program.

The ETAC Interpreter

The ETAC interpreter itself is compiled as a multi-threading program, but the ETAC language is not a multi-threading language and is not capable of any kind of parallel processing.  Consequently, ETAC is not suitable for real-time programming.  However, it is intended that ETAC for Applications (AppETAC.dll) will, in the future, support idle-time processing.

The ETAC interpreter executes ETAC text script directly, and also executes ETAC text script that has been compiled to binary instructions by the ETAC compiler.  The ETAC interpreter also contains an internal interactive debugger for visually tracing the activation of script tokens in ETAC text scripts when running in debug mode.

There are two forms of the ETAC interpreter:  RunETAC.exe is used to directly run ETAC program files; AppETAC.dll is called by C++ application programs for two-way communication between an application program and ETAC program files.

The ETAC Programming Language

The following paragraphs describe various aspects of the ETAC programming language.

Language Type

ETAC is a dictionary and stack based language that executes tokens in a text script using sequential reverse-flow activation.  The language is capable of full traditional high-level block structured language style syntax, as well as traditional stack-based language style, or any mixture of both.

Script Formatting

ETAC text script is written in free format style.  However, the source code formatting style described in Appendix E of ETACProgLang(Official).pdf is recommended.


In ETAC, variables are dictionary items that can contain any type of object (as defined by the language).  Variable types are allocated and checked dynamically, not at design time.

Object Types

The following table lists the different types of stack objects and their values.

Type Value
Integer An integer from –2,147,483,648 to 2,147,483,647.
Decimal A decimal number from ±2.2250738585072014 × 10–308 to ±1.7976931348623158 × 10308 and 0.0 (zero).
String A consecutive sequence of single-byte characters possibly containing escape codes.
Sequence An internal reference to any number (including zero) of indexed stack objects understood as a unit.
Procedure An internal reference to a sequence whose elements get activated.
Command A name having the syntax of a command and operator identifier.
Operator A name having the syntax of a command and operator identifier.
Memory An internal reference to a block of memory.
Dictionary An internal reference to a dictionary.
Mark A special internal integer from 0 to 7.
Null The internal integer zero.
EXE An integer representing a custom command or operator number.
Function An internal emulation of a function definition containing a procedure (ETAC function).
Data Object An internal emulation of a data structure containing a dictionary (data object).

In addition, object-oriented programming is emulated via named data objects and special commands designed for that purpose.

Data Input and Output

An ETAC program can receive input from the command line, and can also read from and write to files, the console, and dialog boxes.  Dialog boxes containing controls can be created by the ETAC programmer via resource files to receive user input data and to show data.


ETAC does not currently internally support graphics.  However, it is intended that ETAC for Applications (AppETAC.dll) will, in the future, internally support a fully featured interactive graphics system.