Webserv
CONFIG := *(ITEM);
BLOCK := OPEN_BRACE CONFIG CLOSE_BRACE;
ITEM := OWS (DIRECTIVE | CONTEXT | COMMENT);
DIRECTIVE := DIRECTIVE_COMMAND OWS SEMI_COLON;
CONTEXT := CONTEXT_COMMAND OWS BLOCK;
COMMENT := '#' [WORD *(RWS WORD)] '\n';
DIRECTIVE_COMMAND := COMMAND_LIKE;
CONTEXT_COMMAND := COMMAND_LIKE;
COMMAND_LIKE := COMMAND_NAME *(RWS COMMAND_ARGUMENT);
COMMAND_NAME := WORD;
ARGUMENT_NAME := WORD;
Basic Rules:
OCTET := %x00–FF;
CHAR := %x01-7F;
ECHAR := ESCAPE_CHAR OCTET;
VCHAR := ALPHANUM | SYMBOLS;
UC_ALPHA := %x41–5A;
LC_ALPHA := %x61–7A;
DIGIT := %x30–39;
SYMBOL := %x21-2F | %x3A-40 | %x5B-60 | %x7B-7E;
HEXDIGIT := DIGIT | %x41-46 | %x61-66;
HEXCHAR := HEXDIGIT HEXDIGIT;
HEXNUMBER := 1*(HEXDIGIT)
ALPHA := UC_ALPHA | LC_ALPHA;
ALPHANUM := ALPHA | DIGIT;
NUMBER := 1*(DIGIT);
DQUOTE := %x22;
SQUOTE := %x27;
SP := %x20;
HTAB := %x09;
CR := %x0D;
LF := %x0A;
PLUS := %x2B
MINUS := %x2D
OPEN_BRACE := %7B;
PIPE := %7C;
CLOSE_BRACE := %7D;
TILDE := %7E
ESCAPE_CHAR := %x5C;
WSP := SP | HTAB | LF;
OWS := *(WSP);
RWS := WSP OWS;
CTL := %x00–1F;
CRLF := CR LF;
BIT := "0" | "1";
WORD_CHAR := ???;
WORD := 1*(WORD_CHAR);