Skip to content
This repository was archived by the owner on Jun 1, 2022. It is now read-only.

Commit 8873140

Browse files
authored
[#62] Change precedence of % operator (#63)
1 parent fe565a3 commit 8873140

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

grammar.js

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,17 @@ const PREC = Object.freeze({
88
AND: 6,
99
EQUALITY: 7,
1010
ORDER: 8,
11-
SUM: 9,
12-
PRODUCT: 10,
13-
EXPONENTIATION: 11,
14-
NOT: 12,
15-
PREFIX: 13,
16-
EXPRESSION: 14,
17-
PATTERN: 14,
18-
APPLICATION: 15,
19-
PIPELINE: 16,
20-
ACCESS: 17
11+
MOD: 9,
12+
SUM: 10,
13+
PRODUCT: 11,
14+
EXPONENTIATION: 12,
15+
NOT: 13,
16+
PREFIX: 14,
17+
EXPRESSION: 15,
18+
PATTERN: 15,
19+
APPLICATION: 16,
20+
PIPELINE: 17,
21+
ACCESS: 18
2122
});
2223

2324
module.exports = grammar({
@@ -233,9 +234,9 @@ module.exports = grammar({
233234
prec.left(PREC.EXPONENTIATION, seq(field('left', $._simple_expression), field('abstraction', alias('^', $.infix_application_operator)), field('right', $._simple_expression))),
234235
prec.left(PREC.PRODUCT, seq(field('left', $._simple_expression), field('abstraction', alias('*', $.infix_application_operator)), field('right', $._simple_expression))),
235236
prec.left(PREC.PRODUCT, seq(field('left', $._simple_expression), field('abstraction', alias('/', $.infix_application_operator)), field('right', $._simple_expression))),
236-
prec.left(PREC.PRODUCT, seq(field('left', $._simple_expression), field('abstraction', alias('%', $.infix_application_operator)), field('right', $._simple_expression))),
237237
prec.left(PREC.SUM, seq(field('left', $._simple_expression), field('abstraction', alias('+', $.infix_application_operator)), field('right', $._simple_expression))),
238238
prec.left(PREC.SUM, seq(field('left', $._simple_expression), field('abstraction', alias('-', $.infix_application_operator)), field('right', $._simple_expression))),
239+
prec.left(PREC.MOD, seq(field('left', $._simple_expression), field('abstraction', alias('%', $.infix_application_operator)), field('right', $._simple_expression))),
239240
prec.left(PREC.ORDER, seq(field('left', $._simple_expression), field('abstraction', alias('<', $.infix_application_operator)), field('right', $._simple_expression))),
240241
prec.left(PREC.ORDER, seq(field('left', $._simple_expression), field('abstraction', alias('<=', $.infix_application_operator)), field('right', $._simple_expression))),
241242
prec.left(PREC.ORDER, seq(field('left', $._simple_expression), field('abstraction', alias('>', $.infix_application_operator)), field('right', $._simple_expression))),

test/corpus/expressions.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ false || false
200200
false ==> true <=> true
201201
false && false || false
202202
false || false && false
203+
1 + 1 % 1
203204
1 - 1 + 1
204205
1 - -1
205206
1 * 1 / 1 - 1
@@ -309,6 +310,13 @@ false || !false
309310
right: (number))
310311
abstraction: (infix_application_operator)
311312
right: (number))
313+
(infix_application
314+
left: (infix_application
315+
left: (number)
316+
abstraction: (infix_application_operator)
317+
right: (number))
318+
abstraction: (infix_application_operator)
319+
right: (number))
312320
(infix_application
313321
left: (number)
314322
abstraction: (infix_application_operator)

0 commit comments

Comments
 (0)