blob: 598a4e24609672dfcff8dcee919b1713462d3c57 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
include defs
# omatch --- try to match a single pattern at pat (j)
integer function omatch (lin, i, pat, j)
character lin (MAXLINE), pat (MAXPAT)
integer i, j
integer bump
integer locate
omatch = NO
if (lin (i) == EOS)
return
bump = -1
if (pat (j) == CHAR) {
if (lin (i) == pat (j + 1))
bump = 1
}
else if (pat (j) == BOL) {
if (i == 1)
bump = 0
}
else if (pat (j) == ANY) {
if (lin (i) != NEWLINE)
bump = 1
}
else if (pat (j) == EOL) {
if (lin (i) == NEWLINE)
bump = 0
}
else if (pat (j) == CCL) {
if (locate (lin (i), pat, j + 1) == YES)
bump = 1
}
else if (pat (j) == NCCL) {
if (lin (i) != NEWLINE & locate (lin (i), pat, j + 1) == NO)
bump = 1
}
else
call error ("in omatch: can't happen.")
if (bump >= 0) {
i = i + bump
omatch = YES
}
return
end
|