/*
* Copyright 1990 by Rayan S. Zachariassen, all rights reserved.
* This will be free software, but only when it is finished.
*/
#ifndef Z_SIFT_H
#define Z_SIFT_H
#include "listutils.h"
#include "token.h"
#include "tregexp.h"
#include "regex.h"
struct vaccess { /* in a list of this structure */
struct vaccess *next;
conscell *l; /* points at variable name in :env */
};
extern struct vaccess * v_accessed;
typedef struct regexp {
regex_t re;
const char *pattern;
const char **match;
} regexp;
struct si_retab {
struct si_retab *next;
regexp *rep;
tregexp *trep;
const char **match;
token822 *startp[NSUBEXP];
token822 *endp[NSUBEXP];
};
struct siftinfo {
int kind; /* 0: StringSift, !0: TokenSift */
token822 *tlist; /* token list for tsift expression */
const char *str; /* string for sift expression */
struct vaccess *accessed; /* variables dependencies of expr. */
int label; /* label to go to when reevaluating */
regexp *program; /* compiled regular expression stack */
tregexp *tprogram; /* compiled regular texpression stack*/
struct si_retab *subexps; /* linked list of subexpressions */
int count; /* count how many matches on this level */
};
#endif /* Z_SIFT_H */
syntax highlighted by Code2HTML, v. 0.9.1