Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

rbt_pars.h

Go to the documentation of this file.
00001 /*
00002 * Copyright © {1999}, International Business Machines Corporation and others. All Rights Reserved.
00003 **********************************************************************
00004 *   Date        Name        Description
00005 *   11/17/99    aliu        Creation.
00006 **********************************************************************
00007 */
00008 #ifndef RBT_PARS_H
00009 #define RBT_PARS_H
00010 
00011 #include "unicode/rbt.h"
00012 #include "uvector.h"
00013 #include "unicode/parseerr.h"
00014 
00015 class TransliterationRuleData;
00016 class UnicodeSet;
00017 class ParseData;
00018 class RuleHalf;
00019 class ParsePosition;
00020 
00021 class TransliterationRuleParser {
00022 
00027     const UnicodeString& rules;
00028 
00029     UTransDirection direction;
00030 
00031     TransliterationRuleData* data;
00032 
00037     UErrorCode status;
00038 
00043     UParseError* parseError;
00044 
00048     ParseData* parseData;
00049 
00055     UVector setVariablesVector;
00056 
00063     UChar variableNext;
00064 
00070     UChar variableLimit;
00071 
00079     UnicodeString undefinedVariableName;
00080 
00081     static const UnicodeString gOPERATORS;
00082 
00083 public:
00084 
00085     static TransliterationRuleData*
00086         parse(const UnicodeString& rules,
00087               UTransDirection direction,
00088               UParseError* parseError = 0);
00089     
00090 private:
00091 
00097     TransliterationRuleParser(const UnicodeString& rules,
00098                               UTransDirection direction,
00099                               UParseError* parseError = 0);
00100 
00104     ~TransliterationRuleParser();
00105 
00114     void parseRules(void);
00115 
00129     int32_t parseRule(int32_t pos, int32_t limit);
00130 
00140     int32_t syntaxError(int32_t parseErrorCode, const UnicodeString&, int32_t start);
00141 
00147     //UChar registerSet(UnicodeSet* adoptedSet);
00148  
00153     UChar parseSet(const UnicodeString& rule,
00154                    ParsePosition& pos);
00155 
00160     void appendVariableDef(const UnicodeString& name,
00161                            UnicodeString& buf);
00162         
00171     void determineVariableRange(void);
00172 
00185     static int32_t quotedIndexOf(const UnicodeString& text,
00186                                  int32_t start, int32_t limit,
00187                                  UChar c);
00188 
00189     friend class RuleHalf;
00190 
00191     // Disallowed methods; no impl.
00192     TransliterationRuleParser(const TransliterationRuleParser&);
00193     TransliterationRuleParser& operator=(const TransliterationRuleParser&);
00194 };
00195 
00196 #endif

Generated at Tue Dec 5 17:55:30 2000 for ICU by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000