Fixes triple-quoted string parsing (PY-84, PY-87).

This commit is contained in:
Dmitry Cheryasov
2008-10-10 22:46:24 +04:00
parent 755d17b407
commit 8d2056de20
2 changed files with 421 additions and 410 deletions
@@ -43,9 +43,23 @@ RAW_STRING=[Rr]{QUOTED_STRING}
QUOTED_STRING=({TRIPLE_APOS_LITERAL})|({QUOTED_LITERAL})|({DOUBLE_QUOTED_LITERAL})|({TRIPLE_QUOTED_LITERAL})
QUOTED_LITERAL="'"([^\\\'\r\n]|{ESCAPE_SEQUENCE}|(\\[\r\n]))*("'"|\\)?
DOUBLE_QUOTED_LITERAL=\"([^\\\"\r\n]|{ESCAPE_SEQUENCE}|(\\[\r\n]))*?(\"|\\)?
ESCAPE_SEQUENCE=\\[^\r\n]
/*
TRIPLE_QUOTED_LITERAL="\"\"\""~([^\\]"\"\"\"")
TRIPLE_APOS_LITERAL="\'\'\'"~([^\\]"\'\'\'")
ESCAPE_SEQUENCE=\\[^\r\n]
*/
THREE_QUO = (\"\"\")
ESCAPED_CHAR = (\\[^] | [^\\])
NONQUO_CHAR = (\\[^] | [^i\\\"])
STRING_3CHAR_QUO = ({ESCAPED_CHAR}{1,2}? {NONQUO_CHAR})
TRIPLE_QUOTED_LITERAL = {THREE_QUO} {STRING_3CHAR_QUO}* {THREE_QUO}
THREE_APOS = (\'\'\')
NONAPOS_CHAR = (\\[^] | [^i\\\'])
STRING_3CHAR_APOS = ({ESCAPED_CHAR}{1,2}? {NONAPOS_CHAR})
TRIPLE_APOS_LITERAL = {THREE_APOS} {STRING_3CHAR_APOS}* {THREE_APOS}
%%
File diff suppressed because it is too large Load Diff