chiark / gitweb /
And a typo fix.
[fwd] / grammar
1 Basic syntax
2         FILE ::= EMPTY | FILE STMT [`;']
3         STMT ::= OPTION-STMT | FW-STMT
4         FW-STMT ::= `fw' SOURCE OPTIONS [`to'|`->'] TARGET OPTIONS
5         OPTIONS ::= `{' OPTION-SEQ `}'
6         OPTION-SEQ ::= EMPTY | OPTION-STMT [`;'] OPTION-SEQ
7
8 Option syntax
9         OPTION-STMT ::= Q-OPTION
10         Q-OPTION ::= OPTION
11              | PREFIX `.' Q-OPTION
12              | PREFIX `{' OPTION-SEQ `}'
13         PREFIX ::= WORD
14
15 File source and target
16         SOURCE ::= FILE
17         TARGET ::= FILE
18         FILE ::= `file' [`.'] FSPEC [`,' FSPEC]
19         FSPEC ::= FD-SPEC | NAME-SPEC | NULL-SPEC
20         FD-SPEC ::= [[`:']`fd'[`:']] NUMBER|`stdin'|`stdout'
21         NAME-SPEC ::= [[`:']`file'[`:']] FILE-NAME
22         FILE-NAME ::= PATH-SEQ | [ PATH-SEQ ]
23         PATH-SEQ ::= PATH-ELT | PATH-SEQ PATH-ELT
24         PATH-ELT ::= `/' | WORD
25         NULL-SPEC ::= [`:']`null'[`:']
26
27 Exec source and target
28         SOURCE ::= EXEC
29         TARGET ::= EXEC
30         EXEC ::= `exec' [`.'] CMD-SPEC
31         CMD-SPEC ::= SHELL-CMD | [PROG-NAME] `[' ARGV0 ARG-SEQ `]'
32         ARG-SEQ ::= WORD | ARG-SEQ WORD
33         SHELL-CMD ::= WORD
34         ARGV0 ::= WORD
35
36 Socket source and target
37         SOURCE ::= SOCKET-SOURCE
38         TARGET ::= SOCKET-TARGET
39         SOCKET-SOURCE ::= [`socket'[`.']] [[`:']ADDR-TYPE[`:']] SOURCE-ADDR
40         SOCKET-TARGET ::= [`socket'[`.']] [[`:']ADDR-TYPE[`:']] TARGET-ADDR
41
42         INET-SOURCE-ADDR ::= [`port'] PORT
43         INET-TARGET-ADDR ::= ADDRESS [`:'] PORT
44         ADDRESS ::= ADDR-ELT | ADDRESS ADDR-ELT
45         ADDR-ELT ::= `.' | WORD
46
47         UNIX-SOURCE-ADDR ::= FILE-NAME
48         UNIX-TARGET-ADDR ::= FILE-NAME
49
50 File attributes (`fattr')
51         PREFIX.fattr.mode [=] MODE
52         PREFIX.fattr.owner [=] USER
53         PREFIX.fattr.group [=] GROUP
54
55 File options
56         file.create [=] yes|no
57         file.open [=] no|truncate|append
58         file.fattr.*
59
60 Exec options
61         exec.logging [=] yes|no
62         exec.dir [=] FILE-NAME
63         exec.root [=] FILE-NAME
64         exec.user [=] USER
65         exec.group [=] GROUP
66         exec.rlimit.LIMIT[.hard|.soft] [=] VALUE
67         exec.env.clear
68         exec.env.unset VAR
69         exec.env.[set] VAR [=] VALUE
70
71 Socket options
72         socket.conn [=] NUMBER|unlimited|one-shot
73         socket.logging [=] yes|no
74
75         socket.inet.source.[allow|deny] priv-port
76         socket.inet.source.[allow|deny] [host] ADDR [/ ADDR]
77         socket.inet.source.addr [=] any|ADDR
78         socket.inet.dest.addr [=] any|ADDR
79         oscket.inet.dest.priv-port [=] yes|no
80
81         socket.unix.source.fattr.*