tangled
alpha
login
or
join now
kitten.sh
/
reghex
0
fork
atom
Mirror: The magical sticky regex-based parser generator 🧙
0
fork
atom
overview
issues
pulls
pipelines
Add function call inlining optimisation to JIT runtime
kitten.sh
5 years ago
fa46d01a
2d73f610
+7
-3
1 changed file
expand all
collapse all
unified
split
src
core.js
+7
-3
src/core.js
···
15
15
let match;
16
16
17
17
if (typeof pattern === 'function') {
18
18
-
while (typeof pattern === 'function') pattern = pattern(state);
19
19
-
return pattern;
18
18
+
if (!pattern.length) pattern = pattern();
19
19
+
return pattern(state);
20
20
} else if (isStickySupported) {
21
21
pattern.lastIndex = state.index;
22
22
if (pattern.test(state.input)) {
···
43
43
export const match = (name, transform) => (quasis, ...expressions) => {
44
44
const ast = parseDSL(
45
45
quasis,
46
46
-
expressions.map((expression, i) => `_e(state, _${i})`)
46
46
+
expressions.map((expression, i) =>
47
47
+
typeof expression === 'function' && expression.length
48
48
+
? `_${i}(state)`
49
49
+
: `_e(state, _${i})`
50
50
+
)
47
51
);
48
52
49
53
const makeMatcher = new Function(