25 lines
578 B
Plaintext
25 lines
578 B
Plaintext
line = _{ SOI ~ line_inner ~ EOI }
|
|
line_inner = { command ~ "(" ~ arg* ~ ")" ~ rest }
|
|
command = { ident }
|
|
|
|
arg = { pos_arg | named_arg }
|
|
pos_arg = { ident | string }
|
|
named_arg = ${ ident ~ "=" ~ pos_arg }
|
|
|
|
rest = @{ ":" ~ rest_char* }
|
|
rest_char = {
|
|
!("\n" | "\\") ~ ANY
|
|
| "\\" ~ "\n"
|
|
}
|
|
|
|
ident = @{ ASCII_ALPHA ~ (ASCII_ALPHANUMERIC | "-" | "_")* }
|
|
|
|
string = ${ "\"" ~ string_inner ~ "\"" }
|
|
string_inner = @{ string_char* }
|
|
string_char = {
|
|
!("\"" | "\\") ~ ANY
|
|
| "\\" ~ ("\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t")
|
|
| "\\" ~ ("u" ~ ASCII_HEX_DIGIT{4})
|
|
}
|
|
|