Erbsland Configuration Language
The Erbsland Configuration Language (ELCL) is a human-centric configuration format designed with a focus on clarity and ease of use. ELCL simplifies software configuration, making it intuitive for both developers and end-users.
Where to Start?
Short on time? Check out the Language Overview for a quick introduction.
Looking for more details? Read the comprehensive introduction chapter to get started.
Implementing a parser? Find all details the language reference chapter.
Design Rationale and Key Features
ELCL balances the flexibility required for human users to freely edit configuration documents and add comments, with the technical needs for strict and straightforward parsing. The language is designed to be familiar and easy to learn, enabling developers to quickly adopt it. Some of the main features include:
Simplicity: ELCL offers an intuitive syntax with built-in type safety, minimizing common configuration errors.
Safety: The language supports strict and safe parsers, ensuring robust and secure configurations.
Comprehensive Documentation: Detailed specifications, along with user and developer guides, make ELCL easy to understand and implement.
Reference Implementations: Available for Python and C++, these implementations help integrate ELCL into your application or serve as examples for writing your own parser.
Compliance Test Suite: An extensive test suite ensures that parsers conform to the ELCL specification, fostering reliable and consistent implementations.
Implementation Levels: ELCL supports various implementation levels, from lightweight micro-parsers for resource-constrained environments to full-featured parsers for complex use cases.
Metadata Support: Metadata statements allow you to specify language versions and required features, ensuring backward compatibility and future-proofing.
Table of Contents
- Introduction
- Language Overview
- The Test Suite
- Parser Tiers
- Language Reference
- Documentation Conventions
- Characters
- Line Break
- Spacing
- Comments
- Text
- Names
- Text Names
- Name Paths
- Name Conflicts
- Section Names
- Sections
- Named Values
- Single-Line Value Lists
- Multi-line Value Lists
- Text Values
- Integer Values
- Boolean Value
- Floating-Point Value
- Multi-line Text Values
- Date, Time, and Date-Time Values
- Code Text Values
- Byte-Data Values
- Regular Expression Values
- Time-Delta Values
- Meta Values and Commands
- Meta Command “Include”
- Meta Command “Signature”
- Limits Summary
- Names for Value Types
- Error Categories and Codes
- Error Category Details
- Feature Identifiers
- Validation Rules
- Contributing Guidelines
- License
- Changelog
- Glossary