From ec4bb216aa5a2bae48db6374f78684fbe8e2df45 Mon Sep 17 00:00:00 2001 From: mdw Date: Sun, 10 Oct 1999 16:45:13 +0000 Subject: [PATCH 1/1] Text file reference for the grammar. Not distributed. --- grammar | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 grammar diff --git a/grammar b/grammar new file mode 100644 index 0000000..ae3f4a7 --- /dev/null +++ b/grammar @@ -0,0 +1,75 @@ +Basic syntax + file ::= empty | file stmt [`;'] + stmt ::= option-stmt | fw-stmt + fw-stmt ::= `fw' source options [`to'|`->'] target options + options ::= `{' option-seq `}' + option-seq ::= empty | option-stmt [`;'] option-seq + +Option syntax + option-stmt ::= q-option + q-option ::= option + | prefix `.' q-option + | prefix `{' option-seq `}' + prefix ::= word + +File source and target + source ::= file + target ::= file + file ::= `file' [`.'] fspec [`,' fspec] + fspec ::= fd-spec | name-spec | null-spec + fd-spec ::= [[`:']`fd'[`:']] number|`stdin'|`stdout' + name-spec ::= [[`:']`file'[`:']] file-name + file-name ::= path-seq | [ path-seq ] + path-seq ::= path-elt | path-seq path-elt + path-elt ::= `/' | word + null-spec ::= [`:']`null'[`:'] + +Exec source and target + source ::= exec + target ::= exec + exec ::= `exec' [`.'] cmd-spec + cmd-spec ::= shell-cmd | [prog-name] `[' argv0 arg-seq `]' + arg-seq ::= word | arg-seq word + shell-cmd ::= word + argv0 ::= word + +Socket source and target + source ::= socket-source + target ::= socket-target + socket-source ::= [`socket'[`.']] [[`:']addr-type[`:']] source-addr + socket-target ::= [`socket'[`.']] [[`:']addr-type[`:']] target-addr + + inet-source-addr ::= [port] port + inet-target-addr ::= address [`:'] port + address ::= addr-elt | address addr-elt + addr-elt ::= `.' | word + + unix-source-addr ::= file-name + unix-target-addr ::= file-name + +File attributes (`fattr') + prefix.fattr.mode [=] mode + prefix.fattr.owner [=] user + prefix.fattr.group [=] group + +File options + file.create [=] yes|no + file.open [=] no|truncate|append + file.fattr.* + +Exec options + exec.logging [=] yes|no + exec.dir [=] file-name + exec.root [=] file-name + exec.user [=] user + exec.group [=] group + exec.rlimit.limit[.hard|.soft] [=] value + exec.env.clear + exec.env.unset var + exec.env.[set] var [=] value + +Socket options + socket.conn [=] number + socket.logging [=] yes|no + socket.inet.[allow|deny] [from] address [/ address] + socket.unix.fattr.* -- 2.11.0