Ignore:
Timestamp:
Oct 13, 2015, 3:57:17 PM (4 years ago)
Author:
nmedfort
Message:

First attempt at adding grapheme cluster mode to icgrep.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/re/re_compiler.h

    r4829 r4831  
    6969    MarkerType process(RE * re, MarkerType marker, pablo::PabloBuilder & pb);
    7070    MarkerType compileName(Name * name, MarkerType marker, pablo::PabloBuilder & pb);
    71     MarkerType process(Seq * seq, MarkerType marker, pablo::PabloBuilder & pb);
    72     MarkerType processSeqTail(Seq::iterator current, Seq::iterator end, int matchLenSoFar, MarkerType marker, pablo::PabloBuilder & pb);
    73     MarkerType process(Alt * alt, MarkerType marker, pablo::PabloBuilder & pb);
    74     MarkerType process(Assertion * a, MarkerType marker, pablo::PabloBuilder & pb);
    75     MarkerType process(Rep * rep, MarkerType marker, pablo::PabloBuilder & pb);
    76     MarkerType process(Diff * diff, MarkerType marker, pablo::PabloBuilder & cg);
    77     MarkerType process(Intersect * x, MarkerType marker, pablo::PabloBuilder & cg);
    78     pablo::PabloAST *consecutive1(pablo::PabloAST *repeated,  int repeated_lgth, int repeat_count, pablo::PabloBuilder & pb);
     71    MarkerType compileSeq(Seq * seq, MarkerType marker, pablo::PabloBuilder & pb);
     72    MarkerType compileSeqTail(Seq::iterator current, Seq::iterator end, int matchLenSoFar, MarkerType marker, pablo::PabloBuilder & pb);
     73    MarkerType compileAlt(Alt * alt, MarkerType marker, pablo::PabloBuilder & pb);
     74    MarkerType compileAssertion(Assertion * a, MarkerType marker, pablo::PabloBuilder & pb);
     75    MarkerType compileRep(Rep * rep, MarkerType marker, pablo::PabloBuilder & pb);
     76    MarkerType compileDiff(Diff * diff, MarkerType marker, pablo::PabloBuilder & cg);
     77    MarkerType compileIntersect(Intersect * x, MarkerType marker, pablo::PabloBuilder & cg);
     78    pablo::PabloAST * consecutive_matches(pablo::PabloAST * repeated,  int length, int repeat_count, pablo::PabloBuilder & pb);
    7979    pablo::PabloAST * reachable(pablo::PabloAST * repeated,  int repeated_lgth, int repeat_count, pablo::PabloBuilder & pb);
    8080    static bool isFixedLength(RE * regexp);
     
    8585
    8686    Name * generateGraphemeClusterBoundaryRule();
    87     pablo::PabloAST * compileName(Name * name, pablo::PabloBuilder & pb);
     87    MarkerType compileName(Name * name, pablo::PabloBuilder & pb);
    8888    MarkerType compileAny(const MarkerType m, pablo::PabloBuilder & pb);
     89    MarkerType compileStart(const MarkerType marker, pablo::PabloBuilder & pb);
     90    MarkerType compileEnd(const MarkerType marker, pablo::PabloBuilder & pb);
     91    MarkerType compileGraphemeBoundary(GraphemeBoundary *gb, const MarkerType marker, pablo::PabloBuilder & pb);
    8992
    9093private:
     
    9598    pablo::PabloAST *                               mUnicodeLineBreak;
    9699    pablo::PabloAST *                               mAny;
    97     Name *                                          mGraphemeBoundaryRule;
     100    pablo::PabloAST *                               mGraphemeBoundaryRule;
    98101    pablo::PabloAST *                               mInitial;
    99     pablo::Assign *                                 mNonFinal;
     102    pablo::Assign *                                 mNonFinal;   
    100103    pablo::PabloAST *                               mFinal;
    101104    pablo::PabloAST *                               mWhileTest;
     
    103106    std::vector<pablo::Next *>                      mLoopVariants; // <- rethink name
    104107    pablo::PabloBuilder                             mPB;
     108    std::unordered_map<Name *, MarkerType>          mCompiledName;   
    105109    pablo::PabloFunction &                          mFunction;
    106110};
Note: See TracChangeset for help on using the changeset viewer.