Index: ossp-pkg/cfg/00TODO RCS File: /v/ossp/cvs/ossp-pkg/cfg/Attic/00TODO,v rcsdiff -q -kk '-r1.3' '-r1.4' -u '/v/ossp/cvs/ossp-pkg/cfg/Attic/00TODO,v' 2>/dev/null --- 00TODO 2002/07/05 17:30:23 1.3 +++ 00TODO 2002/07/08 13:45:46 1.4 @@ -1,7 +1,10 @@ +- Problem: \x00 oder \x{00} wird zu NUL-terminator -> use ptr+len instead +- caStr/cpStr durch yyless/yymore?? - autoconf environment - syntax verification - command line query tool +- error checking in scanner? - newline in error message $ ./cfg_test sample2.cfg @@ -11,7 +14,72 @@ - cfg_t rewrite-uri { } -rewrite-uri ^/(.*) /path/$1 --redirect=permanent "{ +rewrite-uri ^/(.*) /path/$1 --redirect=permanent q{ %{SOURCE} != "x" -}"; +}; + + +Directory [--foo=A] + +Argument: + - type: + - keyword ("foo") via name + - option ("--foo=BAR") via name & regex + - argument ("foo") via regex + - amount: + - 1 + - 0/1 ? + - 0..n * + - 1..n + + - location: + - by position + - by name + - lookup via: + - name + - position + - regex match + +foo * bar +foo = bar|quux|... +foo (bar baz quux) + +foo ::= bar* ; kleene closure +foo ::= bar|baz|quux ; union +foo ::= bar baz quux ; concatenation + +foo ::= {foo;...} ; sequence of ... +foo ::= (...) ; grouping +foo ::= "bar" ; fixed terminal +foo ::= /bar/ ; regex terminal +foo ::= ; arbitrary argument +foo ::= ; arbitrary option + +SEQ ::= "{" DIR DIR* "}" +DIR ::= TOK (" " TOK)* ";" +TOK ::= ... + +SEQ ::= DIR* SEQ(dir,dir,...) +DIR ::= TOK+ DIR(tok,tok,...) +TOK ::= string "..." + +config ::= SEQ(directory|user|rewrite|access) +directory ::= DIR("directory",*,) +dir_options ::= +user ::= DIR("user",/^[a-z]$/) +rewrite ::= +access ::= "access" ("allow"|"deny"):action SEQ(access_list):acl +access_list ::= m/^!?%{ID}$/ + +acl ::= "acl" TOK:name acl_list +acl_list ::= SEQ(acl_entry) +acl_entry ::= acl_action "from" net-addr:src "to" net-addr:dst +acl_action ::= "allow"|"deny" +net_addr ::= net_hostname | net_ipv4addr | net_ipv6addr + +sequence all { + directive --class 1; +}; +directive --class 1 "foo" { + option "bar" --occur=1 +};