Skip to content
Benjamin Kowarsch edited this page Aug 27, 2020 · 40 revisions

M2PP Modula-2 Preprocessor

Welcome to the Wiki of the M2PP Modula-2 Preprocessor Project

Objective

The objective of this project is to develop and maintain a portable dialect independent preprocessor for Modula-2.

Purpose

The primary purpose of the M2PP preprocessor is to provide a means to to write and maintain dialect independent code that is portable across different Modula-2 dialects. However, it can also be used for generic programming where the Modula-2 dialect or compiler does not support generics.

Dialects

M2PP can process source file templates of any Modula-2 dialect and may even be used with other languages of the Pascal family. In fact it may be used with any language that uses nestable block comments delimited by (* and *) and does not use the symbols /*, */ and ##.

License

M2PP is licensed under the GNU Lesser General Public License (LGPL) v.2.1.

Prerequisites

M2PP is written in the Modula-2 dialect described in the third and fourth editions of Niklaus Wirth's "Programming in Modula-2". Therefore any Modula-2 compiler that supports PIM3, PIM4 or ISO Modula-2 should be able to compile the sources.

The following libraries from Wirth's "Programming in Modula-2" are required.

  • Storage
  • Terminal
  • FileSystem

These libraries should be part of any PIM Modula-2 compiler's library. For use with ISO Modula-2 compilers, M2PP provides shim libraries for adaptation to ISO Modula-2 libraries.

There are no dependencies on any third party libraries.

For detailed dependency graphs for all project modules, please see section

Module Dependency Graphs

OS support

M2PP will run on any operating system with target support by the compiler with which it was built.

Collaboration

If you would like to contribute to the project, please get in touch by email

trijezdci (gmail)

TO DOs

At present, some of the following tasks could use a little help from collaborators:

Scripts
  • write launch script for AmigaOS
  • write build configuration script for AmigaOS
  • write build configuration script for OpenVMS
  • complete build configuration script for Windows
Adaptation Libraries
Missing Functionality
  • implement --show-settings output
  • implement concat() and comparison() in module String