38 lines
1.1 KiB
Plaintext
38 lines
1.1 KiB
Plaintext
COMMENT = _{ "/*" ~ (!"*/" ~ ANY)* ~ "*/" }
|
|
string = ${ "\"" ~ inner ~ "\"" }
|
|
inner = @{ char* }
|
|
char = {
|
|
!("\"" | "\\") ~ ANY
|
|
| "\\" ~ ("\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t")
|
|
| "\\" ~ ("u" ~ ASCII_HEX_DIGIT{4})
|
|
}
|
|
|
|
number = @{
|
|
"-"?
|
|
~ ("0" | ASCII_NONZERO_DIGIT ~ ASCII_DIGIT*)
|
|
~ ("." ~ ASCII_DIGIT*)?
|
|
~ (^"e" ~ ("+" | "-")? ~ ASCII_DIGIT+)?
|
|
}
|
|
|
|
alpha = { 'a'..'z' | 'A'..'Z' }
|
|
digit = { '0'..'9' }
|
|
|
|
ident = { (alpha | digit | ".")+}
|
|
version = {digit* ~ "." ~ digit*}
|
|
|
|
import = {"import" ~ WHITE_SPACE ~ ident ~ WHITE_SPACE ~ NEWLINE*}
|
|
|
|
function_code = {
|
|
!( // if the following text is not
|
|
"]]" // a space
|
|
)
|
|
~ ANY // then consume one character
|
|
}
|
|
|
|
function = {WHITE_SPACE* ~ ident ~ WHITE_SPACE* ~ "=" ~ WHITE_SPACE* ~ "[[" ~ function_code* ~ "]]" ~ NEWLINE* }
|
|
|
|
property = {WHITE_SPACE* ~ ident ~ ":" ~ WHITE_SPACE* ~ (number|string |ident|("[[" ~ function_code* ~ "]]")) ~ NEWLINE* }
|
|
|
|
body = {WHITE_SPACE* ~ ident ~ WHITE_SPACE ~ "{" ~ NEWLINE* ~ (property|function|body)* ~ NEWLINE* ~ WHITE_SPACE* ~ "}" ~ NEWLINE?}
|
|
|
|
qml = {import* ~ NEWLINE* ~ body} |