treerack/keyval.parser
2017-10-29 00:21:43 +02:00

22 lines
724 B
Plaintext

whitespace:ws = [ \b\f\r\t\v];
comment-line:alias = "#" [^\n]*;
comment = comment-line ("\n" comment-line)*;
quoted:alias:nows = "\"" ([^\\"] | "\\" .)* "\"";
word:alias:nows = ([^\\"\n=#.\[\] \b\f\r\t\v] | "\\" .)+;
symbol = word+ | quoted;
key-form:alias = symbol | symbol ("." symbol)+;
key = key-form;
group-key-form:alias = "[" key-form "]";
group-key = (comment "\n")? group-key-form | group-key-form;
value-chars:alias:nows = ([^\\"\n=# \b\f\r\t\v] | "\\" .)+;
value = value-chars+ | quoted;
key-val = (comment "\n")? (key | key? "=" value?) comment-line?;
entry:alias = group-key | key-val;
doc:root = (entry | comment-line | "\n")*;