YAP 7.1.0
regcomp.c File Reference

Regular expression compiler. More...

#include "YapInterface.h"
#include <stdio.h>
#include <stdlib.h>
#include "yapregex.h"
#include "collate.h"
#include "regex2.h"
#include "utils.h"
#include "cclass.h"
#include "cname.h"

Go to the source code of this file.

Macros

#define NPAREN   10 /* we need to remember () 1-9 for back refs */
 
#define PEEK()   (*p->next)
 
#define PEEK2()   (*(p->next + 1))
 
#define MORE()   (p->next < p->end)
 
#define MORE2()   (p->next + 1 < p->end)
 
#define SEE(c)   (MORE() && PEEK() == (c))
 
#define SEETWO(a, b)   (MORE() && MORE2() && PEEK() == (a) && PEEK2() == (b))
 
#define EAT(c)   ((SEE(c)) ? (NEXT(), 1) : 0)
 
#define EATTWO(a, b)   ((SEETWO(a, b)) ? (NEXT2(), 1) : 0)
 
#define NEXT()   (p->next++)
 
#define NEXT2()   (p->next += 2)
 
#define NEXTn(n)   (p->next += (n))
 
#define GETNEXT()   (*p->next++)
 
#define SETERROR(e)   seterr(p, (e))
 
#define REQUIRE(co, e)   ((co) || SETERROR(e))
 
#define MUSTSEE(c, e)   (REQUIRE(MORE() && PEEK() == (c), e))
 
#define MUSTEAT(c, e)   (REQUIRE(MORE() && GETNEXT() == (c), e))
 
#define MUSTNOTSEE(c, e)   (REQUIRE(!MORE() || PEEK() != (c), e))
 
#define EMIT(op, sopnd)   doemit(p, (sop)(op), (size_t)(sopnd))
 
#define INSERT(op, pos)   doinsert(p, (sop)(op), HERE() - (pos) + 1, pos)
 
#define AHEAD(pos)   dofwd(p, pos, HERE() - (pos))
 
#define ASTERN(sop, pos)   EMIT(sop, HERE() - pos)
 
#define HERE()   (p->slen)
 
#define THERE()   (p->slen - 1)
 
#define THERETHERE()   (p->slen - 2)
 
#define DROP(n)   (p->slen -= (n))
 
#define never   0 /* some <assert.h>s have bugs too */
 
#define GOODFLAGS(f)   ((f) & ~REG_DUMP)
 
#define BACKSL   (1 << CHAR_BIT)
 
#define N   2
 
#define INF   3
 
#define REP(f, t)   ((f)*8 + (t))
 
#define MAP(n)   (((n) <= 1) ? (n) : ((n) == INFINITY) ? INF : N)
 

Functions

int yap_regcomp (regex_t *preg, const char *pattern, int cflags)
 

Variables

int collate_load_error
 
int collate_substitute_nontrivial
 
char collate_version [STR_LEN]
 
unsigned char collate_substitute_table [UCHAR_MAX+1][STR_LEN]
 
struct collate_st_char_pri collate_char_pri_table [UCHAR_MAX+1]
 
struct collate_st_chain_pri collate_chain_pri_table [TABLE_SIZE]
 

Detailed Description

Regular expression compiler.

Definition in file regcomp.c.

Macro Definition Documentation

◆ AHEAD

#define AHEAD (   pos)    dofwd(p, pos, HERE() - (pos))

Definition at line 240 of file regcomp.c.

◆ ASTERN

#define ASTERN (   sop,
  pos 
)    EMIT(sop, HERE() - pos)

Definition at line 241 of file regcomp.c.

◆ DROP

#define DROP (   n)    (p->slen -= (n))

Definition at line 245 of file regcomp.c.

◆ EAT

#define EAT (   c)    ((SEE(c)) ? (NEXT(), 1) : 0)

Definition at line 227 of file regcomp.c.

◆ EATTWO

#define EATTWO (   a,
 
)    ((SEETWO(a, b)) ? (NEXT2(), 1) : 0)

Definition at line 228 of file regcomp.c.

