summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralbert-github <albert.tests@gmail.com>2018-05-22 16:57:05 (GMT)
committeralbert-github <albert.tests@gmail.com>2018-05-22 16:57:05 (GMT)
commit48817487de116ee526714587900380e53b195f5e (patch)
tree751512113237cceb9dd428902957594ce64c0b41
parentf10c9a42cd3b506cb5bb5cf0192c9e221adafa72 (diff)
downloadDoxygen-48817487de116ee526714587900380e53b195f5e.zip
Doxygen-48817487de116ee526714587900380e53b195f5e.tar.gz
Doxygen-48817487de116ee526714587900380e53b195f5e.tar.bz2
Small problems when displaying python code
- with was not colored (in pyscanner the KEYWORD item was not used, so removed as dead code) - incorrect handling of a 'triquote' at end of string - incorrect handling of a stringprefix followed by the end of a string
-rw-r--r--src/pycode.l30
-rw-r--r--src/pyscanner.l1
2 files changed, 26 insertions, 5 deletions
diff --git a/src/pycode.l b/src/pycode.l
index fe1eef5..1b176d6 100644
--- a/src/pycode.l
+++ b/src/pycode.l
@@ -884,7 +884,7 @@ SHORTSTRINGITEM ({SHORTSTRINGCHAR}|{ESCAPESEQ})
SHORTSTRINGCHAR [^\\\n"]
STRINGLITERAL {STRINGPREFIX}?( {SHORTSTRING} | {LONGSTRING})
STRINGPREFIX ("r"|"u"|"ur"|"R"|"U"|"UR"|"Ur"|"uR")
-KEYWORD ("lambda"|"import"|"class"|"assert"|"as"|"from"|"global"|"def"|"True"|"False")
+KEYWORD ("lambda"|"import"|"class"|"assert"|"with"|"as"|"from"|"global"|"def"|"True"|"False")
FLOWKW ("or"|"and"|"is"|"not"|"print"|"for"|"in"|"if"|"try"|"except"|"yield"|"raise"|"break"|"continue"|"pass"|"if"|"return"|"while"|"elif"|"else"|"finally")
QUOTES ("\""[^"]*"\"")
SINGLEQUOTES ("'"[^']*"'")
@@ -1382,21 +1382,43 @@ TARGET ({IDENTIFIER}|"("{TARGET_LIST}")"|"["{TARGET_LIST}"]"|{ATTRIBUT
}
*/
-<*>{STRINGPREFIX}?{TRISINGLEQUOTE} |
+<*>{STRINGPREFIX}?{TRISINGLEQUOTE} {
+ if (YY_START==SingleQuoteString) REJECT;
+ startFontClass("stringliteral");
+ g_stringContext=YY_START;
+ g_doubleQuote=yytext[yyleng-1]=='"';
+ codify(yytext);
+ BEGIN(TripleString);
+ }
<*>{STRINGPREFIX}?{TRIDOUBLEQUOTE} {
- startFontClass("stringliteral");
+ if (YY_START==DoubleQuoteString) REJECT;
+ startFontClass("stringliteral");
g_stringContext=YY_START;
g_doubleQuote=yytext[yyleng-1]=='"';
- codify(yytext);
+ codify(yytext);
BEGIN(TripleString);
}
<*>{STRINGPREFIX}?"'" { // single quoted string
+ if (YY_START==SingleQuoteString ||
+ YY_START==DoubleQuoteString ||
+ YY_START==TripleString
+ )
+ {
+ REJECT;
+ }
startFontClass("stringliteral");
g_stringContext=YY_START;
codify(yytext);
BEGIN(SingleQuoteString);
}
<*>{STRINGPREFIX}?"\"" { // double quoted string
+ if (YY_START==SingleQuoteString ||
+ YY_START==DoubleQuoteString ||
+ YY_START==TripleString
+ )
+ {
+ REJECT;
+ }
startFontClass("stringliteral");
g_stringContext=YY_START;
codify(yytext);
diff --git a/src/pyscanner.l b/src/pyscanner.l
index 5c9aef5..4718e3b 100644
--- a/src/pyscanner.l
+++ b/src/pyscanner.l
@@ -487,7 +487,6 @@ SHORTSTRINGITEM ({SHORTSTRINGCHAR}|{ESCAPESEQ})
SHORTSTRINGCHAR [^\\\n"]
STRINGLITERAL {STRINGPREFIX}?( {SHORTSTRING} | {LONGSTRING})
STRINGPREFIX ("r"|"u"|"ur"|"R"|"U"|"UR"|"Ur"|"uR")
-KEYWORD ("lambda"|"import"|"class"|"assert"|"as"|"from"|"global"|"def"|"True"|"False")
FLOWKW ("or"|"and"|"is"|"not"|"print"|"for"|"in"|"if"|"try"|"except"|"yield"|"raise"|"break"|"continue"|"pass"|"if"|"return"|"while"|"elif"|"else"|"finally")
POUNDCOMMENT "#"[^#\n][^\n]*
SCRIPTCOMMENT "#!".*