CCL Syntax
CCL uses key-value pairs with indentation for nesting. That’s the entire format. All keys and values are
strings. Because everything is a string, you don’t need to worry about escaping “special” characters, surrounding
“real strings” in quotes, etc. You’ll get a string value matching exactly what you wrote in the config.
Core Syntax Rules
Section titled “Core Syntax Rules”1. Key-Value Pairs
Section titled “1. Key-Value Pairs”key = valueanother = some text value- Split on first
= - Key is trimmed of leading and trailing whitespace
- Value is trimmed of leading whitespace only (trailing whitespace is preserved)
2. Empty Keys (Lists)
Section titled “2. Empty Keys (Lists)”servers = = web1.example.com = web2.example.com = api.example.comEmpty key (= value) creates list items.
3. Comments
Section titled “3. Comments”/= This is a commentkey = value /= Not a comment, value is "value /= Not a comment"Comments use /= syntax. Only at line start.
4. Indentation for Nesting
Section titled “4. Indentation for Nesting”parent = child = nested value another = also nestedLines indented more than previous = part of that value.
5. Recursive Parsing
Section titled “5. Recursive Parsing”beta = mode = sandbox capacity = 2The value mode = sandbox\ncapacity = 2 is recursively parsed as CCL.
Edge Cases
Section titled “Edge Cases”Malformed Input: Missing = treats entire line as key with empty value.
Unicode: UTF-8 supported. Keys and values can contain any Unicode characters.
CRLF vs LF: Line endings normalized to LF (\n) before parsing.
Whitespace-only values: Preserved if present after =.
key =# Value is " " (4 spaces)