Skip to content

Commit 64df966

Browse files
committed
Updates.
1 parent 51407f2 commit 64df966

File tree

2 files changed

+28
-7
lines changed

2 files changed

+28
-7
lines changed

src/parse/rapc.mini

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export: fun any(Chars) do
2-
let M := map(swap(Chars))
2+
let M := set(Chars)
33
fun(S, I) do
44
let C := S[I]
55
M[C] and (I + 1, C, 0)
@@ -11,7 +11,7 @@ export: fun many(Chars, Min, Max) do
1111
end
1212

1313
export: fun none(Chars) do
14-
let M := map(swap(Chars))
14+
let M := set(Chars)
1515
fun(S, I) do
1616
let C := S[I]
1717
(not M[C]) and (I + 1, C, 0)
@@ -23,10 +23,21 @@ export: fun skip(Chars, Min, Max) do
2323
end
2424

2525
export: fun match(Pattern) do
26-
let L := Pattern:length
27-
fun(S, I) do
28-
let J := I + L
29-
S[I, J] = Pattern and (J, Pattern, 0)
26+
switch Pattern: type
27+
case string do
28+
let L := Pattern:length
29+
fun(S, I) do
30+
let J := I + L
31+
S[I, J] = Pattern and (J, Pattern, 0)
32+
end
33+
case regex do
34+
fun(S, I) do
35+
if let (Index, Match) := S:find2(Pattern, I) then
36+
if Index = 1 then
37+
ret (I + Match:length, Match, 0)
38+
end
39+
end
40+
end
3041
end
3142
end
3243

@@ -89,7 +100,7 @@ export: fun alt([Ps]) do
89100
ret resume(1, nil, _, _)
90101
end
91102

92-
export: fun seq([Ps]) do
103+
export: fun seqn([Ps]) do
93104
fun(S, var I) do
94105
let Results := []
95106

src/util/bitset.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,16 @@ ML_METHOD("unset", MLBitsetT, MLIntegerRangeT) {
5353
return (ml_value_t *)Bitset;
5454
}
5555

56+
ML_METHOD("count", MLBitsetT) {
57+
ml_bitset_t *Bitset = (ml_bitset_t *)Args[0];
58+
return ml_integer(roaring_bitmap_get_cardinality(Bitset->Value));
59+
}
60+
61+
ML_METHOD("size", MLBitsetT) {
62+
ml_bitset_t *Bitset = (ml_bitset_t *)Args[0];
63+
return ml_integer(roaring_bitmap_get_cardinality(Bitset->Value));
64+
}
65+
5666
ML_METHOD("append", MLStringBufferT, MLBitsetT) {
5767
ml_stringbuffer_t *Buffer = (ml_stringbuffer_t *)Args[0];
5868
ml_bitset_t *Bitset = (ml_bitset_t *)Args[1];

0 commit comments

Comments
 (0)