:sig
DValue yaml_decode(String s)

:params
s : YAML source string
return value : decoded DValue

:see
>markup
yaml_encode
json_decode
xml_decode
0_DValue

:content
Parses a practical YAML subset into a `DValue`.

`yaml_decode()` is designed for concise UCE config files. It supports a practical YAML subset and does not implement anchors, aliases, tags, directives, or complex inline collection syntax.

Try the live example in the [YAML demo](../demo/yaml.uce).

Example:

```uce
String source = "app:\n"
	"  name: UCE Starter\n"
	"  debug: true\n"
	"  port: 8080\n"
	"  paths:\n"
	"    - site\n"
	"    - cache\n";

DValue cfg = yaml_decode(source);

cfg["app"]["name"].to_string();       // UCE Starter
cfg["app"]["debug"].to_bool();        // true
cfg["app"]["port"].to_s64();          // 8080
cfg["app"]["paths"]["1"].to_string(); // cache
```

Supported syntax:

- indentation-based maps
- indentation-based lists
- `key: value` map entries
- list entries with `- value`
- quoted strings with single or double quotes
- booleans `true` and `false`
- empty/null-ish values as empty strings
- comments beginning with `#` outside quoted strings
- literal block strings with `|`
- folded block strings with `>`
- optional `---` and `...` document markers

Numeric-looking values are stored as strings, matching `json_decode()`'s current behavior. Use `to_s64()`, `to_u64()`, or `to_f64()` when reading numeric config values.

Malformed input raises a request-visible `yaml_decode(): ...` runtime error.
