diff options
Diffstat (limited to 'src/scanner.l')
-rw-r--r-- | src/scanner.l | 58 |
1 files changed, 38 insertions, 20 deletions
diff --git a/src/scanner.l b/src/scanner.l index b102853..3bd0fad 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -559,27 +559,17 @@ BN [ \t\n\r] BL [ \t\r]*"\n" B [ \t] BS ^(({B}*"//")?)(({B}*"*"+)?){B}* -FILESCHAR [a-z_A-Z0-9\\:\\\/\-\+] -FILEECHAR [a-z_A-Z0-9\-\+] +FILESCHAR [a-z_A-Z0-9\x80-\xFF\\:\\\/\-\+] +FILEECHAR [a-z_A-Z0-9\x80-\xFF\-\+] FILE ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|("\""[^\n\"]+"\"") -ID "$"?[a-z_A-Z][a-z_A-Z0-9]* -LABELID [a-z_A-Z][a-z_A-Z0-9\-]* +ID "$"?[a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]* SCOPEID {ID}({ID}*{BN}*"::"{BN}*)*({ID}?) SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)(((~|!){BN}*)?{ID}) TSCOPE {ID}("<"[a-z_A-Z0-9 \t\*\&,]*">")? FTSCOPE {ID}("<"[a-z_A-Z0-9\*\&,]*">")? CSSCOPENAME (({ID}?{BN}*"."{BN}*)*)((~{BN}*)?{ID}) -ATTR ({B}+[^>\n]*)? -A [aA] -BR [bB][rR] PRE [pP][rR][eE] CODE [cC][oO][dD][eE] -TABLE [tT][aA][bB][lL][eE] -P [pP] -UL [uU][lL] -OL [oO][lL] -DL [dD][lL] -TITLE [tT][iI][tT][lL][eE] CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] IDLATTR ("["[^\]]*"]"){BN}* @@ -795,12 +785,19 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) else REJECT; } - <FindMembers>{PHPKW} { if (insidePHP) BEGIN( NextSemi ); else REJECT; } +<FindMembers>"%{"[^\n]* { // Mozilla XPIDL lang-specific block + if (!insideIDL) + REJECT; + } +<FindMembers>"%}" { // Mozilla XPIDL lang-specific block end + if (!insideIDL) + REJECT; + } <FindMembers>{B}*("properties"){BN}*":"{BN}* { // IDL or Borland C++ builder property current->mtype = mtype = Property; current->protection = protection = Public ; @@ -4326,11 +4323,11 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) current->spec |= Entry::Template; current->tArgLists->append(al); currentArgumentList = al; - current->name+="<"; + //current->name+="<"; templateStr="<"; fullArgString = templateStr; - copyArgString = ¤t->name; - currentArgumentContext = CompoundName; + copyArgString = ¤t->args; + currentArgumentContext = ClassVar; BEGIN( ReadTempArgs ); } <ObjCProtocolList>"<" { @@ -4464,6 +4461,14 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) lastCSConstraint = YY_START; BEGIN( CSConstraintName ); } + else if (insideCli && strcmp(yytext,"abstract")) + { + current->spec|=Entry::Abstract; + } + else if (insideCli && strcmp(yytext,"sealed")) + { + current->spec|=Entry::Sealed; + } else { if (current->section == Entry::ENUM_SEC) @@ -4672,9 +4677,22 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) <BasesProt>{BN} { lineCount(); } <BasesProt>. { unput(*yytext); BEGIN(Bases); } <Bases>("::")?{BN}*({ID}{BN}*"::"{BN}*)*{ID} { - baseName+=yytext; - current->args += ' '; - current->args += yytext; + QCString baseScope = yytext; + if (insideCS && baseScope.stripWhiteSpace()=="where") + { + // type contraint for a class + delete current->typeConstr; + current->typeConstr = new ArgumentList; + current->typeConstr->append(new Argument); + lastCSConstraint = YY_START; + BEGIN( CSConstraintName ); + } + else + { + baseName+=yytext; + current->args += ' '; + current->args += yytext; + } } <Bases>{BN}*{ID}("."{ID})* { // Java style class QCString name = substitute(yytext,".","::"); |