Skip to content
Oberon family of languages to C translator for ARM, x64 and x86 architectures
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Arch
Bin
Bin64
Docu
Examples
Lib
Linux_arm
Linux_x64
Linux_x86
Mod
Obj
Obj64
Rsrc
Sym
Sym64
+Text.bat
.gitignore
License.txt
QuickStart.txt
Readme.txt

Readme.txt

Ofront+
=======

is a tool that translates Oberon-2 programs into semantically equivalent C programs. Full error analysis is performed on the Oberon input program and in case of no errors up to three files are generated as output.

Ofront+ does not invoke the C compiler or linkage editor. This may be done in separate shell scripts or make files and is inherently dependent on the C compiler and linkage editor being used.

Although normally not read by the user, the C code generated by Ofront+ is kept as readable as possible, nicely formatted, should not produce any C compiler error messages or warnings and is tuned for efficient execution. In fact, an Oberon program translated by Ofront+ can be expected to execute as fast and read as well as an equivalent hand-coded C program.

Ofront+ is based on Ofront by Josef Templ, but some of Component Pascal features was added (IN parameters, BITS(int) & ORD(set), arithmetic type BYTE, etc). It also contains the extra extensions, such as constant arrays (implemented by Oleg Komlev).


Ofront+ differences from Ofront/voc
===================================

  1. New experimental dialect Oberon-3 (based on Oberon-07, Component Pascal & other).

  2. Outputs a module name and position for any runtime error, HALT and ASSERT.

  3. New SYSTEM types: INT8, INT16, INT32, INT64, ADRINT.

  4. Allows arithmetic operations with the type BYTE (Oberon-3 & Component Pascal).

  5. Allows the unlimited length of constant strings (in Ofront/voc the maximum is 255 characters).

  6. Allows SYSTEM.VAL(INTEGER, {80000000H..0FFFFFFFFH}) as a constant of 32-bit type (otherwise 64-bit).

  7. ASH and SYSTEM.LSH return the INTEGER type result for INTEGER type argument, and LONGINT type result for LONGINT argument. It allows to use shifts without using 64-bit type.

  8. Support "_" in identifiers.

  9. Ofront+ for Windows works under Windows 9x. Ofront+ for Linux supports both 32 and 64 bits.

  10. Support UTF-8 encoded sources (with or without BOM) with EOL as 0DX (Oberon System), 0AX (UNIX/Linux) & 0DX+0AX (Windows).

  11. "Right FOR" (concept by Oleg Komlev), constant arrays available in Oberon-3 (yet only in Ofront+ for BlackBox).

  12. BITS(), ORD(set), LEN(string$), str1 := str2$, IN procedure parameters (in Component Pascal).

  13. ORD(bool), ORD(set) supported in Oberon-3.

  14. Arithmetic operations DIV0 and REM0 for integers, as in GPCP.

  15. SYSTEM flags: VAR [nil], ARRAY/RECORD [untagged], POINTER [untagged] as in BlackBox.

  16. Advanced features for describing bindings to foreign libraries, system flag [stdcall].

  17. It's possible to use modules written in Oberon, Oberon-2, Component Pascal & Oberon-3 together in one project.

  18. Tested with GCC/MinGW, Intel C++, SDCC and even Borland Turbo C.


Get it!
=======

Here are two versions:

  1. Ofront+ for Windows & Linux command line

  2. Ofront+ for BlackBox Component Builder (runs as a subsystem)

You can download it at https://github.com/Oleg-N-Cher/OfrontPlus


Ofront+ now is in active development and we provide free support of the project.

To discuss and ask questions, you can subscribe to the group:

  https://groups.yahoo.com/neo/groups/ofront/info

or join the forum:

  http://zx.oberon2.ru/forum/

Your comments and suggestions are welcome.


Ofront+ team,
2014-2018
You can’t perform that action at this time.