Goals

Overview

This C++ parser serves as the reference implementation for the Erbsland Configuration Language (ELCL). Its primary goals are security, robustness, and full feature coverage—offering a clean, understandable codebase that serves both as a production-ready parser and as a guide for implementors of other ELCL parsers.

Full Feature Coverage

The parser supports the entire ELCL specification, including:

  • Core features such as names, values, and sections

  • Standard features like multiline values, byte counts, and value lists

  • Advanced types such as regular expressions, code blocks, and time deltas

As the reference implementation, it ensures compatibility with all language features and serves as the basis for validating conformance through the official test suite.

Secure by Design

Security was a core focus from the start:

  • The parser is implemented in plain, explicit C++, avoiding code generation or macro-based lexers.

  • Input handling and buffer processing are written defensively, with comprehensive error checks.

  • It is designed to safely handle data from untrusted sources, making it suitable for embedded, backend, or toolchain usage.

This approach ensures predictable behavior and minimizes the risk of memory or parsing vulnerabilities.

Dependency-Free

The parser is intentionally designed with zero external dependencies:

  • No third-party libraries are required.

  • Self-contained implementations are included for tasks such as: - Unicode-aware string handling - Basic date/time parsing - Value formatting and escaping

This makes the parser easy to integrate into any C++ project and ideal as a portable reference for reimplementations in other programming languages.

Modern, Readable C++

Written in modern C++ (up to C++20), the codebase is:

  • Compatible with a wide range of C++ compilers

  • Cleanly structured for readability and extensibility

  • Explicit rather than clever—emphasizing clarity over abstraction

You should be able to understand and extend the parser without reverse-engineering dense templates or macro magic.

Robustness Over Performance

Parsing configuration files is rarely a performance bottleneck, but robust behavior is critical:

  • The parser prioritizes correctness, consistency, and transparency over raw speed.

  • Error reporting is designed to help users quickly find and fix mistakes in their configuration files.

  • Performance optimizations are applied where helpful, but never at the cost of readability or correctness.

This focus ensures the parser remains a trustworthy building block for your systems.