Skip to content

Commit 725f60e

Browse files
authored
fix: not operator precedence (#166)
* test: demonstrate incorrect precedence * test: not precedence in other scenarios * fix: match not operator precedence in python
1 parent 78c4e9b commit 725f60e

File tree

5 files changed

+1279
-1258
lines changed

5 files changed

+1279
-1258
lines changed

grammar.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@ const PREC = {
77

88
parenthesized_expression: 1,
99
parenthesized_list_splat: 1,
10-
not: 1,
11-
compare: 2,
12-
or: 10,
13-
and: 11,
14-
bitwise_or: 12,
15-
bitwise_and: 13,
16-
xor: 14,
17-
shift: 15,
18-
plus: 16,
19-
times: 17,
20-
unary: 18,
21-
power: 19,
22-
call: 20,
10+
or: 10,
11+
and: 11,
12+
not: 12,
13+
compare: 13,
14+
bitwise_or: 14,
15+
bitwise_and: 15,
16+
xor: 16,
17+
shift: 17,
18+
plus: 18,
19+
times: 19,
20+
unary: 20,
21+
power: 21,
22+
call: 22,
2323
}
2424

2525
const SEMICOLON = ';'

src/grammar.json

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2633,7 +2633,7 @@
26332633
},
26342634
"not_operator": {
26352635
"type": "PREC",
2636-
"value": 1,
2636+
"value": 12,
26372637
"content": {
26382638
"type": "SEQ",
26392639
"members": [
@@ -2728,7 +2728,7 @@
27282728
"members": [
27292729
{
27302730
"type": "PREC_LEFT",
2731-
"value": 16,
2731+
"value": 18,
27322732
"content": {
27332733
"type": "SEQ",
27342734
"members": [
@@ -2761,7 +2761,7 @@
27612761
},
27622762
{
27632763
"type": "PREC_LEFT",
2764-
"value": 16,
2764+
"value": 18,
27652765
"content": {
27662766
"type": "SEQ",
27672767
"members": [
@@ -2794,7 +2794,7 @@
27942794
},
27952795
{
27962796
"type": "PREC_LEFT",
2797-
"value": 17,
2797+
"value": 19,
27982798
"content": {
27992799
"type": "SEQ",
28002800
"members": [
@@ -2827,7 +2827,7 @@
28272827
},
28282828
{
28292829
"type": "PREC_LEFT",
2830-
"value": 17,
2830+
"value": 19,
28312831
"content": {
28322832
"type": "SEQ",
28332833
"members": [
@@ -2860,7 +2860,7 @@
28602860
},
28612861
{
28622862
"type": "PREC_LEFT",
2863-
"value": 17,
2863+
"value": 19,
28642864
"content": {
28652865
"type": "SEQ",
28662866
"members": [
@@ -2893,7 +2893,7 @@
28932893
},
28942894
{
28952895
"type": "PREC_LEFT",
2896-
"value": 17,
2896+
"value": 19,
28972897
"content": {
28982898
"type": "SEQ",
28992899
"members": [
@@ -2926,7 +2926,7 @@
29262926
},
29272927
{
29282928
"type": "PREC_LEFT",
2929-
"value": 17,
2929+
"value": 19,
29302930
"content": {
29312931
"type": "SEQ",
29322932
"members": [
@@ -2959,7 +2959,7 @@
29592959
},
29602960
{
29612961
"type": "PREC_RIGHT",
2962-
"value": 19,
2962+
"value": 21,
29632963
"content": {
29642964
"type": "SEQ",
29652965
"members": [
@@ -2992,7 +2992,7 @@
29922992
},
29932993
{
29942994
"type": "PREC_LEFT",
2995-
"value": 12,
2995+
"value": 14,
29962996
"content": {
29972997
"type": "SEQ",
29982998
"members": [
@@ -3025,7 +3025,7 @@
30253025
},
30263026
{
30273027
"type": "PREC_LEFT",
3028-
"value": 13,
3028+
"value": 15,
30293029
"content": {
30303030
"type": "SEQ",
30313031
"members": [
@@ -3058,7 +3058,7 @@
30583058
},
30593059
{
30603060
"type": "PREC_LEFT",
3061-
"value": 14,
3061+
"value": 16,
30623062
"content": {
30633063
"type": "SEQ",
30643064
"members": [
@@ -3091,7 +3091,7 @@
30913091
},
30923092
{
30933093
"type": "PREC_LEFT",
3094-
"value": 15,
3094+
"value": 17,
30953095
"content": {
30963096
"type": "SEQ",
30973097
"members": [
@@ -3124,7 +3124,7 @@
31243124
},
31253125
{
31263126
"type": "PREC_LEFT",
3127-
"value": 15,
3127+
"value": 17,
31283128
"content": {
31293129
"type": "SEQ",
31303130
"members": [
@@ -3159,7 +3159,7 @@
31593159
},
31603160
"unary_operator": {
31613161
"type": "PREC",
3162-
"value": 18,
3162+
"value": 20,
31633163
"content": {
31643164
"type": "SEQ",
31653165
"members": [
@@ -3197,7 +3197,7 @@
31973197
},
31983198
"comparison_operator": {
31993199
"type": "PREC_LEFT",
3200-
"value": 2,
3200+
"value": 13,
32013201
"content": {
32023202
"type": "SEQ",
32033203
"members": [
@@ -3666,7 +3666,7 @@
36663666
},
36673667
"attribute": {
36683668
"type": "PREC",
3669-
"value": 20,
3669+
"value": 22,
36703670
"content": {
36713671
"type": "SEQ",
36723672
"members": [
@@ -3695,7 +3695,7 @@
36953695
},
36963696
"subscript": {
36973697
"type": "PREC",
3698-
"value": 20,
3698+
"value": 22,
36993699
"content": {
37003700
"type": "SEQ",
37013701
"members": [
@@ -3849,7 +3849,7 @@
38493849
},
38503850
"call": {
38513851
"type": "PREC",
3852-
"value": 20,
3852+
"value": 22,
38533853
"content": {
38543854
"type": "SEQ",
38553855
"members": [
@@ -5100,7 +5100,7 @@
51005100
},
51015101
"await": {
51025102
"type": "PREC",
5103-
"value": 18,
5103+
"value": 20,
51045104
"content": {
51055105
"type": "SEQ",
51065106
"members": [

0 commit comments

Comments
 (0)