Skip to content

Commit cd31e74

Browse files
authored
Merge pull request #10 from SWAT-engineering/merge-char-ranges
Keep single char-classes single char-classes in regex
2 parents 36975db + cd2997b commit cd31e74

File tree

2 files changed

+24
-25
lines changed

2 files changed

+24
-25
lines changed

rascal-textmate-core/src/main/rascal/lang/oniguruma/Conversion.rsc

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@ RegExp toRegExp(Grammar _, \lit(string))
5656
= regExp("(?:<encode(chars(string), withBounds = /^\w+$/ := string)>)", []);
5757
RegExp toRegExp(Grammar _, \cilit(string))
5858
= regExp("(?i:<encode(chars(string), withBounds = /^\w+$/ := string)>)", []);
59-
RegExp toRegExp(Grammar g, \char-class(ranges))
60-
= infix("|", toRegExps(g, ranges));
6159
6260
// `ParseTree`: Regular expressions
6361
RegExp toRegExp(Grammar _, \empty())
@@ -158,10 +156,11 @@ default RegExp toRegExp(Grammar _, Condition c) {
158156
Converts a character range to a regular expression.
159157
}
160158
161-
RegExp toRegExp(Grammar _, range(char, char))
162-
= regExp("<encode(char)>", []);
163-
default RegExp toRegExp(Grammar _, range(begin, end))
164-
= regExp("[<encode(begin)>-<encode(end)>]", []);
159+
160+
RegExp toRegExp(Grammar _, \char-class([range(int char, char)])) = regExp(encode(char), []);
161+
RegExp toRegExp(Grammar _, \char-class(ranges))
162+
= regExp("[<("" | it + ((begin == end) ? encode(begin) : "<encode(begin)>-<encode(end)>") | range(int begin, int end) <- ranges)>]", [])
163+
;
165164
166165
@synopsis{
167166
Encodes a (list of) char(s) to a (list of) code unit(s).

0 commit comments

Comments
 (0)