code = @{ (!tag_open ~ !tag_close ~ ANY)* } comment = { ("#" | "//" | "///" | "" ) ~ WHITE_SPACE? } tag_text = @{ ASCII_ALPHANUMERIC | "{" | "}" | "%" | "`" |"\\" | "_" | "-" | "\"" | "="| "!" | "/" | WHITE_SPACE } element_id = { " id=\"" ~ (ASCII_ALPHANUMERIC | "_" | "-" )* ~ "\"" } tag = { "" ~ WHITE_SPACE? } tag_open = { comment ~ tag ~ WHITE_SPACE? ~ comment? } // ~ NEWLINE tag_close = @{ comment? ~ "" ~ WHITE_SPACE?~ comment? } snippet = { tag_open ~ code ~ (snippet ~ code)* ~ tag_close } file = { SOI ~ code ~ (snippet ~ code)* ~ EOI }