Mercurial > hg > Applications > Grep
view regexParser/regexParser.h @ 189:fccf7941ecc2 pairPro
fix
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 25 Dec 2015 14:42:31 +0900 |
parents | 109d22faf7b5 |
children | 3e8e5780ad4a |
line wrap: on
line source
#include "error.h" #define NEW(type) (type*)malloc(sizeof(type)) #define SYNTAX_NODENUMBER 100 #ifndef INCLUDED_STRUCT #define INCLUDED_STRUCT typedef struct bitVector { unsigned long bitContainer; }BitVector,*BitVectorPtr; typedef struct word { unsigned char *word; int length; } Word, *WordPtr; typedef struct utf8Range { unsigned long begin; unsigned long end; struct utf8Range *next; // only used in the parser. } RangeList , *RangeListPtr; typedef struct condition { RangeList range; Word w; } Condition, *ConditionList; typedef struct charClass { unsigned char type; struct charClass *left; struct charClass *right; Condition cond; BitVector nextState; } CharClass, *CharClassPtr; typedef struct node { unsigned char tokenType; CharClassPtr cc; int stateNum; int nextStateNum; typedef struct state { BitVector bitState; CharClassPtr cc; struct node *node; struct state *next; } State, *StatePtr; StatePtr state; struct node *left; struct node *right; } Node, *NodePtr; typedef struct stateStack { BitVector state; struct stateStack *next; } StateStack, *StateStackPtr; typedef struct transitionGenerator { long stateMax; StateStackPtr stack; node::StatePtr state; node::StatePtr stateArray; node::StatePtr currentState; node::StatePtr startState; node::StatePtr endState; } TransitionGenerator, *TransitionGeneratorPtr; typedef struct tgValue { bool asterisk; int stateNum; int stateBegin; int stateEnd; node::StatePtr tgState; TransitionGeneratorPtr tg; } TGValue, *TGValuePtr; enum charClassStackState { LEFT, SELF, RIGHT }; typedef struct charClassStack { charClassStackState turn; CharClassPtr cc; struct charClassStack *next; } CharClassStack, *CharClassStackPtr; typedef struct charClassWalker { CharClassStackPtr stack; CharClassPtr next; } CharClassWalker, *CharClassWalkerPtr; typedef struct regexInfo { unsigned char *ptr; unsigned char tokenType; unsigned char *tokenValue; int stateNumber; } RegexInfo, *RegexInfoPtr; #endif NodePtr createNode(RegexInfoPtr ri,unsigned char type,CharClassPtr cc, NodePtr left, NodePtr right); extern CharClassPtr createCharClassRange(unsigned long begin, unsigned long end,unsigned long state, CharClassPtr left, CharClassPtr right);