00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __IVARIA_LEXAN_H__
00020 #define __IVARIA_LEXAN_H__
00021
00022 #include "iutil/databuff.h"
00023 #include "iutil/string.h"
00024
00025 SCF_VERSION (iRegExp, 0, 0, 1);
00026
00028 struct iRegExp : public iBase
00029 {
00031 virtual bool GetOp(unsigned index, unsigned char &op)=0;
00032
00037 virtual bool SetOp(unsigned index, unsigned char op)=0;
00038
00042 virtual bool Compact()=0;
00043 };
00044
00045
00046 SCF_VERSION (iRegExpCompiler, 0, 0, 1);
00047
00049 struct iRegExpCompiler : public iBase
00050 {
00052 virtual bool Compile(char *regexp, iRegExp &re, unsigned int start=0, unsigned int end=0)=0;
00053
00055 virtual unsigned int GetError()=0;
00056 };
00057
00058
00059 SCF_VERSION (iLexicalAnalyzer, 0, 0, 1);
00060
00062 struct iLexicalAnalyzer : public iBase
00063 {
00065 virtual bool RegisterRegExp(unsigned int key, iRegExp &re)=0;
00066
00068 virtual bool UnregisterRegExp(unsigned int key)=0;
00069
00071 virtual unsigned int GetFreeKey()=0;
00072
00074 virtual unsigned int GetError() = 0;
00075
00077 virtual unsigned int GetMatchedKey()=0;
00078
00080 virtual iString *GetMatchedText()=0;
00081
00083 virtual bool PushStream(iDataBuffer &buf)=0;
00084
00086 virtual bool PopStream()=0;
00087
00089 virtual unsigned int Match() = 0;
00090 };
00091
00092 #endif // __IVARIA_LEXAN_H__