1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef _DOCTOKENIZER_H
#define _DOCTOKENIZER_H
#include <qcstring.h>
#include <qlist.h>
enum Tokens
{
TK_WORD = 1,
TK_WHITESPACE = 2,
TK_LISTITEM = 3,
TK_ENDLIST = 4,
TK_COMMAND = 5,
TK_HTMLTAG = 6,
TK_SYMBOL = 7,
TK_NEWPARA = 8,
TK_RCSTAG = 9,
TK_URL = 10,
RetVal_OK = 0x10000,
RetVal_SimpleSec = 0x10001,
RetVal_ListItem = 0x10002,
RetVal_Section = 0x10003,
RetVal_EndList = 0x10004,
RetVal_EndPre = 0x10005,
RetVal_DescData = 0x10006,
RetVal_DescTitle = 0x10007,
RetVal_EndDesc = 0x10008,
RetVal_TableRow = 0x10009,
RetVal_TableCell = 0x1000A,
RetVal_TableHCell = 0x1000B,
RetVal_EndTable = 0x1000C,
RetVal_Internal = 0x1000D,
RetVal_SwitchLang = 0x1000E
};
struct Option
{
QCString name;
QCString value;
};
struct TokenInfo
{
TokenInfo() { options.setAutoDelete(TRUE); }
// unknown token
char unknownChar;
// command token
QCString name;
// command text (RCS tag)
QCString text;
// comment blocks
// list token info
bool isEnumList;
int indent;
// sections
QCString sectionId;
// simple section
QCString simpleSectName;
// verbatim fragment
QCString verb;
// xrefitem
int id;
// html tag
QList<Option> options;
bool endTag;
// whitespace
QCString chars;
};
// globals
extern TokenInfo *g_token;
extern int doctokenizerYYlineno;
extern FILE *doctokenizerYYin;
// helper functions
const char *tokToString(int token);
// operations on the scanner
void doctokenizerYYinit(const char *input);
void doctokenizerYYcleanup();
void doctokenizerYYpushContext();
bool doctokenizerYYpopContext();
int doctokenizerYYlex();
void doctokenizerYYsetStatePara();
void doctokenizerYYsetStateTitle();
void doctokenizerYYsetStateCode();
void doctokenizerYYsetStateHtmlOnly();
void doctokenizerYYsetStateLatexOnly();
void doctokenizerYYsetStateVerbatim();
void doctokenizerYYsetStateParam();
void doctokenizerYYsetStateXRefItem();
void doctokenizerYYsetStateFile();
void doctokenizerYYsetStatePattern();
void doctokenizerYYsetStateLink();
void doctokenizerYYsetStateRef();
#endif
|