regexp.h - sam - An updated version of the sam text editor.
 (HTM) git clone git://vernunftzentrum.de/sam.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
       regexp.h (1521B)
       ---
            1 /* Copyright (c) 1998 Lucent Technologies - All rights reserved. */
            2 
            3 typedef struct Resub        Resub;
            4 typedef struct Reclass      Reclass;
            5 typedef struct Reinst       Reinst;
            6 typedef struct Reprog       Reprog;
            7 
            8 /*
            9  *  Sub expression matches
           10  */
           11 struct Resub{
           12     union
           13     {
           14         char *sp;
           15         wchar_t *rsp;
           16     }s;
           17     union
           18     {
           19         char *ep;
           20         wchar_t *rep;
           21     }e;
           22 };
           23 
           24 /*
           25  *  character class, each pair of rune's defines a range
           26  */
           27 struct Reclass{
           28     wchar_t    *end;
           29     wchar_t    spans[64];
           30 };
           31 
           32 /*
           33  *  Machine instructions
           34  */
           35 struct Reinst{
           36     int type;
           37     union   {
           38         Reclass *cp;        /* class pointer */
           39         wchar_t    r;      /* character */
           40         int subid;      /* sub-expression id for RBRA and LBRA */
           41         Reinst  *right;     /* right child of OR */
           42     }u1;
           43     union { /* regexp relies on these two being in the same union */
           44         Reinst *left;       /* left child of OR */
           45         Reinst *next;       /* next instruction for CAT & LBRA */
           46     }u2;
           47 };
           48 
           49 /*
           50  *  Reprogram definition
           51  */
           52 struct Reprog{
           53     Reinst  *startinst; /* start pc */
           54     Reclass class[16];  /* .data */
           55     Reinst  firstinst[5];   /* .text */
           56 };
           57 
           58 extern Reprog   *regcomp(char*);
           59 extern Reprog   *regcomplit(char*);
           60 extern Reprog   *regcompnl(char*);
           61 extern void regerror(char*);
           62 extern int  regexec(Reprog*, char*, Resub*, int);
           63 extern void regsub(char*, char*, Resub*, int);
           64 extern int  rregexec(Reprog*, wchar_t*, Resub*, int);
           65 extern void rregsub(wchar_t*, wchar_t*, Resub*, int);