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> |