diff options
author | albert-github <albert.tests@gmail.com> | 2020-08-24 11:13:59 (GMT) |
---|---|---|
committer | albert-github <albert.tests@gmail.com> | 2020-08-24 11:13:59 (GMT) |
commit | 942fcfaf391d1213bee26e43249fea8da723d714 (patch) | |
tree | 033c33b0a8f9f2e58a0332354c75393b933ec8ba /src/code.l | |
parent | 8578e6bead66cae44b61214b3a43f776ed008362 (diff) | |
download | Doxygen-942fcfaf391d1213bee26e43249fea8da723d714.zip Doxygen-942fcfaf391d1213bee26e43249fea8da723d714.tar.gz Doxygen-942fcfaf391d1213bee26e43249fea8da723d714.tar.bz2 |
bug_786382 Unmatched single quote in C++ source breaks aliases
Based on the definition in the (informative) Annex A of the C++ draft 2020 standard (N4849, part [gram.lex]), the definitions have been made for the lexer.
Now integer and floating point constants wit a single quote are seen as numbers and not as part of character constants.
(also tested on CGAL)
Diffstat (limited to 'src/code.l')
-rw-r--r-- | src/code.l | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -402,6 +402,32 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP} RAWBEGIN (u|U|L|u8)?R\"[^ \t\(\)\\]{0,16}"(" RAWEND ")"[^ \t\(\)\\]{0,16}\" + //Note same defines in commentcnv.l +DECIMAL_INTEGER [1-9][0-9']*[0-9]?[uU]?[lL]?[lL]? +HEXADECIMAL_INTEGER "0"[xX][0-9a-zA-Z']+[0-9a-zA-Z]? +OCTAL_INTEGER "0"[0-7][0-7']+[0-7]? +BINARY_INTEGER "0"[bB][01][01']*[01]? +INTEGER_NUMBER {DECIMAL_INTEGER}|{HEXADECIMAL_INTEGER}|{OCTAL_INTEGER}|{BINARY_INTEGER} + +FP_SUF [fFlL] + +DIGIT_SEQ [0-9][0-9']*[0-9]? +FRAC_CONST {DIGIT_SEQ}"."|{DIGIT_SEQ}?"."{DIGIT_SEQ} +FP_EXP [eE][+-]?{DIGIT_SEQ} +DEC_FP1 {FRAC_CONST}{FP_EXP}?{FP_SUF}? +DEC_FP2 {DIGIT_SEQ}{FP_EXP}{FP_SUF} + +HEX_DIGIT_SEQ [0-9a-fA-F][0-9a-fA-F']*[0-9a-fA-F]? +HEX_FRAC_CONST {HEX_DIGIT_SEQ}"."|{HEX_DIGIT_SEQ}?"."{HEX_DIGIT_SEQ} +BIN_EXP [pP][+-]?{DIGIT_SEQ} +HEX_FP1 "0"[xX]{HEX_FRAC_CONST}{BIN_EXP}{FP_SUF}? +HEX_FP2 "0"[xX]{HEX_DIGIT_SEQ}{BIN_EXP}{FP_SUF}? + +FLOAT_DECIMAL {DEC_FP1}|{DEC_FP2} +FLOAT_HEXADECIMAL {HEX_FP1}|{HEX_FP2} +FLOAT_NUMBER {FLOAT_DECIMAL}|{FLOAT_HEXADECIMAL} +NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER} + %option noyywrap %x SkipString @@ -1245,6 +1271,10 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\" yyextra->inForEachExpression = FALSE; BEGIN( SkipString ); } +<FuncCall,Body,MemberCall,MemberCall2,SkipInits,InlineInit>{NUMBER} { //Note similar code in commentcnv.l + if (yyextra->lang!=SrcLangExt_Cpp) REJECT; + yyextra->code->codify(yytext); + } <FuncCall,Body,MemberCall,MemberCall2,SkipInits,InlineInit>\' { startFontClass(yyscanner,"stringliteral"); yyextra->code->codify(yytext); |