summaryrefslogtreecommitdiff
path: root/support/pkgcheck/src/generate.pest
blob: 749cb60e5e4d40ec0b49993afab45ea4cefcb0e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
file = { SOI ~ ( generatefile_stmt | generate_stmt | filecontents | other)* ~ EOI }

other = _{ (!NEWLINE ~ ANY) }

generatefile_stmt = _{ "\\generateFile" ~ LPAREN ~ filename ~ RPAREN } 

generate_stmt = _{ "\\generate" ~ LPAREN ~ (file_stmt | cmd )+ ~ RPAREN }
file_stmt = _{ "\\file" ~ LPAREN ~ filename ~ RPAREN ~
         LPAREN ~ (from | cmd) + ~RPAREN  }

filecontents = _{  "\\begin" ~ LPAREN ~  filecontents_lit ~ RPAREN ~
                   LPAREN ~ filename ~ RPAREN }

filecontents_lit = _{ "filecontents*" | "filecontents" }

filename = { (!RPAREN ~ ANY)* }

from = _{ "\\from" ~ LPAREN ~ anyx ~ RPAREN ~
           LPAREN ~ anyx ~ RPAREN  }

cmd = _{ "\\" ~ ident ~ (LPAREN ~ anyx ~ RPAREN)* }

ident_char = _{ 'a'..'z' | 'A'..'Z' | '0'..'9' | "_" }
ident      =  _{
    ('a'..'z' | 'A'..'Z') ~ ident_char* |
    "_" ~ ident_char+ }


LPAREN = _{ "{" }
RPAREN = _{ "}" }

anyx = _{ (!RPAREN ~ ANY)* }
WHITESPACE = _{ " " | "\t" | NEWLINE }
COMMENT = _{ "%" ~ (!NEWLINE ~ ANY)* }