hexpr 0.2.2

H-Expressions: A compact syntax for open hypergraphs
Documentation
WHITESPACE = _{ " " | "\t" | "\n" | "\r" }
COMMENT = _{ "#" ~ (!"\n" ~ ANY)* }

hexprs = { SOI ~ hexpr* ~ EOI }
one_hexpr = { SOI ~ hexpr ~ EOI }

hexpr = {
    composition
  | tensor
  | frobenius
  | operation
}

composition = { "(" ~ hexpr+ ~ ")" }

tensor = { "{" ~ hexpr+ ~ "}" }

frobenius = { "[" ~ vars ~ ( "." ~ vars)? ~ "]" }

vars = { variable* }

operation = @{ (ASCII_ALPHANUMERIC | "-" | "_" | "." | "*" | "+" | "/" | "|" | ">" | ">" | ":" | "=" | "!" | "?")+ }

variable = @{ (ASCII_ALPHANUMERIC | "-" | "_") ~ (ASCII_ALPHANUMERIC | "-" | "_")* }