Ignore:
Timestamp:
Aug 17, 2016, 9:20:46 PM (3 years ago)
Author:
cameron
Message:

Word Begin/End? changes from Fahad.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/re/re_parser.cpp

    r5130 r5132  
    330330
    331331
    332 #define bit40(x) (1ULL << ((x) - 0x40))
    333 const uint64_t setEscapeCharacters = bit40('b') | bit40('p') | bit40('q') | bit40('d') | bit40('w') | bit40('s') |
    334                                      bit40('B') | bit40('P') | bit40('Q') | bit40('D') | bit40('W') | bit40('S') | bit40('N') | bit40('X');
     332#define bit3C(x) (1ULL << ((x) - 0x3C))
     333const uint64_t setEscapeCharacters = bit3C('b') | bit3C('p') | bit3C('q') | bit3C('d') | bit3C('w') | bit3C('s') | bit3C('<') | bit3C('>') |
     334                                     bit3C('B') | bit3C('P') | bit3C('Q') | bit3C('D') | bit3C('W') | bit3C('S') | bit3C('N') | bit3C('X');
    335335
    336336inline bool isSetEscapeChar(char c) {
    337     return c >= 0x40 && c <= 0x7F && ((setEscapeCharacters >> (c - 0x40)) & 1) == 1;
     337    return c >= 0x3C && c <= 0x7B && ((setEscapeCharacters >> (c - 0x3C)) & 1) == 1;
    338338}
    339339                                 
     
    446446            assert (re);
    447447            return re;
     448        case '<':
     449            ++mCursor;
     450            return makeWordBegin();
     451        case '>':
     452            ++mCursor;
     453            return makeWordEnd();
    448454        default:
    449455            throw ParseFailure("Internal error");
     
    954960}
    955961
     962RE * RE_Parser::makeWordBegin() {
     963    Name * wordC = makeWordSet();
     964    return makeNegativeLookBehindAssertion(wordC);
     965}
     966
     967RE * RE_Parser::makeWordEnd() {
     968    Name * wordC = makeWordSet();
     969    return makeNegativeLookAheadAssertion(wordC);
     970}
     971
    956972inline Name * RE_Parser::makeDigitSet() {
    957973    return mMemoizer.memoize(createName("nd"));
Note: See TracChangeset for help on using the changeset viewer.