19%option never-interactive
20%option prefix="doctokenizerYY"
22%option extra-type="struct doctokenizerYY_state *"
26#define YY_TYPEDEF_YY_SCANNER_T
54#define YY_NO_UNISTD_H 1
91 std::stack< std::unique_ptr<DocLexerContext> >
lexerStack;
97#define lineCount(s,len) do { for(int i=0;i<(int)len;i++) if (s[i]=='\n') yyextra->yyLineNr++; } while(0)
110 int nl1 = text.
find(
'\n');
111 int nl2 = text.
find(
"\\ilinebr");
112 if (nl1!=-1 && nl1<nl2)
114 return text.
mid(nl1+1);
118 if (text.
at(nl2+8)==
' ') nl2++;
119 return text.
mid(nl2+8);
128 if (str==0 || length==std::string::npos)
return 0;
132 for (i=0;i<length;i++)
136 indent+=tabSize - (indent%tabSize);
138 else if (str[i]==
'\n')
146 if (str[i+1]==
' ') i++;
159#define unput_string(yytext,yyleng) do { for (int i=(int)yyleng-1;i>=0;i--) unput(yytext[i]); } while(0)
163#define YY_INPUT(buf,result,max_size) result=yyread(yyscanner,buf,max_size);
170#define YY_DECL static Token doctokenizerYYlex(yyscan_t yyscanner)
173#define yyterminate() return Token::make_TK_EOF()
The common base class of all entity definitions found in the sources.
This is an alternative implementation of QCString.
int find(char c, int index=0, bool cs=TRUE) const
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
char & at(size_t i)
Returns a reference to the character at index i.
#define Config_getInt(name)
QCString extractPartAfterNewLine(const QCString &text)
static void processSection(yyscan_t yyscanner)
static int yyread(yyscan_t yyscanner, char *buf, int max_size)
static const char * stateToString(int state)
static void handleHtmlTag(yyscan_t yyscanner, const char *text)
static const char * getLexerFILE()
static int computeIndent(const char *str, size_t length)
Portable versions of functions that are platform dependent.
Some helper functions for std::string.
bool literal_at(const char *data, const char(&str)[N])
returns TRUE iff data points to a substring that matches string literal str
DocLexerContext(const TokenInfo &tk, int r, int lvl, yy_size_t pos, const char *s, YY_BUFFER_STATE bs)
Data associated with a token used by the comment block parser.
const Definition * definition
std::stack< int > stateStack
std::stack< std::unique_ptr< DocLexerContext > > lexerStack
182ID [$a-z_A-Z\x80-\xFF][$a-z_A-Z0-9\x80-\xFF]*
183LABELID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-]*
184CODEID [a-zA-Z][a-zA-Z0-9+]*
185PHPTYPE [?]?[\\:a-z_A-Z0-9\x80-\xFF\-]+
186CITESCHAR [a-z_A-Z0-9\x80-\xFF\-\?]
187CITEECHAR [a-z_A-Z0-9\x80-\xFF\-\+:\/\?]
188CITEID {CITESCHAR}{CITEECHAR}*("."{CITESCHAR}{CITEECHAR}*)*|"\""{CITESCHAR}{CITEECHAR}*("."{CITESCHAR}{CITEECHAR}*)*"\""
189DOXYCFG [A-Z][A-Z_0-9]*
190MAILADDR ("mailto:")?[a-z_A-Z0-9\x80-\xFF.+-]+"@"[a-z_A-Z0-9\x80-\xFf-]+("."[a-z_A-Z0-9\x80-\xFf\-]+)+[a-z_A-Z0-9\x80-\xFf\-]+
191MAILWS [\t a-z_A-Z0-9\x80-\xFF+-]
192MAILADDR2 {MAILWS}+{BLANK}+("at"|"AT"|"_at_"|"_AT_"){BLANK}+{MAILWS}+("dot"|"DOT"|"_dot_"|"_DOT_"|"point"|"POINT"|"_point_"|"_POINT_"){BLANK}+{MAILWS}+
193LISTITEM {BLANK}*[-]("#")?{WS}
194MLISTITEM {BLANK}*[+*]{WS}
195OLISTITEM {BLANK}*("0"|[1-9][0-9]*)"."{BLANK}
196CLISTITEM {BLANK}*[-]{BLANK}*"\["[ xX]"\]"
197ENDLIST {BLANK}*"."{BLANK}*(\n|"\\ilinebr")
198ATTRNAME [a-z_A-Z\x80-\xFF][:a-z_A-Z0-9\x80-\xFF\-]*
199ATTRIB {ATTRNAME}{WS}*("="{WS}*(("\""[^\"]*"\"")|("'"[^\']*"'")|[^ \t\r\n'"><]+))?
200URLCHAR [a-z_A-Z0-9\!\~\,\:\;\'\$\?\@\&\%\#\.\-\+\/\=\x80-\xFF]
201URLMASK ({URLCHAR}+([({]{URLCHAR}*[)}])?)+
202URLPROTOCOL ("http:"|"https:"|"ftp:"|"ftps:"|"sftp:"|"file:"|"news:"|"irc:"|"ircs:")
203FILEICHAR [a-z_A-Z0-9\x80-\xFF\\:\\\/\-\+=&#@~]
204FILEECHAR [a-z_A-Z0-9\x80-\xFF\-\+=&#@~]
205FILECHARS {FILEICHAR}*{FILEECHAR}+
206HFILEMASK {FILEICHAR}*("."{FILEICHAR}+)+{FILECHARS}*
207VFILEMASK {FILECHARS}("."{FILECHARS})*
208FILEMASK {VFILEMASK}|{HFILEMASK}
209LINKMASK [^ \t\n\r\\@<&${}]+("("[^\n)]*")")?({BLANK}*("const"|"volatile"){BLANK}+)?
210VERBATIM "verbatim"{BLANK}*
211SPCMD1 {CMD}([a-z_A-Z][a-z_A-Z0-9]*|{VERBATIM}|"--"|"---")
212SPCMD2 {CMD}[\\@<>&$#%~".+=|!?-]
213SPCMD3 {CMD}_form#[0-9]+
216INOUT "in"|"out"|("in"{BLANK}*","?{BLANK}*"out")|("out"{BLANK}*","?{BLANK}*"in")
217PARAMIO {CMD}param{BLANK}*"["{BLANK}*{INOUT}{BLANK}*"]"
219TEMPCHAR [a-z_A-Z0-9.,: \t\*\&\(\)\[\]]
220FUNCCHAR [a-z_A-Z0-9,:<> \t\n\^\*\&\[\]]|{VARARGS}|"\\ilinebr"
221FUNCPART {FUNCCHAR}*("("{FUNCCHAR}*")"{FUNCCHAR}*)?
223TEMPLPART "<"{TEMPCHAR}*("<"{TEMPCHAR}*("<"{TEMPCHAR}*">")?">")?">"
224ANONNS "anonymous_namespace{"[^}]*"}"
225SCOPEPRE (({ID}{TEMPLPART}?)|{ANONNS}){SCOPESEP}
226SCOPEKEYS ":"({ID}":")*
227SCOPECPP {SCOPEPRE}*(~)?{ID}{TEMPLPART}?
228SCOPECPPN {SCOPEPRE}*(~)?{ID}
229SCOPEOBJC {SCOPEPRE}?{ID}{SCOPEKEYS}?
230SCOPEMASK {SCOPECPP}|{SCOPEOBJC}
231SCOPEMSKN {SCOPECPPN}|{SCOPEOBJC}
232FUNCARG "("{FUNCPART}")"({BLANK}*("volatile"|"const"){BLANK})?
233FUNCARG2 "("{FUNCPART}")"({BLANK}*("volatile"|"const"))?
234OPNEW {BLANK}+"new"({BLANK}*"[]")?
235OPDEL {BLANK}+"delete"({BLANK}*"[]")?
236OPNORM {OPNEW}|{OPDEL}|"+"|"-"|"*"|"/"|"%"|"^"|"&"|"|"|"~"|"!"|"="|"<"|">"|"+="|"-="|"*="|"/="|"%="|"^="|"&="|"|="|"<<"|">>"|"<<="|">>="|"=="|"!="|"<="|">="|"&&"|"||"|"++"|"--"|","|"->*"|"->"|"[]"|"()"|"<=>"
237OPCAST {BLANK}+[^<(\r\n.,][^(\r\n.,]*
238OPMASK ({BLANK}*{OPNORM}{FUNCARG})
239OPMASKOPT ({BLANK}*{OPNORM}{FUNCARG}?)|({OPCAST}{FUNCARG})
240OPMASKOP2 ({BLANK}*{OPNORM}{FUNCARG2}?)|({OPCAST}{FUNCARG2})
241LNKWORD1 ("::"|"#")?{SCOPEMASK}
242LNKWORDN ("::"|"#")?{SCOPEMSKN}
243CVSPEC {BLANK}*("const"|"volatile")
244LNKWORD2 (({SCOPEPRE}*"operator"{OPMASK})|({SCOPEPRE}"operator"{OPMASKOPT})|(("::"|"#"){SCOPEPRE}*"operator"{OPMASKOPT})){CVSPEC}?
245LNKWORD3 ([0-9a-z_A-Z\-]+("/"|"\\"))*[0-9a-z_A-Z\-]+("."[0-9a-z_A-Z]+)+
246CHARWORDQ [^ \t\n\r\\@<>()\[\]:;\?{}&%$#,."=']
247ESCWORD ("%"{ID}(("::"|"."){ID})*)|("%'")
248CHARWORDQ1 [^ \-+0-9\t\n\r\\@<>()\[\]:;\?{}&%$#,."=']
249WORD1 {ESCWORD}|{CHARWORDQ1}{CHARWORDQ}*|"{"|"}"|"'\"'"|("\""([^"\n]*(\\\"|\n)?)*[^"\n]*"\"")
250WORD2 "."|","|"("|")"|"["|"]"|"::"|":"|";"|"\?"|"="|"'"
251WORD1NQ {ESCWORD}|{CHARWORDQ}+|"{"|"}"
252WORD2NQ "."|","|"("|")"|"["|"]"|"::"|":"|";"|"\?"|"="|"'"
253CAPTION [cC][aA][pP][tT][iI][oO][nN]
254HTMLTAG "<"(("/")?){ID}({WS}+{ATTRIB})*{WS}*(("/")?)">"
255HTMLKEYL "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"pre"|"sub"|"sup"|"tr"|"td"|"th"|"ol"|"ul"|"li"|"tt"|"kbd"|"em"|"hr"|"dl"|"dt"|"dd"|"br"|"i"|"a"|"b"|"p"|"strike"|"u"|"del"|"ins"|"s"
256HTMLKEYU "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"SUP"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P"|"STRIKE"|"U"|"DEL"|"INS"|"S"
257HTMLKEYW {HTMLKEYL}|{HTMLKEYU}
258HTMLTAG_STRICT "<"(("/")?){HTMLKEYW}({WS}+{ATTRIB})*{WS}*(("/")?)">"
259REFWORD2_PRE ("#"|"::")?((({ID}{TEMPLPART}?)|{ANONNS})("."|"#"|"::"|"-"|"/"))*({ID}{TEMPLPART}?(":")?)
260REFWORD2 {REFWORD2_PRE}{FUNCARG2}?
261REFWORD2_NOCV {REFWORD2_PRE}("("{FUNCPART}")")?
262REFWORD3 ({ID}":")*{ID}":"?
263REFWORD4_NOCV (({SCOPEPRE}*"operator"{OPMASKOP2})|(("::"|"#"){SCOPEPRE}*"operator"{OPMASKOP2}))
264REFWORD4 {REFWORD4_NOCV}{CVSPEC}?
265REFWORD {FILEMASK}|{LABELID}|{REFWORD2}|{REFWORD3}|{REFWORD4}
266REFWORD_NOCV {FILEMASK}|{LABELID}|{REFWORD2_NOCV}|{REFWORD3}|{REFWORD4_NOCV}
267RCSID "$"("Author"|"Date"|"Header"|"Id"|"Locker"|"Log"|"Name"|"RCSfile"|"Revision"|"Source"|"State")":"[^:\n$][^\n$]*"$"
268LINENR {BLANK}*([1-9][0-9]*|"0"|"-1")
270SHOWDATE ([0-9]{4}"-"[0-9]{1,2}"-"[0-9]{1,2})?({WS}*[0-9]{1,2}":"[0-9]{1,2}(":"[0-9]{1,2})?)?
337<St_Para>^{LISTITEM} {
338 if (yyextra->insideHtmlLink || yyextra->insidePre) REJECT;
341 uint32_t dashPos =
static_cast<uint32_t
>(text.findRev(
'-'));
342 assert(dashPos!=
static_cast<uint32_t
>(-1));
343 yyextra->token.isEnumList = text.at(dashPos+1)==
'#';
344 yyextra->token.isCheckedList =
false;
345 yyextra->token.id = -1;
347 return Token::make_TK_LISTITEM();
#define lineCount(s, len)
349<St_Para>^{CLISTITEM} {
351 int dashPos = text.
findRev(
'-');
352 yyextra->token.isEnumList =
false;
353 yyextra->token.isCheckedList =
true;
358 return Token::make_TK_LISTITEM();
int findRev(char c, int index=-1, bool cs=TRUE) const
360<St_Para>^{MLISTITEM} {
361 if (yyextra->insideHtmlLink || !yyextra->markdownSupport || yyextra->insidePre)
368 std::string text(yytext);
369 static const reg::Ex re(R
"([*+][^*+]*$)");
372 size_t listPos =
match.position();
373 assert(listPos!=std::string::npos);
374 yyextra->token.isEnumList =
false;
375 yyextra->token.isCheckedList =
false;
376 yyextra->token.id = -1;
378 return Token::make_TK_LISTITEM();
Class representing a regular expression.
Object representing the matching results.
bool search(std::string_view str, Match &match, const Ex &re, size_t pos)
Search in a given string str starting at position pos for a match against regular expression re.
bool match(std::string_view str, Match &match, const Ex &re)
Matches a given string str for a match against regular expression re.
381<St_Para>^{OLISTITEM} {
382 if (yyextra->insideHtmlLink || !yyextra->markdownSupport || yyextra->insidePre)
388 std::string text(yytext);
389 static const reg::Ex re(R
"(\d+)");
392 size_t markPos =
match.position();
393 assert(markPos!=std::string::npos);
394 yyextra->token.isEnumList =
true;
395 yyextra->token.isCheckedList =
false;
398 yyextra->token.id = ok ? id : -1;
401 warn(yyextra->fileName,yyextra->yyLineNr,
"Invalid number for list item '{}' ",
match.str());
404 return Token::make_TK_LISTITEM();
int toInt(bool *ok=nullptr, int base=10) const
#define warn(file, line, fmt,...)
407<St_Para>{BLANK}*(\n|"\\ilinebr"){LISTITEM} {
408 if (yyextra->insideHtmlLink || yyextra->insidePre) REJECT;
411 uint32_t dashPos =
static_cast<uint32_t
>(text.
findRev(
'-'));
412 assert(dashPos!=
static_cast<uint32_t
>(-1));
413 yyextra->token.isEnumList = text.
at(dashPos+1)==
'#';
414 yyextra->token.isCheckedList =
false;
415 yyextra->token.id = -1;
417 return Token::make_TK_LISTITEM();
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
419<St_Para>{BLANK}*\n{CLISTITEM} {
422 int dashPos = text.
findRev(
'-');
423 yyextra->token.isEnumList =
false;
424 yyextra->token.isCheckedList =
true;
429 return Token::make_TK_LISTITEM();
size_t length() const
Returns the length of the string, not counting the 0-terminator.
QCString right(size_t len) const
431<St_Para>{BLANK}*(\n|"\\ilinebr"){MLISTITEM} {
432 if (yyextra->insideHtmlLink || !yyextra->markdownSupport || yyextra->insidePre)
440 static const reg::Ex re(R
"([*+][^*+]*$)");
443 size_t markPos =
match.position();
444 assert(markPos!=std::string::npos);
445 yyextra->token.isEnumList =
FALSE;
446 yyextra->token.isCheckedList =
false;
447 yyextra->token.id = -1;
449 return Token::make_TK_LISTITEM();
const std::string & str() const
452<St_Para>{BLANK}*(\n|"\\ilinebr"){OLISTITEM} {
453 if (yyextra->insideHtmlLink || !yyextra->markdownSupport || yyextra->insidePre)
461 static const reg::Ex re(R
"(\d+)");
464 size_t markPos =
match.position();
465 assert(markPos!=std::string::npos);
466 yyextra->token.isEnumList =
true;
467 yyextra->token.isCheckedList =
false;
470 yyextra->token.id = ok ? id : -1;
473 warn(yyextra->fileName,yyextra->yyLineNr,
"Invalid number for list item '{}' ",
match.str());
476 return Token::make_TK_LISTITEM();
480 if (yyextra->insideHtmlLink || yyextra->insidePre) REJECT;
484 return Token::make_TK_ENDLIST();
486<St_Para>{BLANK}*(\n|"\\ilinebr"){ENDLIST} {
487 if (yyextra->insideHtmlLink || yyextra->insidePre) REJECT;
490 size_t dotPos =
static_cast<size_t>(text.
findRev(
'.'));
492 return Token::make_TK_ENDLIST();
494<St_Para>"{"{BLANK}*"@linkplain"/{WS}+ {
495 yyextra->token.name =
"javalinkplain";
496 return Token::make_TK_COMMAND_AT();
498<St_Para>"{"{BLANK}*"@link"/{WS}+ {
499 yyextra->token.name =
"javalink";
500 return Token::make_TK_COMMAND_AT();
502<St_Para>"{"{BLANK}*"@inheritDoc"{BLANK}*"}" {
503 yyextra->token.name =
"inheritdoc";
504 return Token::make_TK_COMMAND_AT();
510 yyextra->token.name =
"_form";
static Token char_to_command(char c)
519 yyextra->token.name = yytext+1;
520 yyextra->token.name = yyextra->token.name.stripWhiteSpace();
524<St_Para>"\\ilinebr" {
530 yyextra->token.name = yytext+1;
531 yyextra->token.name = yyextra->token.name.stripWhiteSpace();
536 yyextra->token.name =
"param";
538 bool isIn = s.find(
"in")!=-1;
539 bool isOut = s.find(
"out")!=-1;
561<St_Para>{URLPROTOCOL}{URLMASK}/[,\.] {
562 yyextra->token.name=yytext;
563 yyextra->token.isEMailAddr=
FALSE;
564 return Token::make_TK_URL();
566<St_Para>{URLPROTOCOL}{URLMASK} {
567 yyextra->token.name=yytext;
568 yyextra->token.isEMailAddr=
FALSE;
569 return Token::make_TK_URL();
571<St_Para>"<"{URLPROTOCOL}{URLMASK}">" {
572 yyextra->token.name=yytext;
573 yyextra->token.name = yyextra->token.name.mid(1,yyextra->token.name.length()-2);
574 yyextra->token.isEMailAddr=
FALSE;
575 return Token::make_TK_URL();
578 yyextra->token.name=yytext;
579 yyextra->token.name.stripPrefix(
"mailto:");
580 yyextra->token.isEMailAddr=
TRUE;
581 return Token::make_TK_URL();
583<St_Para>"<"{MAILADDR}">" {
584 yyextra->token.name=yytext;
585 yyextra->token.name = yyextra->token.name.mid(1,yyextra->token.name.length()-2);
586 yyextra->token.name.stripPrefix(
"mailto:");
587 yyextra->token.isEMailAddr=
TRUE;
588 return Token::make_TK_URL();
590<St_Para>"<"{MAILADDR2}">" {
591 yyextra->token.name=yytext;
592 return Token::make_TK_WORD();
596 int index=tagName.find(
':');
597 if (index<0) index=0;
598 yyextra->token.name = tagName.left(index);
599 int text_begin = index+2;
600 int text_end =
static_cast<int>(tagName.length())-1;
601 if (tagName[text_begin-1]==
':')
604 if (tagName[text_end-1]==
'#')
609 yyextra->token.text = tagName.mid(text_begin,text_end-text_begin);
610 return Token::make_TK_RCSTAG();
612<St_Para,St_HtmlOnly,St_ManOnly,St_LatexOnly,St_RtfOnly,St_XmlOnly,St_DbOnly>"$("{ID}")" |
613<St_Para,St_HtmlOnly,St_ManOnly,St_LatexOnly,St_RtfOnly,St_XmlOnly,St_DbOnly>"$("{ID}"("{ID}"))" {
615 name = name.left(
static_cast<int>(name.length())-1);
617 for (
int i=
static_cast<int>(value.
length())-1;i>=0;i--) unput(value.
at(i));
QCString getenv(const QCString &variable)
619<St_Para>"<blockquote>‍" {
623 YY_CURRENT_BUFFER->yy_at_bol=1;
626 return Token::make_TK_HTMLTAG();
631 return Token::make_TK_HTMLTAG();
633<St_Para,St_Text>"&"{ID}";" {
634 yyextra->token.name = yytext;
635 return Token::make_TK_SYMBOL();
640<St_Para>{ID}/"<"{HTMLKEYW}">"+ {
643 yyextra->token.name = yytext;
644 return Token::make_TK_LNKWORD();
646<St_Para>{LNKWORDN}/("<"{HTMLKEYW}">")+ {
647 yyextra->token.name = yytext;
648 return Token::make_TK_LNKWORD();
651<St_Para>{LNKWORD1}{FUNCARG} |
654 yyextra->token.name = yytext;
655 return Token::make_TK_LNKWORD();
657<St_Para>{LNKWORD1}{FUNCARG}{CVSPEC}[^a-z_A-Z0-9] {
658 yyextra->token.name = yytext;
659 yyextra->token.name = yyextra->token.name.left(yyextra->token.name.length()-1);
660 unput(yytext[(
int)yyleng-1]);
661 return Token::make_TK_LNKWORD();
665<St_Para,St_Text>[\-+0-9] |
666<St_Para,St_Text>{WORD1} |
667<St_Para,St_Text>{WORD2} {
668 if (
QCString(yytext).find(
"\\ilinebr")!=-1) REJECT;
671 yyextra->token.name = &yytext[1];
673 yyextra->token.name = yytext;
674 return Token::make_TK_WORD();
676<St_Text>({ID}".")+{ID} {
677 yyextra->token.name = yytext;
678 return Token::make_TK_WORD();
680<St_Para,St_Text>"operator"/{BLANK}*"<"[a-zA-Z_0-9]+">" {
682 yyextra->token.name = yytext;
683 return Token::make_TK_WORD();
688<St_Para,St_Text>{BLANK}+ |
689<St_Para,St_Text>{BLANK}*\n{BLANK}* {
691 yyextra->token.chars=yytext;
692 return Token::make_TK_WHITESPACE();
694<St_Text>[\\@<>&$#%~] {
695 yyextra->token.name = yytext;
698<St_Para>({BLANK}*\n)+{BLANK}*\n/{LISTITEM} {
699 if (yyextra->insidePre || yyextra->autoListLevel==0)
705<St_Para>({BLANK}*\n)+{BLANK}*\n/{CLISTITEM} {
706 if (yyextra->insidePre || yyextra->autoListLevel==0)
711<St_Para>({BLANK}*\n)+{BLANK}*\n/{MLISTITEM} {
712 if (!yyextra->markdownSupport || yyextra->insidePre || yyextra->autoListLevel==0)
718<St_Para>({BLANK}*\n)+{BLANK}*\n/{OLISTITEM} {
719 if (!yyextra->markdownSupport || yyextra->insidePre || yyextra->autoListLevel==0)
725<St_Para,St_Param>({BLANK}*(\n|"\\ilinebr"))+{BLANK}*(\n|"\\ilinebr"){BLANK}*/" \\ifile" |
726<St_Para,St_Param>({BLANK}*(\n|"\\ilinebr"))+{BLANK}*(\n|"\\ilinebr"){BLANK}* {
728 if (yyextra->insidePre)
730 yyextra->token.chars=yytext;
731 return Token::make_TK_WHITESPACE();
739 for (i=0;i<yyextra->token.indent;i++)
745 YY_CURRENT_BUFFER->yy_at_bol=1;
747 return Token::make_TK_NEWPARA();
750<St_CodeOpt>{BLANK}*"{"(".")?{CODEID}"}" {
751 yyextra->token.name = yytext;
752 int i=yyextra->token.name.find(
'{');
753 yyextra->token.name = yyextra->token.name.mid(i+1,yyextra->token.name.length()-i-2);
756<St_iCodeOpt>{BLANK}*"{"(".")?{CODEID}"}" {
757 yyextra->token.name = yytext;
758 int i=yyextra->token.name.find(
'{');
759 yyextra->token.name = yyextra->token.name.mid(i+1,yyextra->token.name.length()-i-2);
762<St_CodeOpt>"\\ilinebr" |
768<St_iCodeOpt>"\\ilinebr" |
774<St_Code>{WS}*{CMD}"endcode" {
776 return Token::make_RetVal_OK();
778<St_iCode>{WS}*{CMD}"endicode" {
780 return Token::make_RetVal_OK();
782<St_XmlCode>{WS}*"</code>" {
784 return Token::make_RetVal_OK();
786<St_Code,St_iCode,St_XmlCode>[^\\@\n<]+ |
787<St_Code,St_iCode,St_XmlCode>\n |
788<St_Code,St_iCode,St_XmlCode>. {
790 yyextra->token.verb+=yytext;
792<St_HtmlOnlyOption>" [block]" {
793 yyextra->token.name=
"block";
796<St_HtmlOnlyOption>.|\n {
800<St_HtmlOnlyOption>"\\ilinebr" {
804<St_HtmlOnly>{CMD}"endhtmlonly" {
805 return Token::make_RetVal_OK();
807<St_HtmlOnly>[^\\@\n$]+ |
811 yyextra->token.verb+=yytext;
813<St_ManOnly>{CMD}"endmanonly" {
814 return Token::make_RetVal_OK();
816<St_ManOnly>[^\\@\n$]+ |
820 yyextra->token.verb+=yytext;
822<St_RtfOnly>{CMD}"endrtfonly" {
823 return Token::make_RetVal_OK();
825<St_RtfOnly>[^\\@\n$]+ |
829 yyextra->token.verb+=yytext;
831<St_LatexOnly>{CMD}"endlatexonly" {
832 return Token::make_RetVal_OK();
834<St_LatexOnly>[^\\@\n]+ |
838 yyextra->token.verb+=yytext;
840<St_XmlOnly>{CMD}"endxmlonly" {
841 return Token::make_RetVal_OK();
843<St_XmlOnly>[^\\@\n]+ |
847 yyextra->token.verb+=yytext;
849<St_DbOnly>{CMD}"enddocbookonly" {
850 return Token::make_RetVal_OK();
852<St_DbOnly>[^\\@\n]+ |
856 yyextra->token.verb+=yytext;
858<St_Verbatim>{CMD}"endverbatim" {
859 yyextra->token.verb = yyextra->token.verb.stripLeadingAndTrailingEmptyLines();
860 return Token::make_RetVal_OK();
862<St_ILiteral>{CMD}"endiliteral " {
864 yyextra->token.verb = yyextra->token.verb.mid(1,yyextra->token.verb.length()-2);
865 return Token::make_RetVal_OK();
867<St_iVerbatim>{CMD}"endiverbatim" {
868 yyextra->token.verb = yyextra->token.verb.stripLeadingAndTrailingEmptyLines();
869 return Token::make_RetVal_OK();
871<St_Verbatim,St_iVerbatim,St_ILiteral>[^\\@\n]+ |
872<St_Verbatim,St_iVerbatim,St_ILiteral>\n |
873<St_Verbatim,St_iVerbatim,St_ILiteral>. {
875 yyextra->token.verb+=yytext;
877<St_ILiteralOpt>{BLANK}*"{"[a-zA-Z_,:0-9\. ]*"}" {
879 return Token::make_RetVal_OK();
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
881<St_ILiteralOpt>"\\ilinebr" |
882<St_ILiteralOpt>"\n" |
884 yyextra->token.sectionId =
"";
886 return Token::make_RetVal_OK();
888<St_Dot>{CMD}"enddot" {
889 return Token::make_RetVal_OK();
895 yyextra->token.verb+=yytext;
897<St_Msc>{CMD}("endmsc") {
898 return Token::make_RetVal_OK();
904 yyextra->token.verb+=yytext;
906<St_PlantUMLOpt>{BLANK}*"{"[a-zA-Z_,:0-9\. ]*"}" {
908 return Token::make_RetVal_OK();
910<St_PlantUMLOpt>{BLANK}*{FILEMASK}{BLANK}+/{ID}"=" {
912 return Token::make_RetVal_OK();
914<St_PlantUMLOpt>{BLANK}*{FILEMASK}{BLANK}+/"\"" {
916 return Token::make_RetVal_OK();
918<St_PlantUMLOpt>{BLANK}*{FILEMASK}{BLANKopt}/\n {
920 return Token::make_RetVal_OK();
922<St_PlantUMLOpt>{BLANK}*{FILEMASK}{BLANKopt}/"\\ilinebr" {
924 return Token::make_RetVal_OK();
926<St_PlantUMLOpt>"\\ilinebr" |
927<St_PlantUMLOpt>"\n" |
929 yyextra->token.sectionId =
"";
931 return Token::make_RetVal_OK();
933<St_PlantUML>{CMD}"enduml" {
934 return Token::make_RetVal_OK();
936<St_PlantUML>[^\\@\n]+ |
940 yyextra->token.verb+=yytext;
946 yyextra->token.chars=yytext;
947 return Token::make_TK_WHITESPACE();
955 return Token::make_TK_NONE();
957<St_Title>"\\ilinebr" {
959 return Token::make_TK_NONE();
961<St_TitleN>"&"{ID}";" {
962 yyextra->token.name = yytext;
963 return Token::make_TK_SYMBOL();
965<St_TitleN>{HTMLTAG} {
966 yyextra->token.name = yytext;
968 return Token::make_TK_HTMLTAG();
972 return Token::make_TK_NONE();
974<St_TitleN>"\\ilinebr" {
976 return Token::make_TK_NONE();
980 yyextra->token.name = yytext+1;
986 yyextra->token.name = &yytext[1];
988 yyextra->token.name = yytext;
989 return Token::make_TK_WORD();
994 if (
QCString(yytext).find(
"\\ilinebr")!=-1) REJECT;
997 yyextra->token.name = &yytext[1];
999 yyextra->token.name = yytext;
1000 return Token::make_TK_WORD();
1003 yyextra->token.chars=yytext;
1004 return Token::make_TK_WHITESPACE();
1006<St_TitleQ>"&"{ID}";" {
1007 yyextra->token.name = yytext;
1008 return Token::make_TK_SYMBOL();
1010<St_TitleQ>(\n|"\\ilinebr") {
1012 return Token::make_TK_NONE();
1014<St_TitleQ>{SPCMD1} |
1015<St_TitleQ>{SPCMD2} {
1016 yyextra->token.name = yytext+1;
1020<St_TitleQ>{WORD1NQ} |
1021<St_TitleQ>{WORD2NQ} {
1022 yyextra->token.name = yytext;
1023 return Token::make_TK_WORD();
1026 yyextra->token.chars=yytext;
1027 return Token::make_TK_WHITESPACE();
1031 return Token::make_TK_NONE();
1033<St_TitleA>{BLANK}*{ID}{BLANK}*"="{BLANK}* {
1034 yyextra->token.name = yytext;
1035 int pos = yyextra->token.name.find(
'=');
1037 yyextra->token.name = yyextra->token.name.left(pos).stripWhiteSpace();
1040<St_TitleV>[^ \t\r\n]+ {
1042 yyextra->token.chars = yytext;
1044 return Token::make_TK_WORD();
1046<St_TitleV,St_TitleA>. {
1048 return Token::make_TK_NONE();
1050<St_TitleV,St_TitleA>(\n|"\\ilinebr") {
1052 return Token::make_TK_NONE();
1055<St_Anchor>{LABELID}{WS}? {
1058 return Token::make_TK_WORD();
1062 return Token::make_TK_NONE();
1065 if (yytext[0] ==
'"')
1067 yyextra->token.name=yytext+1;
1068 yyextra->token.name=yyextra->token.name.left(
static_cast<uint32_t
>(yyleng)-2);
1072 yyextra->token.name=yytext;
1074 return Token::make_TK_WORD();
1078 return Token::make_TK_NONE();
1080<St_Cite>(\n|"\\ilinebr") {
1082 return Token::make_TK_NONE();
1086 return Token::make_TK_NONE();
1088<St_DoxyConfig>{DOXYCFG} {
1089 yyextra->token.name=yytext;
1090 return Token::make_TK_WORD();
1092<St_DoxyConfig>{BLANK} {
1094 return Token::make_TK_NONE();
1096<St_DoxyConfig>(\n|"\\ilinebr") {
1098 return Token::make_TK_NONE();
1102 return Token::make_TK_NONE();
1104<St_Ref>{REFWORD_NOCV}/{BLANK}("const")[a-z_A-Z0-9] {
1105 yyextra->token.name=yytext;
1106 return Token::make_TK_WORD();
1108<St_Ref>{REFWORD_NOCV}/{BLANK}("volatile")[a-z_A-Z0-9] {
1109 yyextra->token.name=yytext;
1110 return Token::make_TK_WORD();
1113 yyextra->token.name=yytext;
1114 return Token::make_TK_WORD();
1118 return Token::make_TK_NONE();
1120<St_Ref>{WS}+"\""{WS}* {
1124<St_Ref>(\n|"\\ilinebr") {
1126 return Token::make_TK_NONE();
1128<St_Ref>"\""[^"\n]+"\"" {
1129 yyextra->token.name=
QCString(yytext).
mid(1,yyleng-2);
1130 return Token::make_TK_WORD();
1134 return Token::make_TK_NONE();
1136<St_IntRef>[A-Z_a-z0-9.:/#\-\+\(\)]+ {
1137 yyextra->token.name = yytext;
1138 return Token::make_TK_WORD();
1140<St_IntRef>{BLANK}+"\"" {
1143<St_SetScope>({SCOPEMASK}|{ANONNS}){BLANK}|{FILEMASK} {
1144 yyextra->token.name = yytext;
1145 yyextra->token.name = yyextra->token.name.stripWhiteSpace();
1146 return Token::make_TK_WORD();
1148<St_SetScope>{SCOPEMASK}"<" {
1149 yyextra->token.name = yytext;
1150 yyextra->token.name = yyextra->token.name.stripWhiteSpace();
1151 yyextra->sharpCount=1;
1152 BEGIN(St_SetScopeEnd);
1154<St_SetScope>{BLANK} {
1156<St_SetScopeEnd>"<" {
1157 yyextra->token.name += yytext;
1158 yyextra->sharpCount++;
1160<St_SetScopeEnd>">" {
1161 yyextra->token.name += yytext;
1162 yyextra->sharpCount--;
1163 if (yyextra->sharpCount<=0)
1165 return Token::make_TK_WORD();
1169 yyextra->token.name += yytext;
1171<St_Ref2>"&"{ID}";" {
1172 yyextra->token.name = yytext;
1173 return Token::make_TK_SYMBOL();
1175<St_Ref2>"\""|\n|"\\ilinebr" {
1177 return Token::make_TK_NONE();
1179<St_Ref2>{HTMLTAG_STRICT} {
1182 return Token::make_TK_HTMLTAG();
1186 yyextra->token.name = yytext+1;
1193 yyextra->token.name = yytext;
1194 return Token::make_TK_WORD();
1197 yyextra->token.chars=yytext;
1198 return Token::make_TK_WHITESPACE();
1200<St_XRefItem>{LABELID} {
1201 yyextra->token.name=yytext;
1204 BEGIN(St_XRefItem2);
1206<St_XRefItem2>[0-9]+"." {
1208 numStr=numStr.left((
int)yyleng-1);
1209 yyextra->token.id=numStr.toInt();
1210 return Token::make_RetVal_OK();
1212<St_Para,St_Title,St_Ref2>"<!--" {
1213 yyextra->commentState = YY_START;
1216<St_Param>"\""[^\n\"]+"\"" {
1217 yyextra->token.name = yytext+1;
1218 yyextra->token.name = yyextra->token.name.left((
int)yyleng-2);
1219 return Token::make_TK_WORD();
1221<St_Param>({PHPTYPE}{BLANK}*("["{BLANK}*"]")*{BLANK}*"|"{BLANK}*)*{PHPTYPE}{BLANK}*("["{BLANK}*"]")*{WS}+("&")?"$"{LABELID} {
1224 int j = params.find(
'&');
1225 int i = params.find(
'$');
1227 if (j<i && j>=0) i=j;
1229 yyextra->token.name = types+
"#"+params.
mid(i);
1230 return Token::make_TK_WORD();
QCString left(size_t len) const
1232<St_Param>[^ \t\n,@\\]+ {
1233 yyextra->token.name = yytext;
1234 if (yyextra->token.name.at(
static_cast<uint32_t
>(yyleng)-1)==
':')
1236 yyextra->token.name=yyextra->token.name.left(
static_cast<uint32_t
>(yyleng)-1);
1238 return Token::make_TK_WORD();
1240<St_Param>{WS}*","{WS}*
1243 yyextra->token.chars=yytext;
1244 return Token::make_TK_WHITESPACE();
1246<St_Prefix>"\""[^\n\"]*"\"" {
1247 yyextra->token.name = yytext+1;
1248 yyextra->token.name = yyextra->token.name.left((
int)yyleng-2);
1249 return Token::make_TK_WORD();
1253 return Token::make_TK_NONE();
1256 yyextra->token.name+=yytext;
1258<St_Options>{WS}*":"{WS}* {
1260 yyextra->token.name+=
":";
1262<St_Options>{WS}*","{WS}* |
1265 yyextra->token.name+=
",";
1268 return Token::make_TK_WORD();
1271 yyextra->token.name+=yytext;
1274 return Token::make_TK_WORD();
1276<St_Emoji>[:0-9_a-z+-]+ {
1277 yyextra->token.name=yytext;
1278 return Token::make_TK_WORD();
1282 return Token::make_TK_NONE();
1284<St_QuotedString>"\"" {
1285 yyextra->token.name=
"";
1286 BEGIN(St_QuotedContent);
1288<St_QuotedString>(\n|"\\ilinebr") {
1290 return Token::make_TK_NONE();
1294 return Token::make_TK_NONE();
1296<St_QuotedContent>"\"" {
1297 return Token::make_TK_WORD();
1299<St_QuotedContent>. {
1300 yyextra->token.name+=yytext;
1302<St_ShowDate>{WS}+{SHOWDATE} {
1304 yyextra->token.name=yytext;
1305 return Token::make_TK_WORD();
1307<St_ShowDate>(\n|"\\ilinebr") {
1309 return Token::make_TK_NONE();
1313 return Token::make_TK_NONE();
1315<St_ILine>{LINENR}/[\\@\n\.] |
1316<St_ILine>{LINENR}{BLANK} {
1321 warn(yyextra->fileName,yyextra->yyLineNr,
"Invalid line number '{}' for iline command",yytext);
1325 yyextra->yyLineNr = nr;
1327 return Token::make_TK_WORD();
1330 return Token::make_TK_NONE();
1332<St_IFile>{BLANK}*{FILEMASK} {
1334 return Token::make_TK_WORD();
1336<St_IFile>{BLANK}*"\""[^\n\"]+"\"" {
1339 yyextra->fileName = text.
mid(1,text.
length()-2);
1340 return Token::make_TK_WORD();
1342<St_File>{FILEMASK} {
1343 yyextra->token.name = yytext;
1344 return Token::make_TK_WORD();
1346<St_File>"\""[^\n\"]+"\"" {
1348 yyextra->token.name = text.
mid(1,text.
length()-2);
1349 return Token::make_TK_WORD();
1351<St_Pattern>[^\\\r\n]+ {
1352 yyextra->token.name += yytext;
1354<St_Pattern>"\\ilinebr" {
1355 yyextra->token.name = yyextra->token.name.stripWhiteSpace();
1356 return Token::make_TK_WORD();
1360 yyextra->token.name = yyextra->token.name.stripWhiteSpace();
1361 return Token::make_TK_WORD();
1364 yyextra->token.name += yytext;
1366<St_Link>{LINKMASK}|{REFWORD} {
1367 yyextra->token.name = yytext;
1368 return Token::make_TK_WORD();
1371 BEGIN(yyextra->commentState);
1379<St_SkipTitle>(\n|"\\ilinebr") {
1380 if (*yytext ==
'\n') unput(
'\n');
1381 return Token::make_TK_NONE();
1386<St_Sections>[^\n@\<]+
1387<St_Sections>{CMD}("<"|{CMD})
1388<St_Sections>"<"{CAPTION}({WS}+{ATTRIB})*">" {
1391 int s=tag.find(
"id=");
1395 if (c==
'\'' || c==
'"')
1397 int e=tag.find(c,s+4);
1401 yyextra->secLabel=tag.mid(s+4,e-s-4);
static constexpr int Table
1407<St_Sections>{CMD}"anchor"{BLANK}+ {
1409 BEGIN(St_SecLabel1);
static constexpr int Anchor
1411<St_Sections>{CMD}"ianchor"{BLANK}+ {
1413 BEGIN(St_SecLabel1);
1415<St_Sections>{CMD}"section"{BLANK}+ {
1417 BEGIN(St_SecLabel2);
static constexpr int Section
1419<St_Sections>{CMD}"subsection"{BLANK}+ {
1421 BEGIN(St_SecLabel2);
static constexpr int Subsection
1423<St_Sections>{CMD}"subsubsection"{BLANK}+ {
1425 BEGIN(St_SecLabel2);
static constexpr int Subsubsection
1427<St_Sections>{CMD}"paragraph"{BLANK}+ {
1429 BEGIN(St_SecLabel2);
static constexpr int Paragraph
1431<St_Sections>{CMD}"subparagraph"{BLANK}+ {
1433 BEGIN(St_SecLabel2);
static constexpr int Subparagraph
1435<St_Sections>{CMD}"subsubparagraph"{BLANK}+ {
1437 BEGIN(St_SecLabel2);
static constexpr int Subsubparagraph
1439<St_Sections>{CMD}"verbatim"/[^a-z_A-Z0-9] {
1440 yyextra->endMarker=
"endverbatim";
1443<St_Sections>{CMD}"iverbatim"/[^a-z_A-Z0-9] {
1444 yyextra->endMarker=
"endiverbatim";
1447<St_Sections>{CMD}"iliteral"/[^a-z_A-Z0-9] {
1448 yyextra->endMarker=
"endiliteral";
1451<St_Sections>{CMD}"dot"/[^a-z_A-Z0-9] {
1452 yyextra->endMarker=
"enddot";
1455<St_Sections>{CMD}"msc"/[^a-z_A-Z0-9] {
1456 yyextra->endMarker=
"endmsc";
1459<St_Sections>{CMD}"startuml"/[^a-z_A-Z0-9] {
1460 yyextra->endMarker=
"enduml";
1463<St_Sections>{CMD}"htmlonly"/[^a-z_A-Z0-9] {
1464 yyextra->endMarker=
"endhtmlonly";
1467<St_Sections>{CMD}"latexonly"/[^a-z_A-Z0-9] {
1468 yyextra->endMarker=
"endlatexonly";
1471<St_Sections>{CMD}"manonly"/[^a-z_A-Z0-9] {
1472 yyextra->endMarker=
"endmanonly";
1475<St_Sections>{CMD}"rtfonly"/[^a-z_A-Z0-9] {
1476 yyextra->endMarker=
"endrtfonly";
1479<St_Sections>{CMD}"xmlonly"/[^a-z_A-Z0-9] {
1480 yyextra->endMarker=
"endxmlonly";
1483<St_Sections>{CMD}"docbookonly"/[^a-z_A-Z0-9] {
1484 yyextra->endMarker=
"enddocbookonly";
1487<St_Sections>{CMD}"code"/[^a-z_A-Z0-9] {
1488 yyextra->endMarker=
"endcode";
1491<St_Sections>{CMD}"icode"/[^a-z_A-Z0-9] {
1492 yyextra->endMarker=
"endicode";
1495<St_Sections>"<!--" {
1496 yyextra->endMarker=
"-->";
1499<St_SecSkip>{CMD}{ID} {
1500 if (yyextra->endMarker==yytext+1)
1506 if (yyextra->endMarker==yytext)
1511<St_SecSkip>[^a-z_A-Z0-9\-\\\@]+
1513<St_SecSkip>(\n|"\\ilinebr")
1515<St_Sections>(\n|"\\ilinebr")
1516<St_SecLabel1>{LABELID} {
1518 yyextra->secLabel = yytext;
1522<St_SecLabel2>{LABELID}{BLANK}+ |
1523<St_SecLabel2>{LABELID} {
1524 yyextra->secLabel = yytext;
1525 yyextra->secLabel = yyextra->secLabel.stripWhiteSpace();
1528<St_SecTitle>[^\n]+ |
1529<St_SecTitle>[^\n]*\n {
1531 yyextra->secTitle = yytext;
1532 yyextra->secTitle = yyextra->secTitle.stripWhiteSpace();
1533 if (yyextra->secTitle.endsWith(
"\\ilinebr"))
1535 yyextra->secTitle.left(yyextra->secTitle.length()-8);
1540<St_SecTitle,St_SecLabel1,St_SecLabel2>. {
1541 warn(yyextra->fileName,yyextra->yyLineNr,
"Unexpected character '{}' while looking for section label or title",yytext);
1544<St_Snippet>[^\\\n]+ {
1545 yyextra->token.name += yytext;
1548 yyextra->token.name += yytext;
1550<St_Snippet>(\n|"\\ilinebr") {
1552 yyextra->token.name = yyextra->token.name.stripWhiteSpace();
1553 return Token::make_TK_WORD();
1559 warn(yyextra->fileName,yyextra->yyLineNr,
"Unexpected new line character");
1565 yyextra->token.name = yytext;
1569 warn(yyextra->fileName,yyextra->yyLineNr,
"Unexpected character '{}'",yytext);
1577 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1579 const char *p = yyextra->inputString + yyextra->inputPos;
1580 while ( c < max_size && *p ) { *buf++ = *p++; c++; }
1581 yyextra->inputPos+=c;
1587 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1590 if (yyextra->definition)
1592 file = yyextra->definition->getOutputFileBase();
1596 warn(yyextra->fileName,yyextra->yyLineNr,
"Found section/anchor {} without context",yyextra->secLabel);
1602 si->
setType(yyextra->secType);
1608 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1611 yyextra->token.text = tagText;
1612 yyextra->token.attribs.
clear();
1613 yyextra->token.endTag =
FALSE;
1614 yyextra->token.emptyTag =
FALSE;
1618 if (tagText.
at(1)==
'/')
1620 yyextra->token.endTag =
TRUE;
1625 int i = startNamePos;
1626 for (i=startNamePos; i < (int)yyleng; i++)
1629 char c = tagText.
at(i);
1630 if (!(isalnum(c) || c==
'-' || c==
'_' || c==
':'))
break;
1632 yyextra->token.name = tagText.
mid(startNamePos,i-startNamePos);
1636 int startAttribList = i;
1637 while (i<(
int)yyleng)
1639 char c=tagText.
at(i);
1641 while (i<(
int)yyleng && isspace((uint8_t)c)) { c=tagText.
at(++i); }
1643 if (c ==
'>')
break;
1647 yyextra->token.emptyTag =
TRUE;
1652 while (i<(
int)yyleng && !isspace((uint8_t)c) && c!=
'=' && c!=
'>') { c=tagText.
at(++i); }
1655 optName = tagText.
mid(startName,endName-startName).
lower();
1657 while (i<(
int)yyleng && isspace((uint8_t)c)) { c=tagText.
at(++i); }
1658 if (tagText.
at(i)==
'=')
1660 int startAttrib=0, endAttrib=0;
1663 while (i<(
int)yyleng && isspace((uint8_t)c)) { c=tagText.
at(++i); }
1664 if (tagText.
at(i)==
'\'')
1670 while (i<(
int)yyleng && c!=
'\'') { c=tagText.
at(++i); }
1672 if (i<(
int)yyleng) { c=tagText.
at(++i);}
1674 else if (tagText.
at(i)==
'"')
1679 while (i<(
int)yyleng && c!=
'"') { c=tagText.
at(++i); }
1681 if (i<(
int)yyleng) { c=tagText.
at(++i);}
1687 while (i<(
int)yyleng && !isspace((uint8_t)c) && c!=
'>') { c=tagText.
at(++i); }
1689 if (i<(
int)yyleng) { c=tagText.
at(++i);}
1691 optValue = tagText.
mid(startAttrib,endAttrib-startAttrib);
1692 if (optName ==
"align") optValue = optValue.
lower();
1693 else if (optName ==
"valign")
1695 optValue = optValue.
lower();
1696 if (optValue ==
"center") optValue=
"middle";
1704 yyextra->token.attribs.emplace_back(optName,optValue);
1706 yyextra->token.attribsStr = tagText.
mid(startAttribList,i-startAttribList);
1719 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1721 yyextra->lexerStack.push(
1722 std::make_unique<DocLexerContext>(
1723 yyextra->token,YY_START,
1724 yyextra->autoListLevel,
1726 yyextra->inputString,
1727 YY_CURRENT_BUFFER));
1728 yy_switch_to_buffer(yy_create_buffer(0,
YY_BUF_SIZE, yyscanner), yyscanner);
1734 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1736 if (yyextra->lexerStack.empty())
return FALSE;
1737 const auto &ctx = yyextra->lexerStack.top();
1738 yyextra->autoListLevel = ctx->autoListLevel;
1739 yyextra->inputPos = ctx->inputPos;
1740 yyextra->inputString = ctx->inputString;
1741 yyextra->token = ctx->token;
1743 yy_delete_buffer(YY_CURRENT_BUFFER, yyscanner);
1744 yy_switch_to_buffer(ctx->state, yyscanner);
1747 yyextra->lexerStack.pop();
1755 doctokenizerYYlex_init_extra(&
p->extra,&
p->yyscanner);
1764 doctokenizerYYlex_destroy(
p->yyscanner);
1769 return doctokenizerYYlex(
p->yyscanner);
1775 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1783 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1787 yyextra->inputString = input.
data();
1789 yyextra->inputPos = 0;
1790 yyextra->definition = d;
1791 yyextra->fileName = fileName;
1793 yyextra->yyLineNr = 1;
1794 doctokenizerYYlex(yyscanner);
1800 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1801 yyextra->autoListLevel = 0;
1802 yyextra->inputString = input;
1803 yyextra->inputPos = 0;
1804 yyextra->fileName = fileName;
1805 yyextra->insidePre =
FALSE;
1806 yyextra->markdownSupport = markdownSupport;
1807 yyextra->insideHtmlLink = insideHtmlLink;
1814 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1815 return &yyextra->token;
1821 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1823 return &yyextra->token;
1829 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1830 yyextra->insideHtmlLink =
false;
1837 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1844 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1851 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1852 yyextra->token.verb=
"";
1853 yyextra->token.name=
"";
1860 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1861 yyextra->token.verb=
"";
1862 yyextra->token.name=
"";
1869 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1870 yyextra->token.verb=
"";
1871 yyextra->token.name=
"";
1878 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1879 yyextra->token.verb=
"";
1880 yyextra->token.name=
"";
1881 BEGIN(St_HtmlOnlyOption);
1887 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1888 yyextra->token.verb=
"";
1895 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1896 yyextra->token.verb=
"";
1903 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1904 yyextra->token.verb=
"";
1911 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1912 yyextra->token.verb=
"";
1919 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1920 yyextra->token.verb=
"";
1921 BEGIN(St_LatexOnly);
1927 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1928 yyextra->token.verb=
"";
1935 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1936 yyextra->token.verb=
"";
1937 BEGIN(St_ILiteralOpt);
1943 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1944 yyextra->token.verb=
"";
1951 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1952 yyextra->token.verb=
"";
1953 BEGIN(St_iVerbatim);
1959 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1960 yyextra->token.verb=
"";
1967 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1968 yyextra->token.verb=
"";
1975 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1976 yyextra->token.verb=
"";
1977 yyextra->token.sectionId=
"";
1978 BEGIN(St_PlantUMLOpt);
1984 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1985 yyextra->token.verb=
"";
1992 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
1999 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2006 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2013 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2020 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2021 yyextra->token.name =
"";
2028 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2035 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2042 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2043 BEGIN(St_DoxyConfig);
2049 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2056 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2063 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2070 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2071 BEGIN(St_SkipTitle);
2077 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2084 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2091 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2092 yyextra->token.name=
"";
2099 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2106 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2107 yyextra->token.name=
"";
2114 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2115 yyextra->token.name=
"";
2122 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2123 yyextra->token.name=
"";
2130 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2137 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2138 BEGIN(St_QuotedString);
2144 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2151 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2152 yy_delete_buffer( YY_CURRENT_BUFFER, yyscanner );
2158 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2159 yyextra->insidePre = b;
2165 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2167 int l =
static_cast<int>(tagName.
length());
2169 for (
int i=l-1;i>=0;i--)
2179 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2180 yyextra->autoListLevel++;
2186 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2187 yyextra->autoListLevel--;
2193 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2194 yyextra->yyLineNr = lineno;
2200 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2201 return yyextra->yyLineNr;
2207 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2208 yyextra->stateStack.push(YYSTATE);
2214 struct yyguts_t *yyg = (
struct yyguts_t*)yyscanner;
2215 assert(!yyextra->stateStack.empty());
2216 BEGIN(yyextra->stateStack.top());
2217 yyextra->stateStack.pop();
2220#include "doctokenizer.l.h"
static bool isFlagSet(const DebugMask mask)
void setStateTitleAttrValue()
void setStateILiteralOpt()
void init(const char *input, const QCString &fileName, bool markdownSupport, bool insideHtmlLink)
void setLineNr(int lineno)
void setStatePlantUMLOpt()
void findSections(const QCString &input, const Definition *d, const QCString &fileName)
void setInsidePre(bool b)
void unputString(const QCString &tag)
void setStateInternalRef()
void setStateDoxyConfig()
void setStateQuotedString()
std::unique_ptr< Private > p
void pushBackHtmlTag(const QCString &tag)
const T * find(const std::string &key) const
bool isEmpty() const
Returns TRUE iff the string is empty.
class that provide information about a section.
void setType(SectionType t)
void setFileName(const QCString &fn)
static SectionManager & instance()
returns a reference to the singleton
static int yyread(yyscan_t yyscanner, char *buf, int max_size)
const char * qPrint(const char *s)
doctokenizerYY_state extra