Advanced Computing Environment![]()
[ brix-os project page ]
14dec2003removed ADD, SUB, MUL, DIV, INC and DEC names for those extensions # added RECURSE extensionCompiler status does not reflect the recent changes to the language.
Tetra compiler
(in C)Features: comments (single-line, multi-line and nested multi-line), modules, function and lambda creation and calling via the :func and :lambda accessors, recursion and tail recursion, parameter coercion, module and local variable declaration and assignment, local variable scopes, implicit module and local variable declaration, undeclaring local variables, heap object allocation, quoted variables, type definitions and slot access, type aliases, global and local pointers, never-null and null-checked pointers, boolean true and false enumerations, ascii character enumerations (literals), string literals (including multi-line strings), array element accessor (including memory arrays and strings), positive and negative array indices, compile-time and runtime bounds checking for arrays, nested arrays, IF/IF-NOT extension has ELSE, ELIF and ELIF-NOT virtual extensions, most assembler instructions via ASM, a simple register allocatorExtensions:DEFUN, DEFTYPE, DEFMODULE, CURRENT-MODULE (temporary), DEFUN-ASM (temporary), INCLUDE (temporary), SET, SET-POINTER, UNSET, SETQ, NEW, OVERLAY-TYPE, RECURSE, RETURN, IF, IF-NOT, WHILE, WHILE-NOT, FOREACH, FOREACH-REV, BREAK, CONTINUE, REPEAT, SLOT, ALIAS, TO-INT64, TO-UINT64, TO-BYTE, TO-WORD, +, -, *, **, /, MOD, ++, --, ^, BITAND, BITOR, BITXOR, BITNOT, ~, >>, <<, ==, <>, >, <, >=, <=, AND, OR, NOT, !, NAND, NOR, NULL?, NOT-NULL?, ZERO?, NOT-ZERO?, ABOVE-ZERO?, BELOW-ZERO?, ABOVE-EQ-ZERO?, BELOW-EQ-ZERO?, BETWEEN?, NOT-BETWEEN?, EMPTY?, NOT-EMPTY?, ASM, OUTPORTB (temporary), OUTPORTW (temporary), OUTPORTD (temporary), INPORTB (temporary), INPORTW (temporary) and INPORTD (temporary), PRE (partial), THROW (partial)Types:int8, int16, int32, int64, uint8, uint16, uint32, uint64, bool, char, array, memory and string lambda, func (hacked)Type Aliases:int -> int32, uint -> uint32, byte -> uint8, word -> uint16, dword -> uint32 and qword -> uint64
To Do:rewrite lexer and parser to handle new infix syntax. replace pointers with references.Missing Features:function interface levels, function templates, implicit function returns, implicit return type, mutually recursive functions, unpacked collections, optional function parameters, function parameter labels and parameter swizzling, dynamic types, undeclare module variables, SET..IN and SETQ..IN module and local variable scopes, multiple variable declarations and/or assignments, static local variables, variable histories, dynamic types, inheritance, parameterized types, default slot values, auto-generated constructors for types with primary slots, methods, type constructors and destructors, type accessors, 'variable' type modifier, type properties, submodules, virtual slots, function aliases, ranges, enumerations, bit-fields, array literals, unicode string literals, unicode character literals, lists, unions, files, streams, loop histories, platform specific code, closures, exceptions, contractsMissing Extensions:CAST-RETURN, FUNC, #, COPY, CLONE, LOCK, ORIG, OLD, SUM, LEN, MIN, MAX, INHERIT-FROM, METHOD, CONSTRUCTOR, DESTRUCTOR, DEFSET, DEFGET, DEFEXEC, CAST-TO-PARENT, DEFSUBMODULE, FOREACH-UP/DOWN, REPEAT-UP/DOWN, MATCH, CATCH, RETHROW, POST, ASSERT, PLATFORM, SET extension flags STATIC, MUTABLE and IMMUTABLEWORKS
Boot/Setup code Boot sector loads setup, setup gathers system information and loads the core. COMPLETE
Core code The existing assembler code needs to be converted to Tetra. The new DEFUN-ASM extension will allow the existing assembler code to be used without porting it. This is a temporary solution until ASM supports all required instructions.
some code
Device code The existing assembler code has drivers for floppy, keyboard, text screen and partial vga/vesa support. This code needs to be converted to Tetra. The new DEFUN-ASM extension will allow the existing assembler code to be used without porting it. This is a temporary solution until ASM supports all required instructions.
---
Tetra shell, compiler and assembler To Do: port Tetra compiler, add extension support to compiler, write an editor/shell, write an assemblernon-existant
Graphical User Interface - non-existant
Copyright © 1995-2005 Brand Huntsman ( best viewed with text-only and gecko browsers )