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

LaTeX.ebnf 1.59 KB
Newer Older
Eckhart Arnold's avatar
Eckhart Arnold committed
1
2
# latex Grammar

3
@ testing    = True
4
@ whitespace = /[ \t]*(?:\n(?![ \t]*\n)[ \t]*)?/  # optional whitespace, including at most one linefeed
5
@ comment    = /%.*(?:\n|$)/
Eckhart Arnold's avatar
Eckhart Arnold committed
6

7
8
9
latexdoc   = preamble document
preamble   = { command }+

Eckhart Arnold's avatar
Eckhart Arnold committed
10
document   = [PARSEP] { [PARSEP] paragraph } §EOF
11

12
blockenv   = beginenv sequence §endenv
Eckhart Arnold's avatar
Eckhart Arnold committed
13

14
parblock   = "{" sequence §"}"
Eckhart Arnold's avatar
Eckhart Arnold committed
15

16
17
sequence   = { paragraph [PARSEP] }+
paragraph  = { !blockcmd (command | block | text) }+
Eckhart Arnold's avatar
Eckhart Arnold committed
18

19
20
21
22
inlineenv  = beginenv { command | block | text }+ endenv
beginenv   = "\begin{" §NAME §"}"
endenv     = "\end{" §::NAME §"}"

23
24
command    = CMDNAME [ config ] block
config     = "[" cfgtext §"]"
25
block      = "{" { text | block } §"}"
Eckhart Arnold's avatar
Eckhart Arnold committed
26

27
28
29
text       = { cfgtext | (BRACKETS //~) }+
cfgtext    = { word_sequence | (ESCAPED //~) }+
word_sequence = { TEXTCHUNK //~ }+
30
31

blockcmd   = "\subsection" | "\section" | "\chapter" | "\subsubsection"
32
             | "\paragraph" | "\subparagraph" | "\begin{enumerate}"
33
             | "\begin{itemize}" | "\item" | "\begin{figure}"
34
35
36

CMDNAME    = /\\\w+/~
NAME       = /\w+/~
Eckhart Arnold's avatar
Eckhart Arnold committed
37

Eckhart Arnold's avatar
Eckhart Arnold committed
38
ESCAPED    = /\\[%$&]/
39
BRACKETS   = /[\[\]]/                   # left or right square bracket: [ ]
Eckhart Arnold's avatar
Eckhart Arnold committed
40
TEXTCHUNK  = /[^\\%$&\{\}\[\]\s\n]+/    # some piece of text excluding whitespace,
41
                                        # linefeed and special characters
42
43
44
WSPC       = /[ \t]+/                   # (horizontal) whitespace
LF         = !PARSEP /[ \t]*\n[ \t]*/   # LF but not an empty line
PARSEP     = /[ \t]*\n[ \t]*\n[ \t]*/   # at least one empty line, i.e.
45
                                        # [whitespace] linefeed [whitespace] linefeed
46

47
EOF        = !/./