| Conditional | Full-featured conditional compilation (if / ifdef / else / endif) for the fpx preprocessor This module implements standard-conforming conditional compilation with support for: |
| Constants | Module defining constants for the FPX library This module provides a set of public integer constants used to enforce limits in the FPX library, such as maximum line lengths, depths, and parameter counts |
| Date | Lightweight, high-performance date/time handling for the fpx preprocessor This module provides a compact datetime type and essential operations used primarily for expanding the standard predefined macros: |
| Define | Processing of define and undef preprocessor directives This module implements the core logic for handling macro definition and removal during preprocessing in the fpx Fortran preprocessor. It supports: |
| Diagnostics | Processing of warning and error preprocessor directives This module implements the core logic for handling messages (either as warning or errors) |
| Global | Central global configuration and shared state for the fpx Fortran preprocessor This module defines a single global instance global of type global_settings that holds all persistent, user-configurable state used across the entire preprocessing session: |
| Graph | Lightweight directed graph implementation for cycle detection in macro expansion This module provides a compact, allocation-efficient directed graph (digraph) specifically designed for detecting circular dependencies during macro expansion in the fpx preprocessor |
| Include | Include file handling and resolution for the fpx Fortran preprocessor |
| Logging | Global logging and verbosity control for the fpx Fortran preprocessor |
| Macro | Macro management and expansion core of the fpx Fortran preprocessor |
| OS | Operating system detection utilities for the fpx preprocessor This lightweight module provides reliable runtime detection of the current operating system on Unix-like platforms (Linux, macOS, FreeBSD, OpenBSD, Solaris) and Windows (including Cygwin, MSYS, and native Windows). Detection is performed only once per thread (using OpenMP threadprivate storage) and then cached for fast subsequent calls. The implementation first checks common environment variables (OSTYPE, OS), then falls back to the presence of OS-specific files. This makes it robust across native systems, containers, WSL, Cygwin, and cross-compilation environments |
| Operators | Module implementing a full C-preprocessor-style constant expression evaluator using a top-down recursive descent parser. The module provides the ability to evaluate integer constant expressions of the kind used in classical preprocessor. This includes support for: |
| Parser | Fortran Preprocessor (fpx) – core parsing and preprocessing module |
| Path | A modern, portable Fortran module for path manipulation and basic directory operations. This module provides a clean interface for working with file system paths in a platform-independent way. It correctly handles both Unix ('/') and Windows ('\') path separators through conditional compilation and offers deferred-length character results for maximum flexibility |
| String | Minimal yet powerful variable-length string type with modern Fortran features. This module implements a lightweight string derived type that behaves like a true variable-length character string while remaining fully compatible with intrinsic Fortran character operations |
| Token | Token classification and representation for expression parsing in fpx |