Because fuck off

Jan 28, 2016 23:51



DIGIT_CHARS = (48..57)+;
TAG_CHARS = (33 | 35..36 | 38..39 | 44..91 | 93..122 | 124..126)+;
ATOM_CHARS = (33 | 35..36 | 38..39 | 42 | 44..61 | 63..90 | 92 | 94..122 | 124..126)+;
SP = ' ';
CR = '\r';
LF = '\n';
CRLF = (CR ? LF);

BRACKET = ('(' | ')' | '[' | ']' | '<' | '>') @BRACKETS;
WSP = (SP | BRACKET) +;

TAG = TAG_CHARS >TAG_START @PUSH_TAG_DATA %TAG_END;

ATOM = (ATOM_CHARS+) >ATOM_START @PUSH_DATA %ATOM_END;

QUOTED_CHAR = 1..9 | 11..12 | 14..33 | 35..91 | 93..127;
DQUOTE = 92;
QUOTED_SPECIALS = 34 | 92;
STRING_CHARS = QUOTED_CHAR | (DQUOTE QUOTED_SPECIALS);
STRING = '"' >STRING_START STRING_CHARS** @STRING_CHAR '"' %STRING_END;

LITERAL = '{' DIGIT_CHARS >LITERAL_START @LITERAL_DATA '+'? @LITERAL_PLUS_END '}' CRLF @LITERAL_END;

TERM = ATOM | STRING | LITERAL;
TERMS = (TERM (WSP TERM)*);

CMD = (65..90 | 97..122)+;
COMMAND = (("UID"i %CMD_UID SP)? CMD);

COMMANDS = TAG WSP+ COMMAND ( CRLF | (WSP+ TERMS WSP* CRLF) ) @CRLF_END;
main := COMMANDS $!SYNTAX_ERROR;

рабочее, imap

Previous post Next post
Up