From f03a35208f8b0fb19b79708c60153f6e522c1074 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 24 Jan 1995 16:01:30 +0000 Subject: [PATCH] Added -ansi to CFLAGS. New functions and change of data structures. --- include/dfa.h | 108 ++++++++++++++------------------------------------------- 1 file changed, 26 insertions(+), 82 deletions(-) diff --git a/include/dfa.h b/include/dfa.h index 55f1f3a..55c7456 100644 --- a/include/dfa.h +++ b/include/dfa.h @@ -4,7 +4,11 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: dfa.h,v $ - * Revision 1.2 1994-09-26 16:31:23 adam + * Revision 1.3 1995-01-24 16:01:30 adam + * Added -ansi to CFLAGS. + * New functions and change of data structures. + * + * Revision 1.2 1994/09/26 16:31:23 adam * Minor changes. xmalloc declares xcalloc now. * * Revision 1.1 1994/09/26 10:17:43 adam @@ -17,100 +21,40 @@ #include #include -#define CAT 16000 -#define OR 16001 -#define STAR 16002 -#define PLUS 16003 -#define EPSILON 16004 - -typedef struct Tnode_ { - union { - struct Tnode_ *p[2]; /* CAT,OR,STAR,PLUS (left,right) */ - short ch[2]; /* if ch[0] >= 0 then this Tnode represents */ - /* a character in range [ch[0]..ch[1]] */ - /* otherwise ch[0] represents */ - /* accepting no (-acceptno) */ - } u; - unsigned pos : 15; /* CAT/OR/STAR/EPSILON or non-neg. position */ - unsigned nullable : 1; - Set firstpos; /* first positions */ - Set lastpos; /* last positions */ -} Tnode; - -typedef struct Tblock_ { /* Tnode bucket (block) */ - struct Tblock_ *next; /* pointer to next bucket */ - Tnode *tarray; /* array of nodes in bucket */ -} Tblock; -typedef struct { - Tnode *root; /* root of regular syntax tree */ - Tnode *top; /* regular tree top (returned by parse_dfa) */ - int position; /* no of positions so far */ - int rule; /* no of rules so far */ - BSetHandle *charset; /* character set type */ - BSet anyset; /* character recognized by `.' */ - int use_Tnode; /* used Tnodes */ - int max_Tnode; /* allocated Tnodes */ - Tblock *start; /* start block of Tnodes */ - Tblock *end; /* end block of Tnodes */ -} DFA; - -typedef struct { +struct DFA_tran { unsigned char ch[2]; /* transition on ch[0] <= c <= ch[1] to */ unsigned short to; /* this state */ -} DFA_tran; +}; -typedef struct DFA_trans_ { - struct DFA_trans_ *next; /* next DFA transition block */ - DFA_tran *tran_block; /* pointer to transitions */ +struct DFA_trans { + struct DFA_trans *next; /* next DFA transition block */ + struct DFA_tran *tran_block; /* pointer to transitions */ int ptr; /* index of next transition in tran_block */ int size; /* allocated size of tran_block */ -} DFA_trans; +}; -typedef struct DFA_state_ { - struct DFA_state_ *next; /* next entry in free/unmarked/marked list */ - struct DFA_state_ *link; /* link to next entry in hash chain */ - DFA_tran *trans; /* transition list */ +struct DFA_state { + struct DFA_state *next; /* next entry in free/unmarked/marked list */ + struct DFA_state *link; /* link to next entry in hash chain */ + struct DFA_tran *trans; /* transition list */ Set set; /* set of positions (important nfa states) */ short no; /* no of this state */ short tran_no; /* no of transitions to other states */ short rule_no; /* if non-zero, this holds accept rule no */ -} DFA_state; - -typedef struct DFA_stateb_ { - struct DFA_stateb_ *next; - DFA_state *state_block; -} DFA_stateb; - -typedef struct { - DFA_state *freelist; /* chain of unused (but allocated) DFA states */ - DFA_state *unmarked; /* chain of unmarked DFA states */ - DFA_state *marked; /* chain of marked DFA states */ - DFA_stateb *statemem; /* state memory */ - int no; /* no of states (unmarked+marked) */ - SetType st; /* Position set type */ - int hash; /* no hash entries in hasharray */ - DFA_state **hasharray; /* hash pointers */ - DFA_state **sortarray; /* sorted DFA states */ - DFA_trans *transmem; /* transition memory */ -} DFA_states; - -DFA * init_dfa (void); -void rm_dfa (DFA **dfap); -int parse_dfa (DFA *, char **, const unsigned short *); -DFA_states* mk_dfas (DFA *, int poset_chunk); -void rm_dfas (DFA_states **dfas); +}; -Tnode * mk_Tnode (void); -Tnode * mk_Tnode_cset (BSet charset); -void term_Tnode (void); +struct DFA { + int no_states; + struct DFA_state **states; + struct DFA_states *state_info; + struct DFA_parse *parse_info; +}; -int init_DFA_states (DFA_states **dfasp, SetType st, int hash); -int rm_DFA_states (DFA_states **dfasp); -int add_DFA_state (DFA_states *dfas, Set *s, DFA_state **sp); -DFA_state *get_DFA_state (DFA_states *dfas); -void sort_DFA_states (DFA_states *dfas); -void add_DFA_tran (DFA_states *, DFA_state *, int, int, int); +struct DFA *dfa_init (void); +int dfa_parse (struct DFA *, char **); +void dfa_mkstate (struct DFA *); +void dfa_delete (struct DFA **); extern int debug_dfa_trav; extern int debug_dfa_tran; -- 1.7.10.4