Blame src/doctokenizer.l

Packit Service 50c9f2
/******************************************************************************
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * $Id: $
Packit Service 50c9f2
 *
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * Copyright (C) 1997-2015 by Dimitri van Heesch.
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * Permission to use, copy, modify, and distribute this software and its
Packit Service 50c9f2
 * documentation under the terms of the GNU General Public License is hereby 
Packit Service 50c9f2
 * granted. No representations are made about the suitability of this software 
Packit Service 50c9f2
 * for any purpose. It is provided "as is" without express or implied warranty.
Packit Service 50c9f2
 * See the GNU General Public License for more details.
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * Documents produced by Doxygen are derivative works derived from the
Packit Service 50c9f2
 * input used in their production; they are not affected by this license.
Packit Service 50c9f2
 *
Packit Service 50c9f2
 */
Packit Service 50c9f2
Packit Service 50c9f2
%option never-interactive
Packit Service 50c9f2
%option prefix="doctokenizerYY"
Packit Service 50c9f2
Packit Service 50c9f2
%{
Packit Service 50c9f2
Packit Service 50c9f2
#include <ctype.h>
Packit Service 50c9f2
Packit Service 50c9f2
#include <qfile.h>
Packit Service 50c9f2
#include <qstring.h>
Packit Service 50c9f2
#include <qstack.h>
Packit Service 50c9f2
#include <qdict.h>
Packit Service 50c9f2
#include <qregexp.h>
Packit Service 50c9f2
Packit Service 50c9f2
#include "doctokenizer.h"
Packit Service 50c9f2
#include "cmdmapper.h"
Packit Service 50c9f2
#include "config.h"
Packit Service 50c9f2
#include "message.h"
Packit Service 50c9f2
#include "section.h"
Packit Service 50c9f2
#include "membergroup.h"
Packit Service 50c9f2
#include "definition.h"
Packit Service 50c9f2
#include "doxygen.h"
Packit Service 50c9f2
#include "portable.h"
Packit Service 50c9f2
Packit Service 50c9f2
#define YY_NO_INPUT 1
Packit Service 50c9f2
#define YY_NO_UNISTD_H 1
Packit Service 50c9f2
  
Packit Service 50c9f2
//--------------------------------------------------------------------------
Packit Service 50c9f2
Packit Service 50c9f2
// context for tokenizer phase
Packit Service 50c9f2
static int g_commentState;
Packit Service 50c9f2
TokenInfo *g_token = 0;
Packit Service 50c9f2
static int g_inputPos = 0;
Packit Service 50c9f2
static const char *g_inputString;
Packit Service 50c9f2
static QCString g_fileName;
Packit Service 50c9f2
static bool g_insidePre;
Packit Service 50c9f2
static int g_sharpCount=0;
Packit Service 50c9f2
Packit Service 50c9f2
// context for section finding phase
Packit Service 50c9f2
static Definition  *g_definition;
Packit Service 50c9f2
static MemberGroup *g_memberGroup;
Packit Service 50c9f2
static QCString     g_secLabel;
Packit Service 50c9f2
static QCString     g_secTitle;
Packit Service 50c9f2
static SectionInfo::SectionType g_secType;
Packit Service 50c9f2
static QCString     g_endMarker;
Packit Service 50c9f2
static int          g_autoListLevel;
Packit Service 50c9f2
Packit Service 50c9f2
struct DocLexerContext
Packit Service 50c9f2
{
Packit Service 50c9f2
  TokenInfo *token;
Packit Service 50c9f2
  int rule;
Packit Service 50c9f2
  int autoListLevel;
Packit Service 50c9f2
  int inputPos;
Packit Service 50c9f2
  const char *inputString;
Packit Service 50c9f2
  YY_BUFFER_STATE state;
Packit Service 50c9f2
};
Packit Service 50c9f2
Packit Service 50c9f2
static QStack<DocLexerContext> g_lexerStack;
Packit Service 50c9f2
Packit Service 50c9f2
//--------------------------------------------------------------------------
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYpushContext()
Packit Service 50c9f2
{
Packit Service 50c9f2
  DocLexerContext *ctx = new DocLexerContext;
Packit Service 50c9f2
  ctx->rule = YY_START;
Packit Service 50c9f2
  ctx->autoListLevel = g_autoListLevel;
Packit Service 50c9f2
  ctx->token = g_token;
Packit Service 50c9f2
  ctx->inputPos = g_inputPos;
Packit Service 50c9f2
  ctx->inputString = g_inputString;
Packit Service 50c9f2
  ctx->state = YY_CURRENT_BUFFER;
Packit Service 50c9f2
  g_lexerStack.push(ctx);
Packit Service 50c9f2
  yy_switch_to_buffer(yy_create_buffer(doctokenizerYYin, YY_BUF_SIZE));
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
bool doctokenizerYYpopContext()
Packit Service 50c9f2
{
Packit Service 50c9f2
  if (g_lexerStack.isEmpty()) return FALSE;
Packit Service 50c9f2
  DocLexerContext *ctx = g_lexerStack.pop();
Packit Service 50c9f2
  g_autoListLevel = ctx->autoListLevel;
Packit Service 50c9f2
  g_inputPos = ctx->inputPos;
Packit Service 50c9f2
  g_inputString = ctx->inputString;
Packit Service 50c9f2
  yy_delete_buffer(YY_CURRENT_BUFFER);
Packit Service 50c9f2
  yy_switch_to_buffer(ctx->state);
Packit Service 50c9f2
  BEGIN(ctx->rule);
Packit Service 50c9f2
  delete ctx;
Packit Service 50c9f2
  return TRUE;
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
//--------------------------------------------------------------------------
Packit Service 50c9f2
Packit Service 50c9f2
const char *tokToString(int token)
Packit Service 50c9f2
{
Packit Service 50c9f2
  switch (token)
Packit Service 50c9f2
  {
Packit Service 50c9f2
    case 0:              return "TK_EOF";
Packit Service 50c9f2
    case TK_WORD:        return "TK_WORD";
Packit Service 50c9f2
    case TK_LNKWORD:     return "TK_LNKWORD";
Packit Service 50c9f2
    case TK_WHITESPACE:  return "TK_WHITESPACE";
Packit Service 50c9f2
    case TK_LISTITEM:    return "TK_LISTITEM";
Packit Service 50c9f2
    case TK_ENDLIST:     return "TK_ENDLIST";
Packit Service 50c9f2
    case TK_COMMAND:     return "TK_COMMAND";
Packit Service 50c9f2
    case TK_HTMLTAG:     return "TK_HTMLTAG";
Packit Service 50c9f2
    case TK_SYMBOL:      return "TK_SYMBOL";
Packit Service 50c9f2
    case TK_NEWPARA:     return "TK_NEWPARA";
Packit Service 50c9f2
    case TK_RCSTAG:      return "TK_RCSTAG";
Packit Service 50c9f2
    case TK_URL:         return "TK_URL";
Packit Service 50c9f2
  }
Packit Service 50c9f2
  return "ERROR";
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
static int computeIndent(const char *str,int length)
Packit Service 50c9f2
{
Packit Service 50c9f2
  int i;
Packit Service 50c9f2
  int indent=0;
Packit Service 50c9f2
  static int tabSize=Config_getInt(TAB_SIZE);
Packit Service 50c9f2
  for (i=0;i
Packit Service 50c9f2
  {
Packit Service 50c9f2
    if (str[i]=='\t')
Packit Service 50c9f2
    {
Packit Service 50c9f2
      indent+=tabSize - (indent%tabSize);
Packit Service 50c9f2
    }
Packit Service 50c9f2
    else if (str[i]=='\n')
Packit Service 50c9f2
    {
Packit Service 50c9f2
      indent=0;
Packit Service 50c9f2
    }
Packit Service 50c9f2
    else
Packit Service 50c9f2
    {
Packit Service 50c9f2
      indent++;
Packit Service 50c9f2
    }
Packit Service 50c9f2
  }
Packit Service 50c9f2
  return indent;
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
//--------------------------------------------------------------------------
Packit Service 50c9f2
Packit Service 50c9f2
static void processSection()
Packit Service 50c9f2
{
Packit Service 50c9f2
  //printf("%s: found section/anchor with name `%s'\n",g_fileName.data(),g_secLabel.data());
Packit Service 50c9f2
  QCString file;
Packit Service 50c9f2
  if (g_memberGroup)
Packit Service 50c9f2
  {
Packit Service 50c9f2
    file = g_memberGroup->parent()->getOutputFileBase();
Packit Service 50c9f2
  }
Packit Service 50c9f2
  else if (g_definition)
Packit Service 50c9f2
  {
Packit Service 50c9f2
    file = g_definition->getOutputFileBase();
Packit Service 50c9f2
  }
Packit Service 50c9f2
  else
Packit Service 50c9f2
  {
Packit Service 50c9f2
    warn(g_fileName,yylineno,"Found section/anchor %s without context\n",g_secLabel.data()); 
Packit Service 50c9f2
  }
Packit Service 50c9f2
  SectionInfo *si=0;
Packit Service 50c9f2
  if ((si=Doxygen::sectionDict->find(g_secLabel)))
Packit Service 50c9f2
  {
Packit Service 50c9f2
    si->fileName = file;
Packit Service 50c9f2
    si->type     = g_secType;
Packit Service 50c9f2
  }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
static void handleHtmlTag()
Packit Service 50c9f2
{
Packit Service 50c9f2
  QCString tagText=yytext;
Packit Service 50c9f2
  g_token->attribs.clear();
Packit Service 50c9f2
  g_token->endTag = FALSE;
Packit Service 50c9f2
  g_token->emptyTag = FALSE;
Packit Service 50c9f2
  
Packit Service 50c9f2
  // Check for end tag
Packit Service 50c9f2
  int startNamePos=1;
Packit Service 50c9f2
  if (tagText.at(1)=='/') 
Packit Service 50c9f2
  {
Packit Service 50c9f2
    g_token->endTag = TRUE;
Packit Service 50c9f2
    startNamePos++;
Packit Service 50c9f2
  }
Packit Service 50c9f2
Packit Service 50c9f2
  // Parse the name portion
Packit Service 50c9f2
  int i = startNamePos;
Packit Service 50c9f2
  for (i=startNamePos; i < (int)yyleng; i++)
Packit Service 50c9f2
  {
Packit Service 50c9f2
    // Check for valid HTML/XML name chars (including namespaces)
Packit Service 50c9f2
    char c = tagText.at(i);
Packit Service 50c9f2
    if (!(isalnum(c) || c=='-' || c=='_' || c==':')) break;
Packit Service 50c9f2
  }
Packit Service 50c9f2
  g_token->name = tagText.mid(startNamePos,i-startNamePos);
Packit Service 50c9f2
Packit Service 50c9f2
  // Parse the attributes. Each attribute is a name, value pair
Packit Service 50c9f2
  // The result is stored in g_token->attribs.
Packit Service 50c9f2
  int startName,endName,startAttrib,endAttrib;
Packit Service 50c9f2
  while (i<(int)yyleng)
Packit Service 50c9f2
  {
Packit Service 50c9f2
    char c=tagText.at(i);
Packit Service 50c9f2
    // skip spaces
Packit Service 50c9f2
    while (i<(int)yyleng && isspace(c)) { c=tagText.at(++i); }
Packit Service 50c9f2
    // check for end of the tag
Packit Service 50c9f2
    if (c == '>') break;
Packit Service 50c9f2
    // Check for XML style "empty" tag.
Packit Service 50c9f2
    if (c == '/') 
Packit Service 50c9f2
    {
Packit Service 50c9f2
      g_token->emptyTag = TRUE;
Packit Service 50c9f2
      break;
Packit Service 50c9f2
    }
Packit Service 50c9f2
    startName=i;
Packit Service 50c9f2
    // search for end of name
Packit Service 50c9f2
    while (i<(int)yyleng && !isspace(c) && c!='=') { c=tagText.at(++i); }
Packit Service 50c9f2
    endName=i;
Packit Service 50c9f2
    HtmlAttrib opt;
Packit Service 50c9f2
    opt.name  = tagText.mid(startName,endName-startName).lower(); 
Packit Service 50c9f2
    // skip spaces
Packit Service 50c9f2
    while (i<(int)yyleng && isspace(c)) { c=tagText.at(++i); } 
Packit Service 50c9f2
    if (tagText.at(i)=='=') // option has value
Packit Service 50c9f2
    {
Packit Service 50c9f2
      c=tagText.at(++i);
Packit Service 50c9f2
      // skip spaces
Packit Service 50c9f2
      while (i<(int)yyleng && isspace(c)) { c=tagText.at(++i); } 
Packit Service 50c9f2
      if (tagText.at(i)=='\'') // option '...'
Packit Service 50c9f2
      {
Packit Service 50c9f2
        c=tagText.at(++i);
Packit Service 50c9f2
	startAttrib=i;
Packit Service 50c9f2
	
Packit Service 50c9f2
	// search for matching quote 
Packit Service 50c9f2
        while (i<(int)yyleng && c!='\'') { c=tagText.at(++i); } 
Packit Service 50c9f2
	endAttrib=i;
Packit Service 50c9f2
        if (i<(int)yyleng) c=tagText.at(++i);
Packit Service 50c9f2
      }
Packit Service 50c9f2
      else if (tagText.at(i)=='"') // option "..."
Packit Service 50c9f2
      {
Packit Service 50c9f2
        c=tagText.at(++i);
Packit Service 50c9f2
	startAttrib=i;
Packit Service 50c9f2
	// search for matching quote 
Packit Service 50c9f2
        while (i<(int)yyleng && c!='"') { c=tagText.at(++i); } 
Packit Service 50c9f2
	endAttrib=i;
Packit Service 50c9f2
        if (i<(int)yyleng) c=tagText.at(++i);
Packit Service 50c9f2
      }
Packit Service 50c9f2
      else // value without any quotes
Packit Service 50c9f2
      {
Packit Service 50c9f2
	startAttrib=i;
Packit Service 50c9f2
	// search for separator or end symbol
Packit Service 50c9f2
        while (i<(int)yyleng && !isspace(c) && c!='>') { c=tagText.at(++i); } 
Packit Service 50c9f2
	endAttrib=i;
Packit Service 50c9f2
	if (i<(int)yyleng) c=tagText.at(++i);
Packit Service 50c9f2
      }
Packit Service 50c9f2
      opt.value  = tagText.mid(startAttrib,endAttrib-startAttrib); 
Packit Service 50c9f2
    }
Packit Service 50c9f2
    else // start next option
Packit Service 50c9f2
    {
Packit Service 50c9f2
    }
Packit Service 50c9f2
    //printf("=====> Adding option name=<%s> value=<%s>\n",
Packit Service 50c9f2
    //    opt.name.data(),opt.value.data());
Packit Service 50c9f2
    g_token->attribs.append(&opt;;
Packit Service 50c9f2
  }
Packit Service 50c9f2
}
Packit Service 50c9f2
  
Packit Service 50c9f2
static QCString stripEmptyLines(const QCString &s)
Packit Service 50c9f2
{
Packit Service 50c9f2
  if (s.isEmpty()) return QCString();
Packit Service 50c9f2
  int end=s.length();
Packit Service 50c9f2
  int start=0,p=0;
Packit Service 50c9f2
  // skip leading empty lines
Packit Service 50c9f2
  for (;;)
Packit Service 50c9f2
  {
Packit Service 50c9f2
    int c;
Packit Service 50c9f2
    while ((c=s[p]) && (c==' ' || c=='\t')) p++;
Packit Service 50c9f2
    if (s[p]=='\n') 
Packit Service 50c9f2
    {
Packit Service 50c9f2
      start=++p; 
Packit Service 50c9f2
    }
Packit Service 50c9f2
    else 
Packit Service 50c9f2
    {
Packit Service 50c9f2
      break;
Packit Service 50c9f2
    }
Packit Service 50c9f2
  }
Packit Service 50c9f2
  // skip trailing empty lines
Packit Service 50c9f2
  p=end-1;
Packit Service 50c9f2
  if (p>=start && s.at(p)=='\n') p--;
Packit Service 50c9f2
  while (p>=start)
Packit Service 50c9f2
  {
Packit Service 50c9f2
    int c;
Packit Service 50c9f2
    while ((c=s[p]) && (c==' ' || c=='\t')) p--;
Packit Service 50c9f2
    if (s[p]=='\n') 
Packit Service 50c9f2
    {
Packit Service 50c9f2
      end=p;
Packit Service 50c9f2
    }
Packit Service 50c9f2
    else
Packit Service 50c9f2
    {
Packit Service 50c9f2
      break;
Packit Service 50c9f2
    }
Packit Service 50c9f2
    p--;
Packit Service 50c9f2
  }
Packit Service 50c9f2
  //printf("stripEmptyLines(%d-%d)\n",start,end);
Packit Service 50c9f2
  return s.mid(start,end-start);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
//--------------------------------------------------------------------------
Packit Service 50c9f2
Packit Service 50c9f2
#undef  YY_INPUT
Packit Service 50c9f2
#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
Packit Service 50c9f2
Packit Service 50c9f2
static int yyread(char *buf,int max_size)
Packit Service 50c9f2
{
Packit Service 50c9f2
  int c=0;
Packit Service 50c9f2
  const char *src=g_inputString+g_inputPos;
Packit Service 50c9f2
  while ( c < max_size && *src ) *buf++ = *src++, c++;
Packit Service 50c9f2
  g_inputPos+=c;
Packit Service 50c9f2
  return c;
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
//--------------------------------------------------------------------------
Packit Service 50c9f2
//#define REAL_YY_DECL int doctokenizerYYlex (void)
Packit Service 50c9f2
//#define YY_DECL static int local_doctokinizer(void)
Packit Service 50c9f2
//#define LOCAL_YY_DECL local_doctokinizer()
Packit Service 50c9f2
Packit Service 50c9f2
%}
Packit Service 50c9f2
Packit Service 50c9f2
CMD       ("\\"|"@")
Packit Service 50c9f2
WS        [ \t\r\n]
Packit Service 50c9f2
NONWS     [^ \t\r\n]
Packit Service 50c9f2
BLANK     [ \t\r]
Packit Service 50c9f2
ID        "$"?[a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
Packit Service 50c9f2
LABELID   [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-]*
Packit Service 50c9f2
PHPTYPE   [\\:a-z_A-Z0-9\x80-\xFF\-]+
Packit Service 50c9f2
CITESCHAR [a-z_A-Z0-9\x80-\xFF]
Packit Service 50c9f2
CITEECHAR [a-z_A-Z0-9\x80-\xFF\-\+:\/]*
Packit Service 50c9f2
CITEID    {CITESCHAR}{CITEECHAR}*("."{CITESCHAR}{CITEECHAR}*)*
Packit Service 50c9f2
MAILADR   ("mailto:")?[a-z_A-Z0-9.+-]+"@"[a-z_A-Z0-9-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]+
Packit Service 50c9f2
OPTSTARS  ("//"{BLANK}*)?"*"*{BLANK}*
Packit Service 50c9f2
LISTITEM  {BLANK}*[-]("#")?{WS}
Packit Service 50c9f2
MLISTITEM {BLANK}*[+*]{WS}
Packit Service 50c9f2
OLISTITEM {BLANK}*[1-9][0-9]*"."{BLANK}
Packit Service 50c9f2
ENDLIST   {BLANK}*"."{BLANK}*\n
Packit Service 50c9f2
ATTRNAME  [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-]*
Packit Service 50c9f2
ATTRIB    {ATTRNAME}{WS}*("="{WS}*(("\""[^\"]*"\"")|("'"[^\']*"'")|[^ \t\r\n'"><]+))?
Packit Service 50c9f2
URLCHAR   [a-z_A-Z0-9\!\~\,\:\;\'\$\?\@\&\%\#\.\-\+\/\=]
Packit Service 50c9f2
URLMASK   ({URLCHAR}+([({]{URLCHAR}*[)}])?)+
Packit Service 50c9f2
FILESCHAR [a-z_A-Z0-9\\:\\\/\-\+@&#]
Packit Service 50c9f2
FILEECHAR [a-z_A-Z0-9\-\+@&#]
Packit Service 50c9f2
HFILEMASK ("."{FILESCHAR}*{FILEECHAR}+)*
Packit Service 50c9f2
FILEMASK  ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|{HFILEMASK}
Packit Service 50c9f2
LINKMASK  [^ \t\n\r\\@<&${}]+("("[^\n)]*")")?({BLANK}*("const"|"volatile"){BLANK}+)? 
Packit Service 50c9f2
VERBATIM  "verbatim"{BLANK}*
Packit Service 50c9f2
SPCMD1    {CMD}([a-z_A-Z][a-z_A-Z0-9]*|{VERBATIM}|"--"|"---")
Packit Service 50c9f2
SPCMD2    {CMD}[\\@<>&$#%~".+|-]
Packit Service 50c9f2
SPCMD3    {CMD}form#[0-9]+
Packit Service 50c9f2
SPCMD4    {CMD}"::"
Packit Service 50c9f2
INOUT	  "inout"|"in"|"out"|("in"{BLANK}*","{BLANK}*"out")|("out"{BLANK}*","{BLANK}*"in")
Packit Service 50c9f2
PARAMIO   {CMD}param{BLANK}*"["{BLANK}*{INOUT}{BLANK}*"]"
Packit Service 50c9f2
TEMPCHAR  [a-z_A-Z0-9.,: \t\*\&\(\)\[\]]
Packit Service 50c9f2
FUNCCHAR  [a-z_A-Z0-9,:\<\> \t\^\*\&\[\]]
Packit Service 50c9f2
FUNCPART  {FUNCCHAR}*("("{FUNCCHAR}*")"{FUNCCHAR}*)?
Packit Service 50c9f2
SCOPESEP  "::"|"#"|"."
Packit Service 50c9f2
TEMPLPART "<"{TEMPCHAR}*">"
Packit Service 50c9f2
ANONNS    "anonymous_namespace{"[^}]*"}"
Packit Service 50c9f2
SCOPEPRE  (({ID}{TEMPLPART}?)|{ANONNS}){SCOPESEP}
Packit Service 50c9f2
SCOPEKEYS ":"({ID}":")*
Packit Service 50c9f2
SCOPECPP  {SCOPEPRE}*(~)?{ID}{TEMPLPART}?
Packit Service 50c9f2
SCOPEOBJC {SCOPEPRE}?{ID}{SCOPEKEYS}?
Packit Service 50c9f2
SCOPEMASK {SCOPECPP}|{SCOPEOBJC}
Packit Service 50c9f2
FUNCARG   "("{FUNCPART}")"({BLANK}*("volatile"|"const"){BLANK})?
Packit Service 50c9f2
FUNCARG2  "("{FUNCPART}")"({BLANK}*("volatile"|"const"))?
Packit Service 50c9f2
OPNEW     {BLANK}+"new"({BLANK}*"[]")?
Packit Service 50c9f2
OPDEL     {BLANK}+"delete"({BLANK}*"[]")?
Packit Service 50c9f2
OPNORM    {OPNEW}|{OPDEL}|"+"|"-"|"*"|"/"|"%"|"^"|"&"|"|"|"~"|"!"|"="|"<"|">"|"+="|"-="|"*="|"/="|"%="|"^="|"&="|"|="|"<<"|">>"|"<<="|">>="|"=="|"!="|"<="|">="|"&&"|"||"|"++"|"--"|","|"->*"|"->"|"[]"|"()"
Packit Service 50c9f2
OPCAST    {BLANK}+[^<(\r\n.,][^(\r\n.,]*
Packit Service 50c9f2
OPMASK    ({BLANK}*{OPNORM}{FUNCARG})
Packit Service 50c9f2
OPMASKOPT ({BLANK}*{OPNORM}{FUNCARG}?)|({OPCAST}{FUNCARG})
Packit Service 50c9f2
OPMASKOP2 ({BLANK}*{OPNORM}{FUNCARG2}?)|({OPCAST}{FUNCARG2})
Packit Service 50c9f2
LNKWORD1  ("::"|"#")?{SCOPEMASK}
Packit Service 50c9f2
CVSPEC    {BLANK}*("const"|"volatile")
Packit Service 50c9f2
LNKWORD2  (({SCOPEPRE}*"operator"{OPMASK})|({SCOPEPRE}"operator"{OPMASKOPT})|(("::"|"#"){SCOPEPRE}*"operator"{OPMASKOPT})){CVSPEC}?
Packit Service 50c9f2
LNKWORD3  ([0-9a-z_A-Z\-]+("/"|"\\"))*[0-9a-z_A-Z\-]+("."[0-9a-z_A-Z]+)+
Packit Service 50c9f2
CHARWORDQ [^ \t\n\r\\@<>()\[\]:;\?{}&%$#,."=']
Packit Service 50c9f2
ESCWORD   ("%"{ID}(("::"|"."){ID})*)|("%'")
Packit Service 50c9f2
WORD1     {ESCWORD}|{CHARWORDQ}+|"{"|"}"|"'\"'"|("\""[^"\n]*\n?[^"\n]*"\"")
Packit Service 50c9f2
WORD2     "."|","|"("|")"|"["|"]"|":"|";"|"\?"|"="|"'"
Packit Service 50c9f2
WORD1NQ   {ESCWORD}|{CHARWORDQ}+|"{"|"}"
Packit Service 50c9f2
WORD2NQ   "."|","|"("|")"|"["|"]"|":"|";"|"\?"|"="|"'"
Packit Service 50c9f2
CAPTION   [cC][aA][pP][tT][iI][oO][nN]
Packit Service 50c9f2
HTMLTAG   "<"(("/")?){ID}({WS}+{ATTRIB})*{WS}*(("/")?)">" 
Packit Service 50c9f2
HTMLKEYL  "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"
Packit Service 50c9f2
HTMLKEYU  "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"
Packit Service 50c9f2
HTMLKEYW  {HTMLKEYL}|{HTMLKEYU}
Packit Service 50c9f2
REFWORD2_PRE   ("#"|"::")?((({ID}{TEMPLPART}?)|{ANONNS})("."|"#"|"::"|"-"|"/"))*({ID}{TEMPLPART}?(":")?)
Packit Service 50c9f2
REFWORD2       {REFWORD2_PRE}{FUNCARG2}?
Packit Service 50c9f2
REFWORD2_NOCV  {REFWORD2_PRE}("("{FUNCPART}")")?
Packit Service 50c9f2
REFWORD3       ({ID}":")*{ID}":"?
Packit Service 50c9f2
REFWORD4_NOCV  (({SCOPEPRE}*"operator"{OPMASKOP2})|(("::"|"#"){SCOPEPRE}*"operator"{OPMASKOP2}))
Packit Service 50c9f2
REFWORD4       {REFWORD4_NOCV}{CVSPEC}?
Packit Service 50c9f2
REFWORD        {LABELID}|{REFWORD2}|{REFWORD3}|{REFWORD4}
Packit Service 50c9f2
REFWORD_NOCV   {LABELID}|{REFWORD2_NOCV}|{REFWORD3}|{REFWORD4_NOCV}
Packit Service 50c9f2
Packit Service 50c9f2
%option noyywrap
Packit Service 50c9f2
%option yylineno
Packit Service 50c9f2
Packit Service 50c9f2
%x St_Para
Packit Service 50c9f2
%x St_Comment
Packit Service 50c9f2
%x St_Title
Packit Service 50c9f2
%x St_TitleN
Packit Service 50c9f2
%x St_TitleQ
Packit Service 50c9f2
%x St_TitleA
Packit Service 50c9f2
%x St_TitleV
Packit Service 50c9f2
%x St_Code
Packit Service 50c9f2
%x St_CodeOpt
Packit Service 50c9f2
%x St_XmlCode
Packit Service 50c9f2
%x St_HtmlOnly
Packit Service 50c9f2
%x St_HtmlOnlyOption
Packit Service 50c9f2
%x St_ManOnly
Packit Service 50c9f2
%x St_LatexOnly
Packit Service 50c9f2
%x St_RtfOnly
Packit Service 50c9f2
%x St_XmlOnly
Packit Service 50c9f2
%x St_DbOnly
Packit Service 50c9f2
%x St_Verbatim
Packit Service 50c9f2
%x St_Dot
Packit Service 50c9f2
%x St_Msc
Packit Service 50c9f2
%x St_PlantUMLOpt
Packit Service 50c9f2
%x St_PlantUML
Packit Service 50c9f2
%x St_Param
Packit Service 50c9f2
%x St_XRefItem
Packit Service 50c9f2
%x St_XRefItem2
Packit Service 50c9f2
%x St_File
Packit Service 50c9f2
%x St_Pattern
Packit Service 50c9f2
%x St_Link
Packit Service 50c9f2
%x St_Cite
Packit Service 50c9f2
%x St_Ref
Packit Service 50c9f2
%x St_Ref2
Packit Service 50c9f2
%x St_IntRef
Packit Service 50c9f2
%x St_Text
Packit Service 50c9f2
%x St_SkipTitle
Packit Service 50c9f2
%x St_Anchor
Packit Service 50c9f2
%x St_Snippet
Packit Service 50c9f2
%x St_SetScope
Packit Service 50c9f2
%x St_SetScopeEnd
Packit Service 50c9f2
Packit Service 50c9f2
%x St_Sections
Packit Service 50c9f2
%s St_SecLabel1
Packit Service 50c9f2
%s St_SecLabel2
Packit Service 50c9f2
%s St_SecTitle
Packit Service 50c9f2
%x St_SecSkip
Packit Service 50c9f2
Packit Service 50c9f2
%%
Packit Service 50c9f2
<St_Para>\r            /* skip carriage return */
Packit Service 50c9f2
<St_Para>^{LISTITEM}   { /* list item */ 
Packit Service 50c9f2
                         QCString text=yytext;
Packit Service 50c9f2
			 int dashPos = text.findRev('-');
Packit Service 50c9f2
			 g_token->isEnumList = text.at(dashPos+1)=='#';
Packit Service 50c9f2
                         g_token->id         = -1;
Packit Service 50c9f2
			 g_token->indent     = computeIndent(yytext,dashPos);
Packit Service 50c9f2
                         return TK_LISTITEM;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>^{MLISTITEM}  { /* list item */ 
Packit Service 50c9f2
                         if (!Doxygen::markdownSupport || g_insidePre)
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           REJECT;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
                         else
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           QCString text=yytext;
Packit Service 50c9f2
                           static QRegExp re("[*+]");
Packit Service 50c9f2
                           int listPos = text.findRev(re);
Packit Service 50c9f2
                           g_token->isEnumList = FALSE;
Packit Service 50c9f2
                           g_token->id         = -1;
Packit Service 50c9f2
                           g_token->indent     = computeIndent(yytext,listPos);
Packit Service 50c9f2
                           return TK_LISTITEM;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>^{OLISTITEM}  { /* numbered list item */ 
Packit Service 50c9f2
                         if (!Doxygen::markdownSupport || g_insidePre)
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           REJECT;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
                         else
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           QCString text=yytext;
Packit Service 50c9f2
                           static QRegExp re("[1-9]");
Packit Service 50c9f2
                           int digitPos = text.find(re);
Packit Service 50c9f2
                           int dotPos = text.find('.',digitPos);
Packit Service 50c9f2
                           g_token->isEnumList = TRUE;
Packit Service 50c9f2
                           g_token->id         = atoi(QCString(yytext).mid(digitPos,dotPos-digitPos));
Packit Service 50c9f2
                           g_token->indent     = computeIndent(yytext,digitPos);
Packit Service 50c9f2
                           return TK_LISTITEM;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>{BLANK}*\n{LISTITEM}     { /* list item on next line */ 
Packit Service 50c9f2
                         QCString text=yytext;
Packit Service 50c9f2
			 text=text.right(text.length()-text.find('\n')-1);
Packit Service 50c9f2
			 int dashPos = text.findRev('-');
Packit Service 50c9f2
			 g_token->isEnumList = text.at(dashPos+1)=='#';
Packit Service 50c9f2
                         g_token->id         = -1;
Packit Service 50c9f2
			 g_token->indent     = computeIndent(text,dashPos);
Packit Service 50c9f2
                         return TK_LISTITEM;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>{BLANK}*\n{MLISTITEM}     { /* list item on next line */ 
Packit Service 50c9f2
                         if (!Doxygen::markdownSupport || g_insidePre)
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           REJECT;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
                         else
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           QCString text=yytext;
Packit Service 50c9f2
                           static QRegExp re("[*+]");
Packit Service 50c9f2
                           text=text.right(text.length()-text.find('\n')-1);
Packit Service 50c9f2
                           int markPos = text.findRev(re);
Packit Service 50c9f2
                           g_token->isEnumList = FALSE;
Packit Service 50c9f2
                           g_token->id         = -1;
Packit Service 50c9f2
                           g_token->indent     = computeIndent(text,markPos);
Packit Service 50c9f2
                           return TK_LISTITEM;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>{BLANK}*\n{OLISTITEM}     { /* list item on next line */ 
Packit Service 50c9f2
                         if (!Doxygen::markdownSupport || g_insidePre)
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           REJECT;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
                         else
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           QCString text=yytext;
Packit Service 50c9f2
                           int nl=text.findRev('\n');
Packit Service 50c9f2
                           int len=text.length();
Packit Service 50c9f2
                           text=text.right(len-nl-1);
Packit Service 50c9f2
                           static QRegExp re("[1-9]");
Packit Service 50c9f2
                           int digitPos = text.find(re);
Packit Service 50c9f2
                           int dotPos = text.find('.',digitPos);
Packit Service 50c9f2
                           g_token->isEnumList = TRUE;
Packit Service 50c9f2
                           g_token->id         = atoi(QCString(text).mid(digitPos,dotPos-digitPos));
Packit Service 50c9f2
                           g_token->indent     = computeIndent(text,digitPos);
Packit Service 50c9f2
                           return TK_LISTITEM;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>^{ENDLIST}       { /* end list */ 
Packit Service 50c9f2
                         int dotPos = QCString(yytext).findRev('.');
Packit Service 50c9f2
			 g_token->indent     = computeIndent(yytext,dotPos);
Packit Service 50c9f2
                         return TK_ENDLIST;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>{BLANK}*\n{ENDLIST}      { /* end list on next line */ 
Packit Service 50c9f2
                         QCString text=yytext;
Packit Service 50c9f2
			 text=text.right(text.length()-text.find('\n')-1);
Packit Service 50c9f2
                         int dotPos = text.findRev('.');
Packit Service 50c9f2
			 g_token->indent     = computeIndent(text,dotPos);
Packit Service 50c9f2
                         return TK_ENDLIST;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>"{"{BLANK}*"@link" {
Packit Service 50c9f2
  			 g_token->name = "javalink";
Packit Service 50c9f2
			 return TK_COMMAND;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Para>"{"{BLANK}*"@inheritDoc"{BLANK}*"}" {
Packit Service 50c9f2
  			 g_token->name = "inheritdoc";
Packit Service 50c9f2
			 return TK_COMMAND;
Packit Service 50c9f2
		       }
Packit Service 50c9f2
<St_Para>"@_fakenl"     { // artificial new line
Packit Service 50c9f2
                             yylineno++; 
Packit Service 50c9f2
  		          }
Packit Service 50c9f2
<St_Para>{SPCMD3}      {
Packit Service 50c9f2
  			 g_token->name = "form";
Packit Service 50c9f2
			 bool ok;
Packit Service 50c9f2
			 g_token->id = QCString(yytext).right((int)yyleng-6).toInt(&ok;;
Packit Service 50c9f2
			 ASSERT(ok);
Packit Service 50c9f2
			 return TK_COMMAND;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Para>{CMD}"n"\n    { /* \n followed by real newline */
Packit Service 50c9f2
                         yylineno++;
Packit Service 50c9f2
                         g_token->name = yytext+1;
Packit Service 50c9f2
			 g_token->name = g_token->name.stripWhiteSpace();
Packit Service 50c9f2
			 g_token->paramDir=TokenInfo::Unspecified;
Packit Service 50c9f2
                         return TK_COMMAND;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>{SPCMD1}      |
Packit Service 50c9f2
<St_Para>{SPCMD2}      |
Packit Service 50c9f2
<St_Para>{SPCMD4}      { /* special command */
Packit Service 50c9f2
                         g_token->name = yytext+1;
Packit Service 50c9f2
			 g_token->name = g_token->name.stripWhiteSpace();
Packit Service 50c9f2
			 g_token->paramDir=TokenInfo::Unspecified;
Packit Service 50c9f2
                         return TK_COMMAND;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Para>{PARAMIO}     { /* param [in,out] command */
Packit Service 50c9f2
  			 g_token->name = "param";
Packit Service 50c9f2
			 QCString s(yytext);
Packit Service 50c9f2
			 bool isIn  = s.find("in")!=-1;
Packit Service 50c9f2
			 bool isOut = s.find("out")!=-1;
Packit Service 50c9f2
			 if (isIn)
Packit Service 50c9f2
			 {
Packit Service 50c9f2
			   if (isOut)
Packit Service 50c9f2
			   {
Packit Service 50c9f2
			     g_token->paramDir=TokenInfo::InOut;
Packit Service 50c9f2
			   }
Packit Service 50c9f2
			   else
Packit Service 50c9f2
			   {
Packit Service 50c9f2
			     g_token->paramDir=TokenInfo::In;
Packit Service 50c9f2
			   }
Packit Service 50c9f2
			 }
Packit Service 50c9f2
			 else if (isOut)
Packit Service 50c9f2
			 {
Packit Service 50c9f2
			   g_token->paramDir=TokenInfo::Out;
Packit Service 50c9f2
			 }
Packit Service 50c9f2
			 else
Packit Service 50c9f2
			 {
Packit Service 50c9f2
			   g_token->paramDir=TokenInfo::Unspecified;
Packit Service 50c9f2
			 }
Packit Service 50c9f2
			 return TK_COMMAND;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Para>("http:"|"https:"|"ftp:"|"file:"|"news:"){URLMASK}/\. { // URL.
Packit Service 50c9f2
                         g_token->name=yytext;
Packit Service 50c9f2
			 g_token->isEMailAddr=FALSE;
Packit Service 50c9f2
			 return TK_URL;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>("http:"|"https:"|"ftp:"|"file:"|"news:"){URLMASK} { // URL
Packit Service 50c9f2
                         g_token->name=yytext;
Packit Service 50c9f2
			 g_token->isEMailAddr=FALSE;
Packit Service 50c9f2
			 return TK_URL;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>"<"("http:"|"https:"|"ftp:"|"file:"|"news:"){URLMASK}">" { // URL
Packit Service 50c9f2
                         g_token->name=yytext;
Packit Service 50c9f2
                         g_token->name = g_token->name.mid(1,g_token->name.length()-2);
Packit Service 50c9f2
			 g_token->isEMailAddr=FALSE;
Packit Service 50c9f2
			 return TK_URL;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>{MAILADR}     { // Mail address
Packit Service 50c9f2
                         g_token->name=yytext;
Packit Service 50c9f2
                         g_token->name.stripPrefix("mailto:");
Packit Service 50c9f2
			 g_token->isEMailAddr=TRUE;
Packit Service 50c9f2
			 return TK_URL;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>"<"{MAILADR}">" { // Mail address
Packit Service 50c9f2
                         g_token->name=yytext;
Packit Service 50c9f2
                         g_token->name = g_token->name.mid(1,g_token->name.length()-2);
Packit Service 50c9f2
                         g_token->name.stripPrefix("mailto:");
Packit Service 50c9f2
			 g_token->isEMailAddr=TRUE;
Packit Service 50c9f2
			 return TK_URL;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>"$"{ID}":"[^\n$]+"$" { /* RCS tag */
Packit Service 50c9f2
                         QCString tagName(yytext+1);
Packit Service 50c9f2
			 int index=tagName.find(':');
Packit Service 50c9f2
  			 g_token->name = tagName.left(index);
Packit Service 50c9f2
			 int text_begin = index+2;
Packit Service 50c9f2
			 int text_end = tagName.length()-1;
Packit Service 50c9f2
			 if (tagName[text_begin-1]==':') /* check for Subversion fixed-length keyword */
Packit Service 50c9f2
			 {
Packit Service 50c9f2
				 ++text_begin;
Packit Service 50c9f2
				 if (tagName[text_end-1]=='#')
Packit Service 50c9f2
					 --text_end;
Packit Service 50c9f2
			 }
Packit Service 50c9f2
			 g_token->text = tagName.mid(text_begin,text_end-text_begin);
Packit Service 50c9f2
			 return TK_RCSTAG;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Para,St_HtmlOnly>"$("{ID}")"   { /* environment variable */
Packit Service 50c9f2
                         QCString name = &yytext[2];
Packit Service 50c9f2
			 name = name.left(name.length()-1);
Packit Service 50c9f2
			 QCString value = portable_getenv(name);
Packit Service 50c9f2
			 for (int i=value.length()-1;i>=0;i--) unput(value.at(i));
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>{HTMLTAG}     { /* html tag */ 
Packit Service 50c9f2
                         handleHtmlTag();
Packit Service 50c9f2
                         return TK_HTMLTAG;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para,St_Text>"&"{ID}";" { /* special symbol */ 
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
                         return TK_SYMBOL;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
Packit Service 50c9f2
  /********* patterns for linkable words ******************/
Packit Service 50c9f2
Packit Service 50c9f2
<St_Para>{ID}/"<"{HTMLKEYW}">" { /* this rule is to prevent opening html 
Packit Service 50c9f2
				  * tag to be recognized as a templated classes 
Packit Service 50c9f2
				  */ 
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
                         return TK_LNKWORD;
Packit Service 50c9f2
  			}
Packit Service 50c9f2
<St_Para>{LNKWORD1}/"
" | // prevent
html tag to be parsed as template arguments
Packit Service 50c9f2
<St_Para>{LNKWORD1}                  |
Packit Service 50c9f2
<St_Para>{LNKWORD1}{FUNCARG}         |
Packit Service 50c9f2
<St_Para>{LNKWORD2}                  |
Packit Service 50c9f2
<St_Para>{LNKWORD3}    {
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
                         return TK_LNKWORD;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Para>{LNKWORD1}{FUNCARG}{CVSPEC}[^a-z_A-Z0-9] {
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
                         g_token->name = g_token->name.left(g_token->name.length()-1);
Packit Service 50c9f2
			 unput(yytext[(int)yyleng-1]);
Packit Service 50c9f2
                         return TK_LNKWORD;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
  /********* patterns for normal words ******************/
Packit Service 50c9f2
Packit Service 50c9f2
<St_Para,St_Text>{WORD1} |
Packit Service 50c9f2
<St_Para,St_Text>{WORD2} { /* function call */ 
Packit Service 50c9f2
                         if (yytext[0]=='%') // strip % if present
Packit Service 50c9f2
			   g_token->name = &yytext[1];
Packit Service 50c9f2
			 else
Packit Service 50c9f2
                           g_token->name = yytext;
Packit Service 50c9f2
                         return TK_WORD;
Packit Service 50c9f2
Packit Service 50c9f2
			 /* the following is dummy code to please the 
Packit Service 50c9f2
			  * compiler, removing this results in a warning 
Packit Service 50c9f2
			  * on my machine 
Packit Service 50c9f2
			  */ 
Packit Service 50c9f2
			 goto find_rule;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Text>({ID}".")+{ID} {
Packit Service 50c9f2
                          g_token->name = yytext;
Packit Service 50c9f2
                          return TK_WORD;
Packit Service 50c9f2
  			}
Packit Service 50c9f2
<St_Para,St_Text>"operator"/{BLANK}*"<"[a-zA-Z_0-9]+">" { // Special case: word "operator" followed by a HTML command
Packit Service 50c9f2
                                                          // avoid interpretation as "operator <"
Packit Service 50c9f2
                           g_token->name = yytext;
Packit Service 50c9f2
                           return TK_WORD;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
Packit Service 50c9f2
  /*******************************************************/
Packit Service 50c9f2
Packit Service 50c9f2
<St_Para,St_Text>{BLANK}+      |
Packit Service 50c9f2
<St_Para,St_Text>{BLANK}*\n{BLANK}* { /* white space */ 
Packit Service 50c9f2
                         g_token->chars=yytext;
Packit Service 50c9f2
                         return TK_WHITESPACE;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Text>[\\@<>&$#%~]  {
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
                         return TK_COMMAND;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Para>({BLANK}*\n)+{BLANK}*\n/{LISTITEM} { /* skip trailing paragraph followed by new list item */
Packit Service 50c9f2
                         if (g_insidePre || g_autoListLevel==0)
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           REJECT;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>({BLANK}*\n)+{BLANK}*\n/{MLISTITEM} { /* skip trailing paragraph followed by new list item */
Packit Service 50c9f2
                         if (!Doxygen::markdownSupport || g_insidePre || g_autoListLevel==0)
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           REJECT;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>({BLANK}*\n)+{BLANK}*\n/{OLISTITEM} { /* skip trailing paragraph followed by new list item */
Packit Service 50c9f2
                         if (!Doxygen::markdownSupport || g_insidePre || g_autoListLevel==0)
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           REJECT;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Para>({BLANK}*\n)+{BLANK}*\n{BLANK}* {
Packit Service 50c9f2
                         g_token->indent=computeIndent(yytext,(int)yyleng);
Packit Service 50c9f2
                         int i;
Packit Service 50c9f2
                         // put back the indentation (needed for list items)
Packit Service 50c9f2
                         for (i=0;i<g_token->indent;i++)
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           unput(' ');
Packit Service 50c9f2
                         }
Packit Service 50c9f2
                         // tell flex that after putting the last indent 
Packit Service 50c9f2
                         // back we are at the beginning of the line
Packit Service 50c9f2
                         YY_CURRENT_BUFFER->yy_at_bol=1;
Packit Service 50c9f2
                         // start of a new paragraph
Packit Service 50c9f2
  		         return TK_NEWPARA;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_CodeOpt>{BLANK}*"{"(".")?{LABELID}"}" {
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
                         int i=g_token->name.find('{'); /* } to keep vi happy */
Packit Service 50c9f2
                         g_token->name = g_token->name.mid(i+1,g_token->name.length()-i-2);
Packit Service 50c9f2
                         BEGIN(St_Code);
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_CodeOpt>\n         |
Packit Service 50c9f2
<St_CodeOpt>.          {
Packit Service 50c9f2
                         unput(*yytext);
Packit Service 50c9f2
                         BEGIN(St_Code);
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Code>{WS}*{CMD}"endcode" {
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_XmlCode>{WS}*"" {
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Code,St_XmlCode>[^\\@\n<]+  |
Packit Service 50c9f2
<St_Code,St_XmlCode>\n          |
Packit Service 50c9f2
<St_Code,St_XmlCode>.           {
Packit Service 50c9f2
  			 g_token->verb+=yytext;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_HtmlOnlyOption>" [block]" { // the space is added in commentscan.l
Packit Service 50c9f2
                         g_token->name="block";
Packit Service 50c9f2
                         BEGIN(St_HtmlOnly);
Packit Service 50c9f2
                        }
Packit Service 50c9f2
<St_HtmlOnlyOption>.|\n {
Packit Service 50c9f2
                         unput(*yytext);
Packit Service 50c9f2
                         BEGIN(St_HtmlOnly);
Packit Service 50c9f2
                        }
Packit Service 50c9f2
<St_HtmlOnly>{CMD}"endhtmlonly" {
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_HtmlOnly>[^\\@\n$]+    |
Packit Service 50c9f2
<St_HtmlOnly>\n            |
Packit Service 50c9f2
<St_HtmlOnly>.             {
Packit Service 50c9f2
  			 g_token->verb+=yytext;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_ManOnly>{CMD}"endmanonly" {
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_ManOnly>[^\\@\n$]+    |
Packit Service 50c9f2
<St_ManOnly>\n            |
Packit Service 50c9f2
<St_ManOnly>.             {
Packit Service 50c9f2
  			 g_token->verb+=yytext;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_RtfOnly>{CMD}"endrtfonly" {
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_RtfOnly>[^\\@\n$]+    |
Packit Service 50c9f2
<St_RtfOnly>\n            |
Packit Service 50c9f2
<St_RtfOnly>.             {
Packit Service 50c9f2
  			 g_token->verb+=yytext;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_LatexOnly>{CMD}"endlatexonly" {
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_LatexOnly>[^\\@\n]+     |
Packit Service 50c9f2
<St_LatexOnly>\n            |
Packit Service 50c9f2
<St_LatexOnly>.             {
Packit Service 50c9f2
  			 g_token->verb+=yytext;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_XmlOnly>{CMD}"endxmlonly" {
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_XmlOnly>[^\\@\n]+  |
Packit Service 50c9f2
<St_XmlOnly>\n         |
Packit Service 50c9f2
<St_XmlOnly>.          {
Packit Service 50c9f2
  			 g_token->verb+=yytext;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_DbOnly>{CMD}"enddocbookonly" {
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_DbOnly>[^\\@\n]+  |
Packit Service 50c9f2
<St_DbOnly>\n         |
Packit Service 50c9f2
<St_DbOnly>.          {
Packit Service 50c9f2
  			 g_token->verb+=yytext;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Verbatim>{CMD}"endverbatim" {
Packit Service 50c9f2
  			 g_token->verb=stripEmptyLines(g_token->verb);
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Verbatim>[^\\@\n]+ |
Packit Service 50c9f2
<St_Verbatim>\n        |
Packit Service 50c9f2
<St_Verbatim>.         { /* Verbatim text */
Packit Service 50c9f2
  			 g_token->verb+=yytext;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Dot>{CMD}"enddot"  {
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Dot>[^\\@\n]+      |
Packit Service 50c9f2
<St_Dot>\n             |
Packit Service 50c9f2
<St_Dot>.              { /* dot text */
Packit Service 50c9f2
  			 g_token->verb+=yytext;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Msc>{CMD}("endmsc")  {
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Msc>[^\\@\n]+      |
Packit Service 50c9f2
<St_Msc>\n             |
Packit Service 50c9f2
<St_Msc>.              { /* msc text */
Packit Service 50c9f2
  			 g_token->verb+=yytext;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_PlantUMLOpt>{BLANK}*"{"[^}]*"}" { // case 1: file name is specified as {filename}
Packit Service 50c9f2
                         g_token->sectionId = QCString(yytext).stripWhiteSpace();
Packit Service 50c9f2
                         // skip curly brackets around the optional image name
Packit Service 50c9f2
			 g_token->sectionId = g_token->sectionId.mid(1,g_token->sectionId.length()-2).stripWhiteSpace();
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_PlantUMLOpt>{BLANK}*{FILEMASK}{BLANK}+/{ID}"=" { // case 2: plain file name specified followed by an attribute
Packit Service 50c9f2
                         g_token->sectionId = QCString(yytext).stripWhiteSpace();
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_PlantUMLOpt>{BLANK}*{FILEMASK}{BLANK}+/"\"" { // case 3: plain file name specified followed by a quoted title
Packit Service 50c9f2
                         g_token->sectionId = QCString(yytext).stripWhiteSpace();
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_PlantUMLOpt>{BLANK}*{FILEMASK}{BLANK}*/\n { // case 4: plain file name specified without title or attributes
Packit Service 50c9f2
                         g_token->sectionId = QCString(yytext).stripWhiteSpace();
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_PlantUMLOpt>.      {
Packit Service 50c9f2
                         g_token->sectionId = "";
Packit Service 50c9f2
                         unput(*yytext);
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_PlantUML>{CMD}"enduml"  {
Packit Service 50c9f2
                         return RetVal_OK;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_PlantUML>[^\\@\n]+ |
Packit Service 50c9f2
<St_PlantUML>\n        |
Packit Service 50c9f2
<St_PlantUML>.         { /* plantuml text */
Packit Service 50c9f2
  			 g_token->verb+=yytext;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Title>"\""	       { // quoted title
Packit Service 50c9f2
  			 BEGIN(St_TitleQ);
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Title>[ \t]+       {
Packit Service 50c9f2
                         g_token->chars=yytext;
Packit Service 50c9f2
  			 return TK_WHITESPACE;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Title>.	       { // non-quoted title
Packit Service 50c9f2
  			 unput(*yytext);
Packit Service 50c9f2
			 BEGIN(St_TitleN);
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Title>\n	       {
Packit Service 50c9f2
                         unput(*yytext);
Packit Service 50c9f2
  			 return 0;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_TitleN>"&"{ID}";"  { /* symbol */
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
  		         return TK_SYMBOL;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_TitleN>{HTMLTAG}   {
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_TitleN>{SPCMD1}    |   
Packit Service 50c9f2
<St_TitleN>{SPCMD2}    { /* special command */ 
Packit Service 50c9f2
                         g_token->name = yytext+1;
Packit Service 50c9f2
			 g_token->paramDir=TokenInfo::Unspecified;
Packit Service 50c9f2
                         return TK_COMMAND;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_TitleN>{ID}"="     { /* attribute */
Packit Service 50c9f2
                         if (yytext[0]=='%') // strip % if present
Packit Service 50c9f2
			   g_token->name = &yytext[1];
Packit Service 50c9f2
			 else
Packit Service 50c9f2
                           g_token->name = yytext;
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_TitleN>{WORD1}     |
Packit Service 50c9f2
<St_TitleN>{WORD2}     { /* word */
Packit Service 50c9f2
                         if (yytext[0]=='%') // strip % if present
Packit Service 50c9f2
			   g_token->name = &yytext[1];
Packit Service 50c9f2
			 else
Packit Service 50c9f2
                           g_token->name = yytext;
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_TitleN>[ \t]+      {
Packit Service 50c9f2
                         g_token->chars=yytext;
Packit Service 50c9f2
  			 return TK_WHITESPACE;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_TitleN>\n	       { /* new line => end of title */
Packit Service 50c9f2
                         unput(*yytext);
Packit Service 50c9f2
  			 return 0;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_TitleQ>"&"{ID}";"  { /* symbol */
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
  		         return TK_SYMBOL;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_TitleQ>{SPCMD1}    |   
Packit Service 50c9f2
<St_TitleQ>{SPCMD2}    { /* special command */ 
Packit Service 50c9f2
                         g_token->name = yytext+1;
Packit Service 50c9f2
			 g_token->paramDir=TokenInfo::Unspecified;
Packit Service 50c9f2
                         return TK_COMMAND;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_TitleQ>{WORD1NQ}   |
Packit Service 50c9f2
<St_TitleQ>{WORD2NQ}   { /* word */
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_TitleQ>[ \t]+      {
Packit Service 50c9f2
                         g_token->chars=yytext;
Packit Service 50c9f2
  			 return TK_WHITESPACE;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_TitleQ>"\""	       { /* closing quote => end of title */
Packit Service 50c9f2
  			 BEGIN(St_TitleA);
Packit Service 50c9f2
  			 return 0;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_TitleQ>\n	       { /* new line => end of title */
Packit Service 50c9f2
                         unput(*yytext);
Packit Service 50c9f2
  			 return 0;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_TitleA>{BLANK}*{ID}{BLANK}*"="{BLANK}* { // title attribute
Packit Service 50c9f2
  			 g_token->name = yytext;
Packit Service 50c9f2
			 g_token->name = g_token->name.left(g_token->name.find('=')).stripWhiteSpace();
Packit Service 50c9f2
  			 BEGIN(St_TitleV);
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_TitleV>[^ \t\r\n]+ { // attribute value
Packit Service 50c9f2
  			 g_token->chars = yytext;
Packit Service 50c9f2
			 BEGIN(St_TitleN);
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_TitleV,St_TitleA>. {
Packit Service 50c9f2
  			 unput(*yytext);
Packit Service 50c9f2
  			 return 0;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_TitleV,St_TitleA>\n	 {
Packit Service 50c9f2
  			 return 0;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
Packit Service 50c9f2
<St_Anchor>{LABELID}{WS}? { // anchor
Packit Service 50c9f2
  			 g_token->name = QCString(yytext).stripWhiteSpace();
Packit Service 50c9f2
  			 return TK_WORD;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Anchor>.	       {
Packit Service 50c9f2
  			 unput(*yytext);
Packit Service 50c9f2
			 return 0;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Cite>{CITEID}      { // label to cite
Packit Service 50c9f2
  			 g_token->name=yytext;
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Cite>{BLANK}       { // white space
Packit Service 50c9f2
  			 unput(' ');
Packit Service 50c9f2
  			 return 0;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Cite>\n	       { // new line
Packit Service 50c9f2
                         unput(*yytext);
Packit Service 50c9f2
  			 return 0;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Cite>.	       { // any other character
Packit Service 50c9f2
                         unput(*yytext);
Packit Service 50c9f2
  			 return 0;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Ref>{REFWORD_NOCV}/{BLANK}("const")[a-z_A-Z0-9] { // see bug776988
Packit Service 50c9f2
  			 g_token->name=yytext;
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Ref>{REFWORD_NOCV}/{BLANK}("volatile")[a-z_A-Z0-9] { // see bug776988
Packit Service 50c9f2
  			 g_token->name=yytext;
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Ref>{REFWORD}      { // label to refer to
Packit Service 50c9f2
  			 g_token->name=yytext;
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Ref>{BLANK}        { // white space
Packit Service 50c9f2
  			 unput(' ');
Packit Service 50c9f2
  			 return 0;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Ref>{WS}+"\""{WS}* { // white space following by quoted string
Packit Service 50c9f2
  			 BEGIN(St_Ref2);
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Ref>\n	       { // new line
Packit Service 50c9f2
                         unput(*yytext);
Packit Service 50c9f2
  			 return 0;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Ref>.	       { // any other character
Packit Service 50c9f2
                         unput(*yytext);
Packit Service 50c9f2
  			 return 0;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_IntRef>[A-Z_a-z0-9.:/#\-\+\(\)]+ {
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_IntRef>{BLANK}+"\"" {
Packit Service 50c9f2
                         BEGIN(St_Ref2);
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_SetScope>({SCOPEMASK}|{ANONNS}){BLANK} {
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
                         g_token->name = g_token->name.stripWhiteSpace();
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_SetScope>{SCOPEMASK}"<" {
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
                         g_token->name = g_token->name.stripWhiteSpace();
Packit Service 50c9f2
                         g_sharpCount=1;
Packit Service 50c9f2
                         BEGIN(St_SetScopeEnd);
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_SetScope>{BLANK}   {
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_SetScopeEnd>"<"    {
Packit Service 50c9f2
                         g_token->name += yytext;
Packit Service 50c9f2
                         g_sharpCount++;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_SetScopeEnd>">"    {
Packit Service 50c9f2
                         g_token->name += yytext;
Packit Service 50c9f2
                         g_sharpCount--;
Packit Service 50c9f2
                         if (g_sharpCount<=0)
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           return TK_WORD;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_SetScopeEnd>.      {
Packit Service 50c9f2
                         g_token->name += yytext;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Ref2>"&"{ID}";"    { /* symbol */
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
  		         return TK_SYMBOL;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Ref2>{SPCMD1}      |   
Packit Service 50c9f2
<St_Ref2>{SPCMD2}      { /* special command */ 
Packit Service 50c9f2
                         g_token->name = yytext+1;
Packit Service 50c9f2
			 g_token->paramDir=TokenInfo::Unspecified;
Packit Service 50c9f2
                         return TK_COMMAND;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Ref2>{WORD1NQ}     |
Packit Service 50c9f2
<St_Ref2>{WORD2NQ}     {
Packit Service 50c9f2
                         /* word */
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Ref2>[ \t]+        {
Packit Service 50c9f2
                         g_token->chars=yytext;
Packit Service 50c9f2
  			 return TK_WHITESPACE;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Ref2>"\""|\n       { /* " or \n => end of title */
Packit Service 50c9f2
  			 return 0;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_XRefItem>{LABELID} {
Packit Service 50c9f2
                         g_token->name=yytext;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_XRefItem>" "       {
Packit Service 50c9f2
                         BEGIN(St_XRefItem2);
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_XRefItem2>[0-9]+"." {
Packit Service 50c9f2
  			 QCString numStr=yytext;
Packit Service 50c9f2
			 numStr=numStr.left((int)yyleng-1);
Packit Service 50c9f2
			 g_token->id=numStr.toInt();
Packit Service 50c9f2
			 return RetVal_OK;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Para,St_Title,St_Ref2>"
Packit Service 50c9f2
                         g_commentState = YY_START;
Packit Service 50c9f2
                         BEGIN(St_Comment); 
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Param>"\""[^\n\"]+"\"" {
Packit Service 50c9f2
  			 g_token->name = yytext+1;
Packit Service 50c9f2
			 g_token->name = g_token->name.left((int)yyleng-2);
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Param>({PHPTYPE}{BLANK}*"|"{BLANK}*)*{PHPTYPE}{WS}+("&")?"$"{LABELID} {
Packit Service 50c9f2
  			 QCString params = yytext;
Packit Service 50c9f2
			 int j = params.find('&';;
Packit Service 50c9f2
			 int i = params.find('$');
Packit Service 50c9f2
			 if (j
Packit Service 50c9f2
			 QCString types = params.left(i).stripWhiteSpace();
Packit Service 50c9f2
			 g_token->name = types+"#"+params.mid(i);
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Param>[^ \t\n,@\\]+  {
Packit Service 50c9f2
  			 g_token->name = yytext;
Packit Service 50c9f2
                         if (g_token->name.at(yyleng-1)==':')
Packit Service 50c9f2
                         {
Packit Service 50c9f2
                           g_token->name=g_token->name.left(yyleng-1);
Packit Service 50c9f2
                         }
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Param>{WS}*","{WS}*  /* param separator */
Packit Service 50c9f2
<St_Param>{WS}	       {
Packit Service 50c9f2
                         g_token->chars=yytext;
Packit Service 50c9f2
                         return TK_WHITESPACE;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_File>{FILEMASK}    {
Packit Service 50c9f2
  			 g_token->name = yytext;
Packit Service 50c9f2
			 return TK_WORD;  
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_File>"\""[^\n\"]+"\"" {
Packit Service 50c9f2
  		         QCString text=yytext;
Packit Service 50c9f2
			 g_token->name = text.mid(1,text.length()-2);
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Pattern>[^\r\n]+   {
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
                         g_token->name = g_token->name.stripWhiteSpace();
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
<St_Link>{LINKMASK}|{REFWORD}    {
Packit Service 50c9f2
                         g_token->name = yytext;
Packit Service 50c9f2
			 return TK_WORD;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Comment>"-->"      { /* end of html comment */
Packit Service 50c9f2
                         BEGIN(g_commentState); 
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_Comment>[^-]+      /* inside html comment */
Packit Service 50c9f2
<St_Comment>.          /* inside html comment */
Packit Service 50c9f2
Packit Service 50c9f2
     /* State for skipping title (all chars until the end of the line) */
Packit Service 50c9f2
Packit Service 50c9f2
<St_SkipTitle>.
Packit Service 50c9f2
<St_SkipTitle>\n       { return 0; }
Packit Service 50c9f2
Packit Service 50c9f2
     /* State for the pass used to find the anchors and sections */ 
Packit Service 50c9f2
Packit Service 50c9f2
<St_Sections>[^\n@\\<]+
Packit Service 50c9f2
<St_Sections>"@@"|"\\\\"|"@<"|"\\<"
Packit Service 50c9f2
<St_Sections>"<"{CAPTION}({WS}+{ATTRIB})*">" {
Packit Service 50c9f2
                                      QCString tag=yytext;
Packit Service 50c9f2
                                      int s=tag.find("id=");
Packit Service 50c9f2
                                      if (s!=-1) // command has id attribute
Packit Service 50c9f2
                                      {
Packit Service 50c9f2
                                        char c=tag[s+3];
Packit Service 50c9f2
                                        if (c=='\'' || c=='"') // valid start
Packit Service 50c9f2
                                        {
Packit Service 50c9f2
                                          int e=tag.find(c,s+4);
Packit Service 50c9f2
                                          if (e!=-1) // found matching end
Packit Service 50c9f2
                                          {
Packit Service 50c9f2
                                            g_secType = SectionInfo::Table;
Packit Service 50c9f2
                                            g_secLabel=tag.mid(s+4,e-s-4); // extract id
Packit Service 50c9f2
                                            processSection();
Packit Service 50c9f2
                                          }
Packit Service 50c9f2
                                        }
Packit Service 50c9f2
                                      }
Packit Service 50c9f2
                                    }
Packit Service 50c9f2
<St_Sections>{CMD}"anchor"{BLANK}+  { 
Packit Service 50c9f2
                                      g_secType = SectionInfo::Anchor; 
Packit Service 50c9f2
				      BEGIN(St_SecLabel1); 
Packit Service 50c9f2
                                    }
Packit Service 50c9f2
<St_Sections>{CMD}"section"{BLANK}+ { 
Packit Service 50c9f2
                                      g_secType = SectionInfo::Section; 
Packit Service 50c9f2
                                      BEGIN(St_SecLabel2); 
Packit Service 50c9f2
                                    }
Packit Service 50c9f2
<St_Sections>{CMD}"subsection"{BLANK}+ { 
Packit Service 50c9f2
                                      g_secType = SectionInfo::Subsection; 
Packit Service 50c9f2
                                      BEGIN(St_SecLabel2); 
Packit Service 50c9f2
                                    }
Packit Service 50c9f2
<St_Sections>{CMD}"subsubsection"{BLANK}+ { 
Packit Service 50c9f2
                                      g_secType = SectionInfo::Subsubsection; 
Packit Service 50c9f2
                                      BEGIN(St_SecLabel2); 
Packit Service 50c9f2
                                    }
Packit Service 50c9f2
<St_Sections>{CMD}"paragraph"{BLANK}+ { 
Packit Service 50c9f2
                                      g_secType = SectionInfo::Paragraph; 
Packit Service 50c9f2
                                      BEGIN(St_SecLabel2); 
Packit Service 50c9f2
                                    }
Packit Service 50c9f2
<St_Sections>{CMD}"verbatim"/[^a-z_A-Z0-9]  {
Packit Service 50c9f2
                                      g_endMarker="endverbatim";
Packit Service 50c9f2
				      BEGIN(St_SecSkip);
Packit Service 50c9f2
  				    }
Packit Service 50c9f2
<St_Sections>{CMD}"dot"/[^a-z_A-Z0-9] {
Packit Service 50c9f2
                                      g_endMarker="enddot";
Packit Service 50c9f2
				      BEGIN(St_SecSkip);
Packit Service 50c9f2
  				    }
Packit Service 50c9f2
<St_Sections>{CMD}"msc"/[^a-z_A-Z0-9] {
Packit Service 50c9f2
                                      g_endMarker="endmsc";
Packit Service 50c9f2
				      BEGIN(St_SecSkip);
Packit Service 50c9f2
  				    }
Packit Service 50c9f2
<St_Sections>{CMD}"startuml"/[^a-z_A-Z0-9] {
Packit Service 50c9f2
                                      g_endMarker="enduml";
Packit Service 50c9f2
				      BEGIN(St_SecSkip);
Packit Service 50c9f2
  				    }
Packit Service 50c9f2
<St_Sections>{CMD}"htmlonly"/[^a-z_A-Z0-9] {
Packit Service 50c9f2
                                      g_endMarker="endhtmlonly";
Packit Service 50c9f2
				      BEGIN(St_SecSkip);
Packit Service 50c9f2
                                    }
Packit Service 50c9f2
<St_Sections>{CMD}"latexonly"/[^a-z_A-Z0-9] {
Packit Service 50c9f2
                                      g_endMarker="endlatexonly";
Packit Service 50c9f2
				      BEGIN(St_SecSkip);
Packit Service 50c9f2
                                    }
Packit Service 50c9f2
<St_Sections>{CMD}"xmlonly"/[^a-z_A-Z0-9] {
Packit Service 50c9f2
                                      g_endMarker="endxmlonly";
Packit Service 50c9f2
				      BEGIN(St_SecSkip);
Packit Service 50c9f2
                                    }
Packit Service 50c9f2
<St_Sections>{CMD}"docbookonly"/[^a-z_A-Z0-9] {
Packit Service 50c9f2
                                      g_endMarker="enddocbookonly";
Packit Service 50c9f2
				      BEGIN(St_SecSkip);
Packit Service 50c9f2
                                    }
Packit Service 50c9f2
<St_Sections>{CMD}"code"/[^a-z_A-Z0-9] {
Packit Service 50c9f2
                                      g_endMarker="endcode";
Packit Service 50c9f2
				      BEGIN(St_SecSkip);
Packit Service 50c9f2
  				    }
Packit Service 50c9f2
<St_Sections>"
Packit Service 50c9f2
                                      g_endMarker="-->";
Packit Service 50c9f2
				      BEGIN(St_SecSkip);
Packit Service 50c9f2
                                    }
Packit Service 50c9f2
<St_SecSkip>{CMD}{ID}		    {
Packit Service 50c9f2
                                      if (qstrcmp(yytext+1,g_endMarker)==0)
Packit Service 50c9f2
				      {
Packit Service 50c9f2
					BEGIN(St_Sections);
Packit Service 50c9f2
				      }
Packit Service 50c9f2
                                    }
Packit Service 50c9f2
<St_SecSkip>"-->"		    {
Packit Service 50c9f2
                                      if (qstrcmp(yytext,g_endMarker)==0)
Packit Service 50c9f2
				      {
Packit Service 50c9f2
					BEGIN(St_Sections);
Packit Service 50c9f2
				      }
Packit Service 50c9f2
                                    }
Packit Service 50c9f2
<St_SecSkip>[^a-z_A-Z0-9\-\\\@]+
Packit Service 50c9f2
<St_SecSkip>.
Packit Service 50c9f2
<St_SecSkip>\n
Packit Service 50c9f2
<St_Sections>.
Packit Service 50c9f2
<St_Sections>\n        
Packit Service 50c9f2
<St_SecLabel1>{LABELID} { 
Packit Service 50c9f2
                         g_secLabel = yytext;
Packit Service 50c9f2
                         processSection();
Packit Service 50c9f2
                         BEGIN(St_Sections);
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_SecLabel2>{LABELID}{BLANK}+ | 
Packit Service 50c9f2
<St_SecLabel2>{LABELID}         { 
Packit Service 50c9f2
                         g_secLabel = yytext;
Packit Service 50c9f2
			 g_secLabel = g_secLabel.stripWhiteSpace();
Packit Service 50c9f2
                         BEGIN(St_SecTitle);
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<St_SecTitle>[^\n]+    |
Packit Service 50c9f2
<St_SecTitle>[^\n]*\n  {
Packit Service 50c9f2
                         g_secTitle = yytext;
Packit Service 50c9f2
			 g_secTitle = g_secTitle.stripWhiteSpace();
Packit Service 50c9f2
                         processSection();
Packit Service 50c9f2
                         BEGIN(St_Sections);
Packit Service 50c9f2
		       }
Packit Service 50c9f2
<St_SecTitle,St_SecLabel1,St_SecLabel2>. {
Packit Service 50c9f2
                         warn(g_fileName,yylineno,"Unexpected character `%s' while looking for section label or title",yytext); 
Packit Service 50c9f2
                       }
Packit Service 50c9f2
Packit Service 50c9f2
<St_Snippet>[^\n]+     |
Packit Service 50c9f2
<St_Snippet>[^\n]*\n   {
Packit Service 50c9f2
  			 g_token->name = yytext;
Packit Service 50c9f2
			 g_token->name = g_token->name.stripWhiteSpace();
Packit Service 50c9f2
			 return TK_WORD;  
Packit Service 50c9f2
  		       }
Packit Service 50c9f2
   
Packit Service 50c9f2
     /* Generic rules that work for all states */ 
Packit Service 50c9f2
<*>\n                  { 
Packit Service 50c9f2
                         warn(g_fileName,yylineno,"Unexpected new line character"); 
Packit Service 50c9f2
		       }
Packit Service 50c9f2
<*>[\\@<>&$#%~"=]      { /* unescaped special character */
Packit Service 50c9f2
                         //warn(g_fileName,yylineno,"Unexpected character `%s', assuming command \\%s was meant.",yytext,yytext); 
Packit Service 50c9f2
			 g_token->name = yytext;
Packit Service 50c9f2
			 return TK_COMMAND;
Packit Service 50c9f2
                       }
Packit Service 50c9f2
<*>.                   { 
Packit Service 50c9f2
                         warn(g_fileName,yylineno,"Unexpected character `%s'",yytext);
Packit Service 50c9f2
		       }
Packit Service 50c9f2
%%
Packit Service 50c9f2
Packit Service 50c9f2
//--------------------------------------------------------------------------
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYFindSections(const char *input,Definition *d,
Packit Service 50c9f2
                                MemberGroup *mg,const char *fileName)
Packit Service 50c9f2
{
Packit Service 50c9f2
  if (input==0) return;
Packit Service 50c9f2
  printlex(yy_flex_debug, TRUE, __FILE__, fileName);
Packit Service 50c9f2
  g_inputString = input;
Packit Service 50c9f2
  //printf("parsing --->`%s'<---\n",input);
Packit Service 50c9f2
  g_inputPos    = 0;
Packit Service 50c9f2
  g_definition  = d;
Packit Service 50c9f2
  g_memberGroup = mg;
Packit Service 50c9f2
  g_fileName    = fileName;
Packit Service 50c9f2
  BEGIN(St_Sections);
Packit Service 50c9f2
  doctokenizerYYlineno = 1;
Packit Service 50c9f2
  doctokenizerYYlex();
Packit Service 50c9f2
  printlex(yy_flex_debug, FALSE, __FILE__, fileName);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYinit(const char *input,const char *fileName)
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_autoListLevel = 0;
Packit Service 50c9f2
  g_inputString = input;
Packit Service 50c9f2
  g_inputPos    = 0;
Packit Service 50c9f2
  g_fileName    = fileName;
Packit Service 50c9f2
  g_insidePre   = FALSE;
Packit Service 50c9f2
  BEGIN(St_Para);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStatePara()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_Para);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateTitle()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_Title);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateTitleAttrValue()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_TitleV);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateCode()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_token->verb="";
Packit Service 50c9f2
  g_token->name="";
Packit Service 50c9f2
  BEGIN(St_CodeOpt);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateXmlCode()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_token->verb="";
Packit Service 50c9f2
  g_token->name="";
Packit Service 50c9f2
  BEGIN(St_XmlCode);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateHtmlOnly()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_token->verb="";
Packit Service 50c9f2
  g_token->name="";
Packit Service 50c9f2
  BEGIN(St_HtmlOnlyOption);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateManOnly()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_token->verb="";
Packit Service 50c9f2
  BEGIN(St_ManOnly);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateRtfOnly()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_token->verb="";
Packit Service 50c9f2
  BEGIN(St_RtfOnly);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateXmlOnly()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_token->verb="";
Packit Service 50c9f2
  BEGIN(St_XmlOnly);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateDbOnly()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_token->verb="";
Packit Service 50c9f2
  BEGIN(St_DbOnly);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateLatexOnly()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_token->verb="";
Packit Service 50c9f2
  BEGIN(St_LatexOnly);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateVerbatim()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_token->verb="";
Packit Service 50c9f2
  BEGIN(St_Verbatim);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateDot()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_token->verb="";
Packit Service 50c9f2
  BEGIN(St_Dot);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateMsc()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_token->verb="";
Packit Service 50c9f2
  BEGIN(St_Msc);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStatePlantUMLOpt()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_token->verb="";
Packit Service 50c9f2
  g_token->sectionId="";
Packit Service 50c9f2
  BEGIN(St_PlantUMLOpt);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStatePlantUML()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_token->verb="";
Packit Service 50c9f2
  BEGIN(St_PlantUML);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateParam()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_Param);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateXRefItem()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_XRefItem);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateFile()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_File);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStatePattern()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_Pattern);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateLink()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_Link);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateCite()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_Cite);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateRef()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_Ref);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateInternalRef()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_IntRef);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateText()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_Text);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateSkipTitle()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_SkipTitle);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateAnchor()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_Anchor);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateSnippet()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_Snippet);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetStateSetScope()
Packit Service 50c9f2
{
Packit Service 50c9f2
  BEGIN(St_SetScope);
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYcleanup()
Packit Service 50c9f2
{
Packit Service 50c9f2
  yy_delete_buffer( YY_CURRENT_BUFFER );
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYsetInsidePre(bool b)
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_insidePre = b;
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYpushBackHtmlTag(const char *tag)
Packit Service 50c9f2
{
Packit Service 50c9f2
  QCString tagName = tag;
Packit Service 50c9f2
  int i,l = tagName.length();
Packit Service 50c9f2
  unput('>');
Packit Service 50c9f2
  for (i=l-1;i>=0;i--)
Packit Service 50c9f2
  {
Packit Service 50c9f2
    unput(tag[i]);
Packit Service 50c9f2
  }
Packit Service 50c9f2
  unput('<');
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYstartAutoList()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_autoListLevel++;
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void doctokenizerYYendAutoList()
Packit Service 50c9f2
{
Packit Service 50c9f2
  g_autoListLevel--;
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
//REAL_YY_DECL
Packit Service 50c9f2
//{
Packit Service 50c9f2
//  printlex(yy_flex_debug, TRUE, __FILE__, g_fileName);
Packit Service 50c9f2
//  int retval = LOCAL_YY_DECL;
Packit Service 50c9f2
//  printlex(yy_flex_debug, FALSE, __FILE__, g_fileName);
Packit Service 50c9f2
//  return retval;
Packit Service 50c9f2
//}
Packit Service 50c9f2
#if !defined(YY_FLEX_SUBMINOR_VERSION) 
Packit Service 50c9f2
extern "C" { // some bogus code to keep the compiler happy
Packit Service 50c9f2
    void doctokenizerYYdummy() { yy_flex_realloc(0,0); }
Packit Service 50c9f2
}
Packit Service 50c9f2
#endif
Packit Service 50c9f2