]> git.mdlowis.com Git - proto/libregexp.git/commitdiff
removed rune-based api
authorMichael D. Lowis <mike.lowis@gentex.com>
Thu, 13 Dec 2018 02:28:06 +0000 (21:28 -0500)
committerMichael D. Lowis <mike.lowis@gentex.com>
Thu, 13 Dec 2018 02:28:06 +0000 (21:28 -0500)
.gitignore [new file with mode: 0644]
Makefile
rregexec.c [deleted file]
rregsub.c [deleted file]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..6e92f57
--- /dev/null
@@ -0,0 +1 @@
+tags
index bad630e6d0c7584f515328d4512d4ee5112fabdf..d2636b26fc42ba198c8b7bcfb37addcadfaf1776 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -13,8 +13,6 @@ OFILES=\
        regexec.$O\
        regsub.$O\
        regaux.$O\
-       rregexec.$O\
-       rregsub.$O\
        utf.$O\
 
 HFILES=\
diff --git a/rregexec.c b/rregexec.c
deleted file mode 100644 (file)
index 7ced021..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-#include "regexp9.h"
-#include "regcomp.h"
-
-/*
- *  return    0 if no match
- *        >0 if a match
- *        <0 if we ran out of _relist space
- */
-static int
-rregexec1(Reprog *progp,    /* program to run */
-    Rune *bol,        /* string to run machine on */
-    Resub *mp,        /* subexpression elements */
-    int ms,            /* number of elements at mp */
-    Reljunk *j)
-{
-    int flag=0;
-    Reinst *inst;
-    Relist *tlp;
-    Rune *s;
-    int i, checkstart;
-    Rune r, *rp, *ep;
-    Relist* tl;        /* This list, next list */
-    Relist* nl;
-    Relist* tle;        /* ends of this and next list */
-    Relist* nle;
-    int match;
-    Rune *p;
-
-    match = 0;
-    checkstart = j->startchar;
-    if(mp)
-        for(i=0; i<ms; i++) {
-            mp[i].s.rsp = 0;
-            mp[i].e.rep = 0;
-        }
-    j->relist[0][0].inst = 0;
-    j->relist[1][0].inst = 0;
-
-    /* Execute machine once for each character, including terminal NUL */
-    s = j->rstarts;
-    do{
-        /* fast check for first char */
-        if(checkstart) {
-            switch(j->starttype) {
-            case RUNE:
-                p = runestrchr(s, j->startchar);
-                if(p == 0 || s == j->reol)
-                    return match;
-                s = p;
-                break;
-            case BOL:
-                if(s == bol)
-                    break;
-                p = runestrchr(s, '\n');
-                if(p == 0 || s == j->reol)
-                    return match;
-                s = p+1;
-                break;
-            }
-        }
-
-        r = *s;
-
-        /* switch run lists */
-        tl = j->relist[flag];
-        tle = j->reliste[flag];
-        nl = j->relist[flag^=1];
-        nle = j->reliste[flag];
-        nl->inst = 0;
-
-        /* Add first instruction to current list */
-        _rrenewemptythread(tl, progp->startinst, ms, s);
-
-        /* Execute machine until current list is empty */
-        for(tlp=tl; tlp->inst; tlp++){
-            for(inst=tlp->inst; ; inst = inst->l.next){
-                switch(inst->type){
-                case RUNE:    /* regular character */
-                    if(inst->r.r == r)
-                        if(_renewthread(nl, inst->l.next, ms, &tlp->se)==nle)
-                            return -1;
-                    break;
-                case LBRA:
-                    tlp->se.m[inst->r.subid].s.rsp = s;
-                    continue;
-                case RBRA:
-                    tlp->se.m[inst->r.subid].e.rep = s;
-                    continue;
-                case ANY:
-                    if(r != '\n')
-                        if(_renewthread(nl, inst->l.next, ms, &tlp->se)==nle)
-                            return -1;
-                    break;
-                case ANYNL:
-                    if(_renewthread(nl, inst->l.next, ms, &tlp->se)==nle)
-                            return -1;
-                    break;
-                case BOL:
-                    if(s == bol || *(s-1) == '\n')
-                        continue;
-                    break;
-                case EOL:
-                    if(s == j->reol || r == 0 || r == '\n')
-                        continue;
-                    break;
-                case CCLASS:
-                    ep = inst->r.cp->end;
-                    for(rp = inst->r.cp->spans; rp < ep; rp += 2)
-                        if(r >= rp[0] && r <= rp[1]){
-                            if(_renewthread(nl, inst->l.next, ms, &tlp->se)==nle)
-                                return -1;
-                            break;
-                        }
-                    break;
-                case NCCLASS:
-                    ep = inst->r.cp->end;
-                    for(rp = inst->r.cp->spans; rp < ep; rp += 2)
-                        if(r >= rp[0] && r <= rp[1])
-                            break;
-                    if(rp == ep)
-                        if(_renewthread(nl, inst->l.next, ms, &tlp->se)==nle)
-                            return -1;
-                    break;
-                case OR:
-                    /* evaluate right choice later */
-                    if(_renewthread(tlp, inst->r.right, ms, &tlp->se) == tle)
-                        return -1;
-                    /* efficiency: advance and re-evaluate */
-                    continue;
-                case END:    /* Match! */
-                    match = 1;
-                    tlp->se.m[0].e.rep = s;
-                    if(mp != 0)
-                        _renewmatch(mp, ms, &tlp->se);
-                    break;
-                }
-                break;
-            }
-        }
-        if(s == j->reol)
-            break;
-        checkstart = j->startchar && nl->inst==0;
-        s++;
-    }while(r);
-    return match;
-}
-
-static int
-rregexec2(Reprog *progp,    /* program to run */
-    Rune *bol,    /* string to run machine on */
-    Resub *mp,    /* subexpression elements */
-    int ms,        /* number of elements at mp */
-    Reljunk *j
-)
-{
-    Relist relist0[5*LISTSIZE], relist1[5*LISTSIZE];
-
-    /* mark space */
-    j->relist[0] = relist0;
-    j->relist[1] = relist1;
-    j->reliste[0] = relist0 + nelem(relist0) - 2;
-    j->reliste[1] = relist1 + nelem(relist1) - 2;
-
-    return rregexec1(progp, bol, mp, ms, j);
-}
-
-extern int
-rregexec(Reprog *progp,    /* program to run */
-    Rune *bol,    /* string to run machine on */
-    Resub *mp,    /* subexpression elements */
-    int ms)        /* number of elements at mp */
-{
-    Reljunk j;
-    Relist relist0[LISTSIZE], relist1[LISTSIZE];
-    int rv;
-
-    /*
-      *  use user-specified starting/ending location if specified
-     */
-    j.rstarts = bol;
-    j.reol = 0;
-    if(mp && ms>0){
-        if(mp->s.sp)
-            j.rstarts = mp->s.rsp;
-        if(mp->e.ep)
-            j.reol = mp->e.rep;
-    }
-    j.starttype = 0;
-    j.startchar = 0;
-    if(progp->startinst->type == RUNE && progp->startinst->r.r < Runeself) {
-        j.starttype = RUNE;
-        j.startchar = progp->startinst->r.r;
-    }
-    if(progp->startinst->type == BOL)
-        j.starttype = BOL;
-
-    /* mark space */
-    j.relist[0] = relist0;
-    j.relist[1] = relist1;
-    j.reliste[0] = relist0 + nelem(relist0) - 2;
-    j.reliste[1] = relist1 + nelem(relist1) - 2;
-
-    rv = rregexec1(progp, bol, mp, ms, &j);
-    if(rv >= 0)
-        return rv;
-    rv = rregexec2(progp, bol, mp, ms, &j);
-    if(rv >= 0)
-        return rv;
-    return -1;
-}
diff --git a/rregsub.c b/rregsub.c
deleted file mode 100644 (file)
index 7e2198c..0000000
--- a/rregsub.c
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "regexp9.h"
-
-/* substitute into one string using the matches from the last regexec() */
-extern    void
-rregsub(Rune *sp,    /* source string */
-    Rune *dp,    /* destination string */
-    int dlen,
-    Resub *mp,    /* subexpression elements */
-    int ms)        /* number of elements pointed to by mp */
-{
-    Rune *ssp, *ep;
-    int i;
-
-    ep = dp+(dlen/sizeof(Rune))-1;
-    while(*sp != '\0'){
-        if(*sp == '\\'){
-            switch(*++sp){
-            case '0':
-            case '1':
-            case '2':
-            case '3':
-            case '4':
-            case '5':
-            case '6':
-            case '7':
-            case '8':
-            case '9':
-                i = *sp-'0';
-                if(mp!=0 && mp[i].s.rsp != 0 && ms>i)
-                    for(ssp = mp[i].s.rsp;
-                         ssp < mp[i].e.rep;
-                         ssp++)
-                        if(dp < ep)
-                            *dp++ = *ssp;
-                break;
-            case '\\':
-                if(dp < ep)
-                    *dp++ = '\\';
-                break;
-            case '\0':
-                sp--;
-                break;
-            default:
-                if(dp < ep)
-                    *dp++ = *sp;
-                break;
-            }
-        }else if(*sp == '&'){
-            if(mp!=0 && mp[0].s.rsp != 0 && ms>0)
-                for(ssp = mp[0].s.rsp;
-                     ssp < mp[0].e.rep; ssp++)
-                    if(dp < ep)
-                        *dp++ = *ssp;
-        }else{
-            if(dp < ep)
-                *dp++ = *sp;
-        }
-        sp++;
-    }
-    *dp = '\0';
-}