summaryrefslogtreecommitdiff
path: root/src/piraha/Boundary.cc
blob: 8a25524d9a310a9227f680797dad13b255c4bb01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "Piraha.hpp"

using namespace cctki_piraha;

bool is_c_ident(char c) {
    return ('a' <= c && c <= 'z')
        || ('A' <= c && c <= 'Z')
        || ('0' <= c && c <= '9')
        || c == '_';
}

bool Boundary::match(Matcher *m) {
    if(m->pos == 0 || m->pos == (int)m->input_size)
        return true;
    char c2 =  m->input[m->pos];
    char c1 =  m->input[m->pos-1];
    bool b1 = is_c_ident(c1);
    bool b2 = is_c_ident(c2);
    return !b1 || !b2;
}