[an error occurred while processing this directive] Objective Modula-2 · Official Website [an error occurred while processing this directive]

Objective Modula-2

Latest Update: July 24, 2010


Frequently Asked Questions

Objective Modula-2 Compiler Sources

Other Objective-C Inspired Hybrid Languages

The Modula-2 Webring

Visitor Map

Visitor Map - Click to view visits

Modula-2 + Smalltalk OO

A most versatile combination

Doc Icon

Objective Modula-2 is a reflective, object oriented programming language with dynamic message dispatch (late binding) and both static and dynamic typing. Its object system is based on the object model of Smalltalk and it uses the runtime library of Objective-C to support the Cocoa and GNUstep APIs natively.

The design is an example how native support for Cocoa (Mac OS X), Cocoa Touch (iPhone) and GNUstep (BSD/Linux) can be added to static imperative programming languages without implementing an Objective-C bridge.

Objective Modula-2 in Brief

Base Language

Objective Modula-2 defines a set of language extensions to add native support for Cocoa, Cocoa Touch and GNUstep to any existing Modula-2 dialect without conflicts or inconsistencies.

However, the Objective Modula-2 reference implementation is based on the Modula-2 R10 dialect, a modern revision of Niklaus Wirth's fourth edition of Programming in Modula-2. The following is a brief summary of the changes relative to Wirth's language report:

Removed Features

Replacement Features

Base Language Extensions

Revised Semantics

Object Oriented Language Extensions to Support Cocoa/GNUstep

Objective Modula-2 Sample Code

Apple's Currency Converter in Objective Modula-2

The following sample files are Objective Modula-2 versions of the Currency Converter sample source files in Objective-C from Apple's Cocoa tutorial

Objective Modula-2 Papers

Language Documentation

last revised June 24, 2010

Older Discussion Papers

The documents below are OUTDATED, they are provided as historical background information


Many thanks to the participants of the Objective Modula-2 language design discussion group for providing invaluable insights and suggestions, in particular (in alphabetical order) Brad Cox, Andreas Fischlin and Rick Sutcliffe.

Objective Modula-2 Compiler

The Objective Modula-2 compiler is a cross-platform object oriented Modula-2 compiler with native support for Cocoa (Mac OS X), Cocoa Touch (iPhone) and GNUstep (*nix).

Experimental translators for translating early drafts of Objective Modula-2 to Objective-C have been under development since 2006. These translators were single pass pre-processors that produced output by expanding text-templates using a general purpose template engine. They were not intended for software development but for testing ideas and concepts for the emerging language extensions for Cocoa and GNUstep support.

As the language definition has matured, a new compiler, in part derived from an earlier translator, is being developed with the aim to produce a reference implementation for use by the general public. This compiler is written by hand in the C language in order to maximise portability. Once completed, the compiler will consist of a recursive descent parser that builds an abstract syntax tree, and two code generators, one for Objective-C source to be post-compiled by an Objective-C compiler, the other for LLVM IR assembly to be post-processed by LLVM.

Source code for the compiler is being made available under an amended BSD license. However, source files which have an impact on the syntax are currently released under a peer review license. These files will be relicensed under the amended BSD license when the grammar has been finalised and a working front end for the finalised grammar has been completed.

Aliases and build parameters

Filenames and file extensions

Memory management and key value storage

Tables of reserved words, pragmas, built-in identifiers and tokens

Lexical analysis

Syntax analysis

Code generation

Driver program


Utility to calculate hashes for the symbol table

Utility to generate FIRST and FOLLOW set initialisers for the parser



Statistics for published source files

Modula-2 Resources


Online Books

Modula-2 Grammars

Modula-2 Compilers

Modula-2 IDE support

Online Discussion

The Smalltalk Webring

Powered by WebRing.

The Modula-2 Webring

Web sites and web pages related to the Modula-2 programming language.

List all sites | Previous site | Next site | Random site | Join this webring