Module parser

Source
Expand description

§ControlMap Parser

controlmap_parser is a minimal parser for controlmap.txt files.

§EBNF

<file> ::= <line>*

<line> ::= <comment-line>
         | <event-line>
         | <blank-line>

<comment-line> ::= "//" <string>

<event-line> ::= <event-name> "\t"+ <keyboard-id> "\t"+ <mouse-id> "\t"+ <gamepad-id> "\t"+ <remap-key> "\t"+ <remap-mouse> "\t"+ <remap-gamepad> "\t"+ [<event-binary-flag>] <new-line>

<event-name> ::= <string>

<keyboard-id> ::= <key-map>

<mouse-id> ::= <key-map>

<gamepad-id> ::= <key-map>

<remap-key> ::= "1" | "0"

<remap-mouse> ::= "1" | "0"

<remap-gamepad> ::= "1" | "0"

<event-binary-flag> ::= <hexadecimal>

<blank-line> ::= <new-line>

# KeyMap
<key-map> ::= <key-alias> | <key-or> | <key-and> | <hexadecimal>
<key-alias> ::= "!0," <event-name>
<key-or> ::= <key-map> "," <key-map>
<key-and> ::= <key-id> "+" <key-id>
<key-id> ::= <hexadecimal>

# primitives

<new-line> ::= "\r"? "\n"
<string> ::= Any valid string

<hexadecimal> ::= "0x" (<hex-digit>)+

<hex-digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"  |
                  "a" | "b" | "c" | "d" | "e" | "f" | "A" | "B" | "C" | "D" | "E" | "F"

Structs§

EventLine
One line event

Enums§

KeyID
KeyMap Kind
Line
A line expression

Functions§

control_map_parser
parse controlmap.txt