◆ EMIT

#define EMIT (   op,
  sopnd 
)    doemit(p, (sop)(op), (size_t)(sopnd))

Definition at line 238 of file regcomp.c.

◆ GETNEXT

#define GETNEXT ( )    (*p->next++)

Definition at line 232 of file regcomp.c.

◆ HERE

#define HERE ( )    (p->slen)

Definition at line 242 of file regcomp.c.

◆ INSERT

#define INSERT (   op,
  pos 
)    doinsert(p, (sop)(op), HERE() - (pos) + 1, pos)

Definition at line 239 of file regcomp.c.

◆ MORE

#define MORE ( )    (p->next < p->end)

Definition at line 223 of file regcomp.c.

◆ MORE2

#define MORE2 ( )    (p->next + 1 < p->end)

Definition at line 224 of file regcomp.c.

◆ MUSTEAT

#define MUSTEAT (   c,
 
)    (REQUIRE(MORE() && GETNEXT() == (c), e))

Definition at line 236 of file regcomp.c.

◆ MUSTNOTSEE

#define MUSTNOTSEE (   c,
 
)    (REQUIRE(!MORE() || PEEK() != (c), e))

Definition at line 237 of file regcomp.c.

◆ MUSTSEE

#define MUSTSEE (   c,
 
)    (REQUIRE(MORE() && PEEK() == (c), e))

Definition at line 235 of file regcomp.c.

◆ never

#define never   0 /* some <assert.h>s have bugs too */

Definition at line 250 of file regcomp.c.

◆ NEXT

#define NEXT ( )    (p->next++)

Definition at line 229 of file regcomp.c.

◆ NEXT2

#define NEXT2 ( )    (p->next += 2)

Definition at line 230 of file regcomp.c.

◆ NEXTn

#define NEXTn (   n)    (p->next += (n))

Definition at line 231 of file regcomp.c.

◆ NPAREN

#define NPAREN   10 /* we need to remember () 1-9 for back refs */

Definition at line 154 of file regcomp.c.

◆ PEEK

#define PEEK ( )    (*p->next)

Definition at line 221 of file regcomp.c.

◆ PEEK2

#define PEEK2 ( )    (*(p->next + 1))

Definition at line 222 of file regcomp.c.

◆ REQUIRE

#define REQUIRE (   co,
 
)    ((co) || SETERROR(e))

Definition at line 234 of file regcomp.c.

◆ SEE

#define SEE (   c)    (MORE() && PEEK() == (c))

Definition at line 225 of file regcomp.c.

◆ SEETWO

#define SEETWO (   a,
 
)    (MORE() && MORE2() && PEEK() == (a) && PEEK2() == (b))

Definition at line 226 of file regcomp.c.

◆ SETERROR

#define SETERROR (   e)    seterr(p, (e))

Definition at line 233 of file regcomp.c.

◆ THERE

#define THERE ( )    (p->slen - 1)

Definition at line 243 of file regcomp.c.

◆ THERETHERE

#define THERETHERE ( )    (p->slen - 2)

Definition at line 244 of file regcomp.c.

Function Documentation

◆ yap_regcomp()

int yap_regcomp ( regex_t preg,
const char *  pattern,
int  cflags 
)

Definition at line 266 of file regcomp.c.

Variable Documentation

◆ collate_chain_pri_table

struct collate_st_chain_pri collate_chain_pri_table[TABLE_SIZE]

Definition at line 86 of file regcomp.c.

◆ collate_char_pri_table

struct collate_st_char_pri collate_char_pri_table[UCHAR_MAX+1]

Definition at line 85 of file regcomp.c.

◆ collate_load_error

int collate_load_error

Definition at line 81 of file regcomp.c.

◆ collate_substitute_nontrivial

int collate_substitute_nontrivial

Definition at line 82 of file regcomp.c.

◆ collate_substitute_table

unsigned char collate_substitute_table[UCHAR_MAX+1][STR_LEN]

Definition at line 84 of file regcomp.c.

◆ collate_version

char collate_version[STR_LEN]

Definition at line 83 of file regcomp.c.