1
//-----------------------------parser.h---------------------------------
2
#ifndef PARSER_H
3
#define PARSER_H
4![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
#include "scanner.h"
6![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
typedef double (*FuncPtr)(double);
8
struct ExprNode // 语法树节点类型
9
{
10
enum Token_Type OpCode;
11
union
12
{
13
struct
14
{
15
ExprNode *Left, *Right;
16
} CaseOperator;
17
struct
18
{
19
ExprNode *Child;
20
FuncPtr MathFuncPtr;
21
} CaseFunc;
22
double CaseConst;
23
double *CaseParmPtr;
24
} Content;
25
};
26![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
27
extern void Parser(char *SrcFilePtr); // 语法分析器对外的接口
28![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
29
#endif
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
1
//-------------------------parser.cpp-----------------------------
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
#include "parser.h"
4![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
#define PARSER_DEBUG
6![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
#ifndef PARSER_DEBUG
8
#include "semantic.h"
9
#endif
10![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
#ifdef PARSER_DEBUG
12
#define enter(x) printf("enter in "); printf(x); printf("\n")
13
#else
14
#define enter(x)
15
#endif
16![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
17
#ifdef PARSER_DEBUG
18
#define back(x) printf("exit from "); printf(x); printf("\n")
19
#else
20
#define back(x)
21
#endif
22![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
23
#ifdef PARSER_DERBUG
24
#define call_match(x) printf("match token "); printf(x); printf("\n")
25
#else
26
#define call_match(x)
27
#endif
28![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
29
#ifdef PARSER_DEBUG
30
#define Tree_trace(x) PrintSyntaxTree(x, 1);
31
#else
32
#define Tree_trace
33
#endif
34![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
35
#ifdef PARSER_DEBUG
36
double Parameter = 0; //参数T的存储空间
37
#else
38
double Parameter = 0, //参数存储空间
39
Origin_x = 0, Origin_y = 0, //横纵坐标平移距离
40
Scale_x = 1,Scale_y = 1, //横纵比例因子
41
Rot_angle = 0; //旋转角度
42
#endif
43![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
44
static Token token; //记号
45![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
46![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
47
// ------------辅助函数声明
48
static void FetchToken();
49
static void MatchToken(enum Token_Type AToken);
50
static void SyntaxError(int case_of);
51
static void ErrMsg(unsigned LineNo, char *descrip, char *string);
52
static void PrintSyntaxTree(struct ExprNode *root, int indent);
53![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
54
// ------------非终结符的递归子程序声明
55
static void Program();
56
static void Statement();
57
static void OriginStatement();
58
static void RotStatement();
59
static void ScaleStatement();
60
static void ForStatement();
61
static struct ExprNode *Expression();
62
static struct ExprNode *Term();
63
static struct ExprNode *Factor();
64
static struct ExprNode *Component();
65
static struct ExprNode *Atom();
66![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
67
// -------------外部接口与语法树构造函数声明
68
extern void Parser(char *SrcFilePtr);
69
static struct ExprNode *MakeExprNode(enum Token_Type opcode,
);
70![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
71
// -------------通过词法分析器接口GetToken获取一个记号
72
static void FetchToken()
73
{
74
token = GetToken();
75
if(token.type == ERRTOKEN) SyntaxError(1);
76
}
77![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
78
// -------------匹配记号
79
static void MatchToken(enum Token_Type The_Token)
80
{
81
if(token.type != The_Token) SyntaxError(2);
82
FetchToken();
83
}
84![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
85
// -------------语法错误处理
86
static void SyntaxError(int case_of)
87
{
88
switch(case_of)
89
{
90
case 1: ErrMsg(LineNo, "错误记号", token.lexeme);
91
break;
92
case 2: ErrMsg(LineNo, "不是预期记号", token.lexeme);
93
break;
94
}
95
}
96![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
97
// -------------打印错误信息
98
void ErrMsg(unsigned int LineNo, char *descrip, char *string)
99
{
100
#ifdef PARSER_DEBUG
101
printf("Line No %5d:%s %s !\n", LineNo, descrip, string);
102
#else
103
char msg[256];
104
memset(msg, 0, 256);
105
sprintf("Line No %5d:%s %s !\n", LineNo, descrip, string);
106
#endif
107![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
108
#ifdef _VC_COMPILER
109
MessageBox(NULL,msg"error!",MB_OK);
110
#endif
111![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
112
#ifdef _BC_COMPILER
113
printf("%s\n",msg);
114
#endif
115![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
116
CloseScanner();
117
exit(1);
118
}
119![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
120
// -------------先序遍历并打印表达式的语法树
121
void PrintSyntaxTree(struct ExprNode *root, int indent)
122
{
123
int temp;
124
for(temp = 1; temp <= indent; ++temp) printf("\t"); // 缩进
125
switch(root->OpCode)
126
{
127
case PLUS : printf("%s\n", "+");break;
128
case MINUS : printf("%s\n", "-");break;
129
case MUL : printf("%s\n", "*");break;
130
case DIV : printf("%s\n", "/");break;
131
case POWER : printf("%s\n", "**");break;
132
case FUNC : printf("%x\n", root->Content.CaseFunc.MathFuncPtr);break;
133
case CONST_ID : printf("%f\n", root->Content.CaseConst);break;
134
case T: printf("%s\n", "T");break;
135
default: printf("Error Tree Node!\n");exit(0);
136
}
137
if(root->OpCode == CONST_ID || root->OpCode == T) //叶子节点返回
138
return;
139
if(root->OpCode == FUNC) //递归打印一个孩子的节点
140
PrintSyntaxTree(root->Content.CaseFunc.Child, indent+1);
141
else //递归打印两个孩子的节点
142
{
143
PrintSyntaxTree(root->Content.CaseOperator.Left, indent+1);
144
PrintSyntaxTree(root->Content.CaseOperator.Right, indent+1);
145
}
146
}
147![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
148
// -------------绘图语言解释器入口(与主程序的外部接口)
149
void Parser(char *SrcFilePtr)
150
{
151
enter("Parser");
152
if(!InitScanner(SrcFilePtr)) //初始化词法分析器
153
{
154
printf("Open Source File Error!\n");
155
return;
156
}
157
FetchToken(); //获取第一个记号
158
Program(); //递归下降分析
159
CloseScanner(); //关闭词法分析器
160
back("Parser");
161
return;
162
}
163![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
164
// -------------Program的递归子程序
165
static void Program()
166
{
167
enter("Program");
168
while(token.type != NONTOKEN)
169
{
170
Statement();
171
MatchToken(SEMICO);
172
}
173
back("Program");
174
}
175![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
176
// --------------Statement的递归子程序
177
static void Statement()
178
{
179
enter("Statement");
180
switch(token.type)
181
{
182
case ORIGIN : OriginStatement(); break;
183
case SCALE : ScaleStatement(); break;
184
case ROT : RotStatement(); break;
185
case FOR : ForStatement(); break;
186
default : SyntaxError(2); break;
187
}
188
back("Statement");
189
}
190![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
191
// -------------OriginStatement的递归子程序
192
static void OriginStatement(void)
193
{
194
struct ExprNode *tmp;
195![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
196
enter("OriginStatement");
197
MatchToken(ORIGIN);
198
MatchToken(IS);
199
MatchToken(L_BRACKET);
200
tmp = Expression();
201![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
202
#ifndef PARSER_DEBUG
203
Origin_x = GetExprValue(tmp); // 获取横坐标的平移距离
204
DelExprTree(tmp);
205
#endif
206![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
207
MatchToken(COMMA);
208
tmp = Expression();
209![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
210
#ifndef PARSER_DEBUG
211
Origin_y = GetExprValue(tmp); // 获取纵坐标的平移距离
212
DelExprTree(tmp);
213
#endif
214![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
215
MatchToken(R_BRACKET);
216
back("OriginStatement");
217
}
218![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
219
// -------------ScaleStatement的递归子程序
220
static void ScaleStatement(void)
221
{
222
struct ExprNode *tmp;
223![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
224
enter("ScaleStatement");
225
MatchToken(SCALE);
226
MatchToken(IS);
227
MatchToken(L_BRACKET);
228
tmp = Expression();
229![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
230
#ifndef PARSER_DEBUG
231
Scale_x = GetExprValue(tmp); //获取横坐标的比例因子
232
DelExprTree(tmp);
233
#endif
234![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
235
MatchToken(COMMA);
236
tmp = Expression();
237![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
238
#ifndef PARSER_DEBUG
239
Scale_y = GetExprValue(tmp); //获取纵坐标的比例因子
240
DelExprTree(tmp);
241
#endif
242![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
243
MatchToken(R_BRACKET);
244
back("ScaleStatement");
245
}
246![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
247
// -------------RotStatement的递归子程序
248
static void RotStatement(void)
249
{
250
struct ExprNode *tmp;
251![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
252
enter("RotStatement");
253
MatchToken(ROT);
254
MatchToken(IS);
255
tmp = Expression();
256![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
257
#ifndef PARSER_DEBUG
258
Rot_angle = GetExprValue(tmp); //获取旋转角度
259
DelExprTree(tmp);
260
#endif
261![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
262
back("RotStatement");
263
}
264![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
265
// -------------ForStatement的递归子程序
266
static void ForStatement(void)
267
{
268![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
269
#ifndef PARSER_DEBUG
270
double Start, End, Step; //绘图起点, 终点, 步长
271
#endif
272![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
273
struct ExprNode *start_ptr, *end_ptr, *step_ptr, *x_ptr, *y_ptr;
274
//各表达式语法树根节点指针
275![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
276
enter("ForStatement");
277![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
278
MatchToken(FOR); call_match("FOR");
279
MatchToken(T); call_match("T");
280
MatchToken(FROM); call_match("FROM");
281![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
282
start_ptr = Expression(); //构造参数起点表达式语法树
283![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
284
#ifndef PARSER_DEBUG
285
Start = GetExprValue(start_ptr); //计算参数起点表达式的值
286
DelExprTree(start_ptr); //释放参数起点语法树所占空间
287
#endif
288![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
289
MatchToken(TO); call_match("TO");
290
end_ptr = Expression(); //构造参数终点表达式语法树
291![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
292
#ifndef PARSER_DEBUG
293
End = GetExprValue(end_ptr); //计算参数终点表达式
294
DelExprTree(end_ptr); //释放参数终点语法树所占空间
295
#endif
296![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
297
MatchToken(STEP); call_match("STEP");
298
step_ptr = Expression(); //构造参数步长表达式语法树
299![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
300
#ifndef PARSER_DEBUG
301
Step = GetExprValue(step_ptr); //计算参数步长表达式值
302
DelExprTree(step_ptr); //释放参数步长语法树所占空间
303
#endif
304![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
305
MatchToken(DRAW); call_match("DRAW");
306
MatchToken(L_BRACKET); call_match("(");
307
x_ptr = Expression(); //构造横坐标表达式语法树
308
MatchToken(COMMA); call_match(",");
309
y_ptr = Expression(); //构造纵坐标表达式语法树
310
MatchToken(R_BRACKET); call_match(")");
311![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
312
#ifndef PARSER_DEBUG
313
DrawLoop(Start, End, Step, x_ptr, y_ptr); //绘制图形
314
DelExprTree(x_ptr); //释放横坐标语法树所占空间
315
DelExprTree(y_ptr); //释放纵坐标语法树所占空间
316
#endif
317![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
318
back("ForStatement");
319
}
320![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
321
// -------------Expression的递归子程序
322
static struct ExprNode * Expression()
323
{
324
struct ExprNode *left, *right; //左右子树节点的指针
325
Token_Type token_tmp; //当前记号
326![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
327
enter("Expression");
328
left = Term(); //分析左操作数且得到其语法树
329
while(token.type == PLUS || token.type == MINUS)
330
{
331
token_tmp = token.type;
332
MatchToken(token_tmp);
333
right = Term(); //分析右操作数且得到其语法树
334
left = MakeExprNode(token_tmp, left, right);
335
//构造运算的语法树, 结果为左子树
336
}
337
Tree_trace(left); //打印表达式的语法树
338
back("Expression");
339
return left; //返回最终表达式的语法树
340
}
341![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
342
// -------------Term的递归子程序
343
static struct ExprNode *Term()
344
{
345
struct ExprNode *left, *right;
346
Token_Type token_tmp;
347![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
348
left = Factor();
349
while(token.type == MUL || token.type == DIV)
350
{
351
token_tmp = token.type;
352
MatchToken(token_tmp);
353
right = Factor();
354
left = MakeExprNode(token_tmp, left, right);
355
}
356
return left;
357
}
358![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
359
// -------------Factor的递归子程序
360
static struct ExprNode * Factor()
361
{
362
struct ExprNode *left, *right;
363![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
364
if(token.type == PLUS) //匹配一元加运算
365
{
366
MatchToken(PLUS);
367
right = Factor(); //表达式退化为仅有右操作数的表达式
368
}
369
else if(token.type == MINUS) //匹配一元减运算
370
{
371
MatchToken(MINUS); //表达式转化为二元减运算的表达式
372
right = Factor();
373
left = new ExprNode;
374
left->OpCode = CONST_ID;
375
left->Content.CaseConst = 0.0;
376
right = MakeExprNode(MINUS, left, right);
377
}
378
else right = Component(); //匹配非终结符Component
379![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
380
return right;
381
}
382![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
383
// -------------Comoenent的递归子程序
384
static struct ExprNode *Component()
385
{
386
struct ExprNode *left, *right;
387![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
388
left = Atom();
389
if(token.type == POWER)
390
{
391
MatchToken(POWER);
392
right = Component(); //递归调用Component以实现POWER的右集合
393
left = MakeExprNode(POWER, left, right);
394
}
395
return left;
396
}
397![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
398
// -------------Atom的递归子程序
399
static struct ExprNode *Atom()
400
{
401
struct Token t = token;
402
struct ExprNode *address, *tmp;
403![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
404
switch(token.type)
405
{
406
case CONST_ID :
407
MatchToken(CONST_ID);
408
address = MakeExprNode(CONST_ID, t.value);
409
break;
410
case T :
411
MatchToken(T);
412
address = MakeExprNode(T);
413
break;
414
case FUNC :
415
MatchToken(FUNC);
416
MatchToken(L_BRACKET);
417
tmp = Expression();
418
address = MakeExprNode(FUNC, t.FuncPtr, tmp);
419
MatchToken(R_BRACKET);
420
break;
421
case L_BRACKET :
422
MatchToken(L_BRACKET);
423
address = Expression();
424
MatchToken(R_BRACKET);
425
break;
426
default :
427
SyntaxError(2);
428
}
429
return address;
430
}
431![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
432![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
433
// -------------生成语法树的一个结点
434
static struct ExprNode *MakeExprNode(enum Token_Type opcode,
)
435
{
436
struct ExprNode *ExprPtr = new (struct ExprNode);
437
ExprPtr->OpCode = opcode; //接收记号的种类
438
va_list ArgPtr;
439
va_start(ArgPtr, opcode);
440
switch(opcode) //根据记号的类别构造不同的节点
441
{
442
case CONST_ID : //常数节点
443
ExprPtr->Content.CaseConst = (double)va_arg(ArgPtr, double);
444
break;
445
case T : //参数节点
446
ExprPtr->Content.CaseParmPtr = &Parameter;
447
break;
448
case FUNC : //函数调用节点
449
ExprPtr->Content.CaseFunc.MathFuncPtr = (FuncPtr)va_arg(ArgPtr, FuncPtr);
450
ExprPtr->Content.CaseFunc.Child = (struct ExprNode *)va_arg(ArgPtr, struct ExprNode *);
451
break;
452
default :
453
ExprPtr->Content.CaseOperator.Left = (struct ExprNode *)va_arg(ArgPtr, struct ExprNode *);
454
ExprPtr->Content.CaseOperator.Right = (struct ExprNode *)va_arg(ArgPtr, struct ExprNode *);
455
break;
456
}
457
va_end(ArgPtr);
458![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
459
return ExprPtr;
460
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
66
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
67
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
68
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/dot.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
71
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
72
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
73
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
74
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
77
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
78
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
79
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
80
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
81
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
82
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
84
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
85
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
86
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
87
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
88
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
90
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
92
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
94
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
95
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
96
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
97
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
98
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
99
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
100
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
102
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
103
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
104
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
106
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
108
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
110
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
112
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
114
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
116
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
118
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
119
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
120
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
121
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
122
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
123
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
124
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
125
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
126
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
127
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
128
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
129
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
130
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
131
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
132
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
133
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
134
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
135
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
136
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
137
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
138
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
139
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
140
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
141
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
142
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
143
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
144
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
145
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
146
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
147
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
148
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
149
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
150
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
151
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
152
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
153
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
154
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
155
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
156
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
157
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
158
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
159
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
160
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
161
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
162
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
163
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
164
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
165
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
166
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
167
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
168
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
169
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
170
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
171
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
172
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
173
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
174
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
175
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
176
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
177
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
178
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
179
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
180
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
181
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
182
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
183
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
184
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
185
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
186
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
187
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
188
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
189
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
190
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
191
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
192
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
193
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
194
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
195
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
196
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
197
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
198
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
199
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
200
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
201
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
202
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
203
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
204
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
205
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
206
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
207
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
208
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
209
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
210
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
211
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
212
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
213
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
214
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
215
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
216
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
217
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
218
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
219
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
220
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
221
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
222
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
223
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
224
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
225
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
226
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
227
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
228
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
229
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
230
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
231
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
232
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
233
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
234
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
235
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
236
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
237
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
238
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
239
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
240
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
241
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
242
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
243
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
244
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
245
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
246
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
247
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
248
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
249
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
250
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
251
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
252
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
253
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
254
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
255
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
256
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
257
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
258
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
259
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
260
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
261
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
262
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
263
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
264
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
265
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
266
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
267
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
268
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
269
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
270
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
271
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
272
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
273
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
274
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
275
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
276
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
277
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
278
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
279
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
280
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
281
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
282
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
283
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
284
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
285
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
286
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
287
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
288
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
289
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
290
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
291
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
292
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
293
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
294
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
295
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
296
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
297
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
298
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
299
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
300
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
301
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
302
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
303
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
304
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
305
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
306
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
307
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
308
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
309
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
310
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
311
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
312
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
313
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
314
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
315
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
316
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
317
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
318
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
319
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
320
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
321
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
322
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
323
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
324
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
325
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
326
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
327
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
328
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
329
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
330
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
331
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
332
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
333
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
334
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
335
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
336
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
337
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
338
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
339
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
340
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
341
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
342
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
343
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
344
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
345
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
346
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
347
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
348
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
349
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
350
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
351
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
352
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
353
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
354
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
355
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
356
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
357
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
358
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
359
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
360
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
361
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
362
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
363
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
364
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
365
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
366
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
367
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
368
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
369
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
370
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
371
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
372
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
373
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
374
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
375
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
376
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
377
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
378
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
379
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
380
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
381
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
382
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
383
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
384
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
385
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
386
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
387
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
388
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
389
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
390
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
391
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
392
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
393
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
394
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
395
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
396
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
397
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
398
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
399
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
400
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
401
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
402
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
403
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
404
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
405
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
406
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
407
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
408
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
409
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
410
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
411
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
412
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
413
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
414
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
415
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
416
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
417
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
418
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
419
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
420
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
421
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
422
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
423
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
424
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
425
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
426
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
427
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
428
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
429
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
430
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
431
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
432
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
433
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
434
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/dot.gif)
435
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
436
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
437
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
438
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
439
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
440
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
441
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
442
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
443
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
444
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
445
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
446
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
447
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
448
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
449
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
450
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
451
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
452
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
453
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
454
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
455
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
456
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
457
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
458
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
459
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
460
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
1
//----------------------------parsermain.cpp-----------------------
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
#include <stdio.h>
4
#include "parser.h"
5![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
extern void Parser(char *SrcFilePtr);
7![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
int main()
9
{
10
Parser("test.txt");
11
return 0;
12
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
注:要想正常运行需要把词法分析器的那部分也加入到工程中