Gentoo Archives: gentoo-portage-dev

From: "Björn Michaelsen" <bjoern.michaelsen@×××××.com>
To: gentoo-portage-dev@l.g.o
Subject: [gentoo-portage-dev] BNF for DEPEND in EAPI0 and EAPI1
Date: Sun, 13 Apr 2008 18:05:30
Message-Id: 20080413200441.4fc92fdb@lithium.michaelsen.kicks-ass.net
1 Hi there,
2
3 I worked through the current PMS and tried to formalize the grammar for
4 DEPEND a little better. Maybe someone could have a look at it and check
5 it for correctness. It could even become part of the gentoo
6 development docs or be an appendix to the PMS. The other grammars
7 (SRC_URI etc.) should be fairly easy.
8
9 Any comments?
10
11 Have Fun,
12
13 Björn
14
15
16 = EAPI 0/1 package dependency specification in Backus-Naur-Form =
17
18 The terminals are described as regular expressions.
19 The nonterminal <dependencies> is what is allowed in the DEPENDs.
20
21 terminals:
22 <category name> ::= "[A-Za-z0-9+_][A-Za-z0-9+_.-]*"
23 <close parenthesis> ::= "[)]"
24 <colon> ::= ":" (not in EAPI0)
25 <dependency group or operator> ::= "[|][|]"
26 <empty> ::= ""
27 <equal> ::= "="
28 <exclamation mark> ::= "!"
29 <general package operator> ::= "<|<=|~|>|>="
30 <open parenthesis> ::= "[(]"
31 <package name> ::= "[A-Za-z0-9+_-]*([A-Za-z+_-]|[A-Za-z+_][0-9]+)"
32 <package version alpha part> ::= "[a-z]"
33 <package version number part> ::= "[0-9]+([.][0-9]+)*"
34 <package version suffix> ::= "_(alpha|beta|pre|rc|p)[0-9]*"
35 <question mark> ::= "?"
36 <slash> ::= "/"
37 <slot name> ::= "[A-Za-z0-9+_][A-Za-z0-9+_.-]*" (not in EAPI0)
38 <space> ::= " "
39 <star> ::= "*"
40 <useflag name> ::= "[A-Za-z0-9][A-Za-z0-9+_@-]*"
41
42 non-terminals:
43 <all-of group> ::= <open parenthesis><space><group contents><space><close parenthesis>
44 <any-of group> ::= <dependency group or operator><space><all-of group>
45 <blocked package dependency> ::= <exclamation mark><package dependency>
46 <dependencies> ::= <empty>|<group contents>
47 <dependency item> ::= <blocked package dependency>|<package dependency>|<all-of group>|<any-of group>|<use conditional group>
48 <group contents> ::= <dependency item>|<group contents><space><dependency item>
49 <limited package dependency> ::= <dependency operator><package with version>
50 <limited package dependency likeness> ::= <equal><package with version>|<equal><package with version><star>
51 <package dependency> ::= <unslotted package dependency>|<slotted package dependency>
52 <package version> ::= <package version number part><package version alpha part><package version suffix part>
53 <package version suffix part> ::= <empty>|<package version suffix part><package version suffix>
54 <package with version> ::= <qualified package name>-<package version>
55 <qualified package name> ::= <category name><slash><package name>
56 <slotted package dependency> ::= <unslotted package dependency><colon><slot name> (not in EAPI0)
57 <unslotted package dependency> ::= <qualified package name>|<limited package dependency>|<limited package dependency likeness>
58 <use conditional group> ::= <use conditional><space><any-of group>
59 <use condition> ::= <useflag name>|<exclamation mark><useflag name>

Attachments

File name MIME type
signature.asc application/pgp-signature

Replies

Subject Author
Re: [gentoo-portage-dev] BNF for DEPEND in EAPI0 and EAPI1 Marius Mauch <genone@g.o>