Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(43)

Side by Side Diff: icu46/source/common/rbbinode.h

Issue 5516007: Check in the pristine copy of ICU 4.6... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « icu46/source/common/rbbidata.cpp ('k') | icu46/source/common/rbbinode.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 /********************************************************************
2 * COPYRIGHT:
3 * Copyright (c) 2001-2006, International Business Machines Corporation and
4 * others. All Rights Reserved.
5 ********************************************************************/
6
7 #ifndef RBBINODE_H
8 #define RBBINODE_H
9
10 #include "unicode/utypes.h"
11 #include "unicode/uobject.h"
12
13 //
14 // class RBBINode
15 //
16 // Represents a node in the parse tree generated when reading
17 // a rule file.
18 //
19
20 U_NAMESPACE_BEGIN
21
22 class UnicodeSet;
23 class UVector;
24
25 class RBBINode : public UMemory {
26 public:
27 enum NodeType {
28 setRef,
29 uset,
30 varRef,
31 leafChar,
32 lookAhead,
33 tag,
34 endMark,
35 opStart,
36 opCat,
37 opOr,
38 opStar,
39 opPlus,
40 opQuestion,
41 opBreak,
42 opReverse,
43 opLParen
44 };
45
46 enum OpPrecedence {
47 precZero,
48 precStart,
49 precLParen,
50 precOpOr,
51 precOpCat
52 };
53
54 NodeType fType;
55 RBBINode *fParent;
56 RBBINode *fLeftChild;
57 RBBINode *fRightChild;
58 UnicodeSet *fInputSet; // For uset nodes only.
59 OpPrecedence fPrecedence; // For binary ops only.
60
61 UnicodeString fText; // Text corresponding to this node.
62 // May be lazily evaluated when (i f) needed
63 // for some node types.
64 int fFirstPos; // Position in the rule source strin g of the
65 // first text associated with the node.
66 // If there's a left child, this w ill be the same
67 // as that child's left pos.
68 int fLastPos; // Last position in the rule source string
69 // of any text associated with th is node.
70 // If there's a right child, this will be the same
71 // as that child's last postion.
72
73 UBool fNullable; // See Aho.
74 int32_t fVal; // For leafChar nodes, the value.
75 // Values are the character catego ry,
76 // corresponds to columns in the f inal
77 // state transition table.
78
79 UBool fLookAheadEnd; // For endMark nodes, set TRUE if
80 // marking the end of a look-ahead rule.
81
82 UVector *fFirstPosSet;
83 UVector *fLastPosSet; // TODO: rename fFirstPos & fLastPos to avoid confusion.
84 UVector *fFollowPos;
85
86
87 RBBINode(NodeType t);
88 RBBINode(const RBBINode &other);
89 ~RBBINode();
90
91 RBBINode *cloneTree();
92 RBBINode *flattenVariables();
93 void flattenSets();
94 void findNodes(UVector *dest, RBBINode::NodeType kind, UErrorCod e &status);
95
96 #ifdef RBBI_DEBUG
97 void printNode();
98 void printTree(UBool withHeading);
99 #endif
100
101 private:
102 RBBINode &operator = (const RBBINode &other); // No defs.
103 UBool operator == (const RBBINode &other); // Private, so these funct ions won't accidently be used.
104
105 #ifdef RBBI_DEBUG
106 int fSerialNum; // Debugging aids.
107 #endif
108 };
109
110 #ifdef RBBI_DEBUG
111 U_CFUNC void
112 RBBI_DEBUG_printUnicodeString(const UnicodeString &s, int minWidth=0);
113 #endif
114
115 U_NAMESPACE_END
116
117 #endif
118
OLDNEW
« no previous file with comments | « icu46/source/common/rbbidata.cpp ('k') | icu46/source/common/rbbinode.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698