//! A parser for .env files with directives.
char = { !NEWLINE ~ ANY }
WHITESPACE = _{ " " | "\t" }
COMMENT = _{ "#" ~ WHITESPACE* ~ !"@" ~ char* ~ NEWLINE }
aws_driective_value = @{ (ASCII_ALPHANUMERIC | "/" | "_" | "+" | "=" | "." | "@" | "-" | "$")+ }
aws_directive = { "@aws" ~ aws_driective_value }
pair_ident = @{ (ASCII_ALPHANUMERIC | "." | "-" | "_")+ }
pair_value_squote = @{ ("\\'" | !"'" ~ ANY)* }
pair_value_dquote = @{ ("\\\"" | !"\"" ~ ANY)* }
pair_value_tick = @{ ("\\`" | !"`" ~ ANY)* }
pair_value_raw = @{ (!"#" ~ char)* }
pair_value = {
("'" ~ pair_value_squote ~ "'")
| ("\"" ~ pair_value_dquote ~ "\"")
| "`" ~ pair_value_tick ~ "`"
| pair_value_raw
}
directive = { "#" ~ aws_directive }
pair = { "export"? ~ pair_ident ~ ("=" | ":") ~ pair_value }
declaration = { (directive ~ NEWLINE+)? ~ pair }
file = { SOI ~ (declaration | NEWLINE)* ~ EOI }