Currently job artifacts in CI/CD pipelines on LRZ GitLab never expire. Starting from Wed 26.1.2022 the default expiration time will be 30 days (GitLab default). Currently existing artifacts in already completed jobs will not be affected by the change. The latest artifacts for all jobs in the latest successful pipelines will be kept. More information: https://gitlab.lrz.de/help/user/admin_area/settings/continuous_integration.html#default-artifacts-expiration

EBNF.ebnf 2.2 KB
Newer Older
Eckhart Arnold's avatar
Eckhart Arnold committed
1
2
# EBNF-Grammar in EBNF

3
4
5
@ comment    = /#.*(?:\n|$)/                    # comments start with '#' and eat all chars up to and including '\n'
@ whitespace = /\s*/                            # whitespace includes linefeed
@ literalws  = right                            # trailing whitespace of literals will be ignored tacitly
Eckhart Arnold's avatar
Eckhart Arnold committed
6

7
8
9
syntax     = [~//] { definition | directive } §EOF
definition = symbol §"=" expression
directive  = "@" §symbol "=" ( regexp | literal | list_ )
Eckhart Arnold's avatar
Eckhart Arnold committed
10

11
12
13
14
15
16
17
18
19
20
21
22
expression = term { "|" term }
term       = { ["§"] factor }+                       # "§" means all following factors mandatory
factor     = [flowmarker] [retrieveop] symbol !"="   # negative lookahead to be sure it's not a definition
           | [flowmarker] literal
           | [flowmarker] plaintext
           | [flowmarker] regexp
           | [flowmarker] whitespace
           | [flowmarker] oneormore
           | [flowmarker] group
           | [flowmarker] unordered
           | repetition
           | option
Eckhart Arnold's avatar
Eckhart Arnold committed
23

24
25
26
flowmarker = "!"  | "&"                         # '!' negative lookahead, '&' positive lookahead
           | "-!" | "-&"                        # '-' negative lookbehind, '-&' positive lookbehind
retrieveop = "::" | ":"                         # '::' pop, ':' retrieve
Eckhart Arnold's avatar
Eckhart Arnold committed
27

28
29
30
31
32
group      = "(" §expression ")"
unordered  = "<" §expression ">"                # elements of expression in arbitrary order
oneormore  = "{" expression "}+"
repetition = "{" §expression "}"
option     = "[" §expression "]"
Eckhart Arnold's avatar
Eckhart Arnold committed
33

34
35
36
37
symbol     = /(?!\d)\w+/~                       # e.g. expression, factor, parameter_list
literal    = /"(?:[^"]|\\")*?"/~                # e.g. "(", '+', 'while'
           | /'(?:[^']|\\')*?'/~                # whitespace following literals will be ignored tacitly.
plaintext  = /`(?:[^"]|\\")*?`/~                # like literal but does not eat whitespace
38
39
regexp     = /\/(?:\\\/|[^\/])*?\//~            # e.g. /\w+/, ~/#.*(?:\n|$)/~
whitespace = /~/~                               # insignificant whitespace
40
41
42
list_      = /\w+/~ { "," /\w+/~ }              # comma separated list of symbols, e.g. BEGIN_LIST, END_LIST,
                                                # BEGIN_QUOTE, END_QUOTE ; see CommonMark/markdown.py for an exmaple
EOF = !/./