rusty_oge 1.5.0

Библиотека, решающая задачки из ОГЭ по информатике.
Documentation
WHITESPACE     = _{ " " }

variable       = { (LETTER+) }
number         = { ASCII_DIGIT+ }
digit_position = { "первая" | "вторая" | "последняя" }
digit          = !{ digit_position ~ "цифра" }
value          = @{ digit | variable }

cmp_op         = { "<=" | ">=" | "<" | ">" }
cmp_expr       = !{ "(" ~ value ~ cmp_op ~ number ~ ")" }

even_odd_op    = { "четн"~LETTER{2} | "нечетн"~LETTER{2} }
even_odd_expr  = !{ "(" ~ value ~ even_odd_op ~ ")" }

div_expr       = !{ "(" ~ value ~ ("делится на" | "кратно") ~ number ~ ")" }

not_expr       = { "НЕ" ~ expr }
and_expr       = !{ expr ~ "И" ~ main_expr }
or_expr        = !{ expr ~ "ИЛИ" ~ main_expr }

main_expr      = _{ and_expr | or_expr | expr ~ "."? }
expr           = _{ not_expr | even_odd_expr | cmp_expr | div_expr }