Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef VLTTokenizer_INCLUDE_ONCE
00033 #define VLTTokenizer_INCLUDE_ONCE
00034
00035 #include <vlCore/BufferedStream.hpp>
00036
00037 namespace vl
00038 {
00040 class VLTToken
00041 {
00042 public:
00043 typedef enum
00044 {
00045 TOKEN_ERROR,
00046 TOKEN_EOF,
00047
00048 LeftRoundBracket,
00049 RightRoundBracket,
00050 LeftSquareBracket,
00051 RightSquareBracket,
00052 LeftCurlyBracket,
00053 RightCurlyBracket,
00054 LeftFancyBracket,
00055 RightFancyBracket,
00056 Equals,
00057 String,
00058 ID,
00059 Identifier,
00060 Boolean,
00061 Integer,
00062 real,
00063 TagHeader,
00064 RawtextBlock,
00065
00066 } EType;
00067
00068 VLTToken(): mType(TOKEN_ERROR) {}
00069
00070 std::string mString;
00071 EType mType;
00072 };
00073
00075 class VLTTokenizer: public BufferedStream<char, 128*1024>
00076 {
00077 VL_INSTRUMENT_CLASS(vl::VLTTokenizer, VL_GROUP(BufferedStream<char, 128*1024>))
00078
00079 public:
00080 VLTTokenizer(): mLineNumber(1), mRawtextBlock(false) {}
00081
00082 VLCORE_EXPORT bool getToken(VLTToken& token);
00083
00084 VLCORE_EXPORT bool getRawtextBlock(VLTToken& token);
00085
00086 int lineNumber() const { return mLineNumber; }
00087
00088 private:
00089 int mLineNumber;
00090 bool mRawtextBlock;
00091 };
00092 }
00093
00094 #endif