dtree 0.1.0

Dialog tree file format + parser + executor
Documentation
# DTree file specification

## Notation

This document uses [Extended Backus-Naur Form](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form).

## Basic definitions

```EBNF
unicode_letter = (* A unicode code point classified as "Letter" *)
unicode_digit = (* A unicode code point classified as "Number, decimal digit" *)
unicode_char = (* Any unicode point *)

letter = unicode_letter | "_"
space = " " | (* tab character *)
newline = (* newline character *)
```

## Identifiers

An identifier is used to name a section. It has the form:

```EBNF
identifier = ( unicode_letter | unicode_digit ) { unicode_letter | unicode_digit }
```

Examples:
`asdfaba`
`23193aadf`
`blaher`

Non-Examples
`hello bob`

## Message for a section

Defining a message has the form:

This must take place at the beginning of a line--the `[` must be the first character of the line

```EBNF
section_message = "[", { space }, identifier { space } "]" [ " " { unicode_char } ]
```

Examples


`[asdf] Welcome to party`

`[1913]`

```a
[aaad] Hello \
This is a super dooper thing \
Even with [ characters and all \
```

Non-examples:

```a
[adfa] Hello \
This is pretty cool boi
[
```

Reason: Cannot start a line with `[`

## Mapping for a section

This must take place at the beginning of a line--the `[` must be the first character of the line

```EBNF
mapping = "[" { space } identifier { space } "(" {unicode_char - ")\n"} ")" {space} "->" {space} identifier {space} "]" [ space { unicode_char }]
```

Examples:

```a
[dd (a)->b]
```