Index: ossp-pkg/cfg/00TODO RCS File: /v/ossp/cvs/ossp-pkg/cfg/Attic/00TODO,v co -q -kk -p'1.8' '/v/ossp/cvs/ossp-pkg/cfg/Attic/00TODO,v' | diff -u - /dev/null -L'ossp-pkg/cfg/00TODO' 2>/dev/null --- ossp-pkg/cfg/00TODO +++ /dev/null 2024-05-21 14:30:29.000000000 +0200 @@ -1,209 +0,0 @@ - -- in scanner: use an combination of dynamic buffer and atomic symbol/token sub-library - to allow first tokens of mostly arbitrary size and then to store the tokens - redundancy-free. -- Problem: \x00 oder \x{00} wird zu NUL-terminator -> use ptr+len instead -- caStr/cpStr durch yyless/yymore?? -- syntax verification -- command line query tool -- error checking in scanner? -- OSSP ex support -- wieso geht sample.cfg nicht als Arg bei "make check"? - -- newline in error message -$ ./cfg_test sample2.cfg -ERROR: quu'> - -- cfg_t - -rewrite-uri { } -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 -}; - ---------------------------------------------------------------------------- - -foo on; -bar /bla { - foo off; - baz --fuck { - b1; b2 --nase=baer; b3; b4; b5; - } --fuck2; -}; -quux a1 a2 a3 a4; -quux; - ---------------------------------------------------------------------------- - -sequence ROOT { - directive foo; - directive bar; - directive quux --count=1:oo; -}; -sequence bar-seq { - directive foo --count=0:1; - directive baz --count=1:oo; -}; -directive foo { - token - on|off|yes|no; -}; -directive bar { - token path /.*; - sequence bar-seq; -}; -directive baz { - option fuck; - option fuck2; - sequence { - directive foo { - option nase (baer|hugo); - option foo [0-9]; - token ip-address; - }; - }; -}; -directive quux { - token --count=0:oo a.*; -}; -token ip-address b1|b2|b3|b4|b5; - -------------------------------------------------------------------------------- - - ::= "sequence" ? ; - | "sequence" ? ? "{" * "}"; - ::= "directive" ? ; - | "directive" ? ? "{"