Names
In the Erbsland Configuration Language, names are essential for identifying values, sections, and subsections within a configuration. There are two types of names used:
Regular names (or simply names): These are primarily used throughout the configuration to define sections and values.
Text names: These are reserved for special cases where a portion of text needs to be directly mapped to a configuration section or value.
Name Definition
Names are defined by a sequence of alphanumeric characters, with optional spaces or underscores to separate words.
name                ::= ALPHA DIGIT_OR_ALPHA* name_part*
name_part           ::= word_separator DIGIT_OR_ALPHA+
word_separator      ::= SPACE | UNDERSCORE
Rules
Characters: Names can contain letters (
a–z,A–Z), digits (0–9), spaces (), and underscores (_).Valid names: Name multiple_words Multiple Words Name123 Value 200 X_AxisStarting Character: Names must always begin with a letter.
100days # ERROR! Starts with a digit. _example # ERROR! Starts with an underscore.
Case-Insensitive: Names are case-insensitive.
Three identical names: Example_Name example_name EXAMPLE_NAMESpaces and Underscores are Interchangeable: A name can be written with spaces or underscores, and they are treated the same.
Three identical names: one_long_name One Long Name one_long NAMENo Consecutive Word Separators: Names cannot contain consecutive underscores or multiple spaces in a row.
example__name # ERROR! Multiple underscores aren't allowed. Example Name # ERROR! Multiple spaces aren't allowed. example _name # ERROR! Mixing spaces and underscores makes no difference.
No Trailing Underscores: Names must not end with an underscore.
example_ # ERROR! Must not end with an underscore.
Maximum Length: Names must not exceed 100 characters in length.
abc(+200 chars)xyz # ERROR! Exceeds the maximum length of 100 characters.
Micro-Parsers
The maximum length of a name is 30 characters.
Name Normalization
When normalizing a name, the following two rules are applied:
Convert to Underscores: Replace all spaces (
) with underscores (_).Name with Spaces => name_with_spaces
Convert to Lowercase: Convert all uppercase letters (
A–Z) to lowercase (a–z).EXAMPLE => example Multiple_Words => multiple_words
Name Comparison
Name comparison is crucial for identifying sections and values using name paths and for detecting name conflicts. The following rules apply when comparing names:
Normalize Regular Names for Comparison: Regular names must be compared using their normalized form. For details on normalization, refer to Name Normalization.
EXAMPLE == example Example == example eXaMpLe == example Name with Words == name_with_words Name_with_Words == name_with_words
For the comparison of text names, see Text Name Comparison in the next chapter.
Features
Feature  | 
Coverage  | 
|---|---|
core  | 
Regular names are part of the core language.  | 
text-names  | 
Text names are a standard feature.  | 
Errors
Error Code  | 
Causes  | 
|---|---|
Syntax  | 
Raised if a name starts with an underscore or a digit. 
Raised if a name ends with an underscore. 
Raised if a name contains consecutive underscores or spaces. 
 | 
NameConflict  | 
Raised if an already used name is reused.  | 
LimitExceeded  | 
Raised if a name exceeds the 100-character limit.  |