//! Python Parser
item = _{ SOI ~ line* ~ EOI }
line = _{ regexp | string | other }
other = ${ !(string) ~ ANY }
WHITESPACE = { " " | "\t" | NEWLINE }
/// Comment
COMMENT = ${ line_comment | block_comment }
line_comment = _{ "#" ~ (!(NEWLINE) ~ ANY)* }
block_comment = _{ "'''" ~ (!("'''") ~ ANY)* ~ "'''" }
/// String
string = ${ inner_string }
inner_string = _{
("'" ~ (!(NEWLINE | "'") ~ ANY)* ~ "'")
| ("\"\"\"" ~ (!("\"\"\"") ~ ANY)* ~ "\"\"\""+)
| ("\"" ~ (!(NEWLINE | "\"") ~ ANY)* ~ "\"")
}
/// Regexp
regexp = ${
("r'" ~ (!(NEWLINE | "'") ~ ANY)* ~ "'")
| ("r\"\"\"" ~ (!("\"\"\"") ~ ANY)* ~ "\"\"\"")
| ("r\"" ~ (!(NEWLINE | "\"") ~ ANY)* ~ "\"")
| ("compile(" ~ " "* ~ inner_string ~ (!")" ~ ANY)* ~ ")")
}