sapling-streampager 0.12.0

streampager is a pager for command output or large files
Documentation
WHITESPACE = _{ " " | "\t" | "\x0C" }

COMMENT = _{ "#" ~ (!NEWLINE ~ ANY)* } 

ident = @{ ASCII_ALPHA ~ (ASCII_ALPHA | ASCII_DIGIT)* }

char = { ANY }

modifier = @{ "SUPER" | "CTRL" | "ALT" | "SHIFT" }

keycode = ${ ident | "\'" ~ "\\"? ~ char ~ "\'" }

visible_key = { modifier* ~ keycode }

invisible_key = { "(" ~ modifier* ~ keycode ~ ")" }

key = { visible_key | invisible_key }

binding_param = @{ ASCII_DIGIT+ }

binding = { ident ~ ( "(" ~ binding_param ~ ( "," ~ binding_param )* ~ ")" )? }

item = { key ~ ("," ~ key)* ~ "=>" ~ binding ~ ";" }

file = { SOI ~ (item? ~ NEWLINE)* ~ EOI }