Minetest-WorldEditAdditions/.docs/grammars/axes.bnf

41 lines
970 B
BNF

{%
# Lists of axes
In various commands such as `//copy+`, `//move+`, and others lists of axes are used. These are all underpinned by a single grammar and a single parser (located in `worldeditadditions/utils/parse/axes.lua`). While the parser itself requires pre-split tokens (see `split_shell` for that), the grammar which it parses is documented here.
Examples:
```
front 3 left 10 y 77 x 30 back 99
```
%}
<axes> ::= <axis_part> *
<axes_part> ::= <axis_name> <number>
| <axis_name> <number> <reverse>
<reverse> ::= <number>
| <reverse_name>
<reverse_name> ::= sym | symmetrical | mirror | mir | rev | reverse | true
<axis_name> ::= <axis_name_absolute>
| <axis_name_relative>
<axis_name_absolute> ::= <axis_letters_absolute>
| "-" <axis_letters_absolute>
<axis_name_relative> ::= front | back | left | right | up | down | "?"
<axis_letters_absolute> ::= x | y | z | h | v
<number> ::= <digit> *
<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 0