设为首页 加入收藏

TOP

C++Precept和NV类的封装
2014-11-24 12:59:19 】 浏览:2275
Tags:Precept 封装

C++ Precept和NV类的封装,请看下面考试大为您收集的代码:
  1 #pragma once

  2 #include "..StringNWString.h"

  3 #include "..AutoPtrAutoPtr.h"

  4 #include "..CommonList.h"

  5

  6 #define Type_Match_Content 0 // 匹配值

  7 #define Type_Match_Rule 1 // 匹配一条表达式

  8 #define Type_Or -1

  9 #define Type_Choose -2

  10 #define Type_Loop_0 -3

  11 #define Type_Loop_1 -4

  12 #define Type_Opt -5

  13 #define Type_LQ -6

  14 #define Type_RQ -7

  15

  16 class Precept

  17 {

  18 public:

  19 int Left;

  20 List Right;

  21

  22 Precept() : Left(0){}

  23 Precept(int L,List R) : Left(L),Right(R){}

  24

  25 // +Precept

  26 friend NAutoPtr operator+(NAutoPtr P)

  27 {

  28 NAutoPtr p = new Precept;

  29 p->Right.Add(Type_Loop_1);

  30 p->Right.Add(Type_LQ);

  31 p->Right.Add(P->Right);

  32 p->Right.Add(Type_RQ);

  33 return p;

  34 }

  35

  36 // Precept + Precept

  37 friend NAutoPtr operator+(NAutoPtr P1,NAutoPtr P2)

  38 {

  39 NAutoPtr p = new Precept;

  40 p->Right.Add(P1->Right);

  41 p->Right.Add(P2->Right);

  42 return p;

  43 }

  44

  45 // *Precept

  46 friend NAutoPtr operator*(NAutoPtr P)

  47 {

  48 NAutoPtr p = new Precept;

  49 p->Right.Add(Type_Loop_0);

  50 p->Right.Add(Type_LQ);

  51 p->Right.Add(P->Right);

  52 p->Right.Add(Type_RQ);

  53 return p;

  54 }

  55

 56 // Precept | Precept

  57 friend NAutoPtr operator|(NAutoPtr P1,NAutoPtr P2)

  58 {

  59 NAutoPtr p = new Precept;

  60 p->Right.Add(Type_LQ);

  61 p->Right.Add(P1->Right);

  62 p->Right.Add(Type_RQ);

  63 p->Right.Add(Type_Or);

  64 p->Right.Add(Type_LQ);

  65 p->Right.Add(P2->Right);

  66 p->Right.Add(Type_RQ);

  67 return p;

  68 }

  69 };

  70

  71 class NV

  72 {

  73 public:

  74 NWString

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇构建自己的C/C++插件开发框架(三.. 下一篇C++中的explicit关键字使用示例

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目