chiark / gitweb /
Update manual style.
[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         socket.inet.[allow|deny] [from] address [/ address]
75         socket.unix.fattr.*