Add parantheses to override set precedences
This commit is contained in:
parent
170c3be571
commit
3340f6c287
@ -108,6 +108,23 @@ slice = my_collection[1..2];
|
||||
(assignment_item (identifier) (index_expression (identifier) (binary_operation (unary_operation (identifier)) (integer_literal))))
|
||||
(assignment_item (identifier) (index_expression (identifier) (binary_operation (integer_literal) (integer_literal)))))
|
||||
|
||||
===========
|
||||
Precedences
|
||||
===========
|
||||
|
||||
given_precedence = (1 + 1) * 1;
|
||||
mult_first = 1 + 1 * 1;
|
||||
exp_first = 1 * 1 ^ 1;
|
||||
annotation_bind = 1 ^ 1::some_ann;
|
||||
|
||||
---
|
||||
|
||||
(source_file
|
||||
(assignment_item (identifier) (binary_operation (binary_operation (integer_literal) (integer_literal)) (integer_literal)))
|
||||
(assignment_item (identifier) (binary_operation (integer_literal) (binary_operation (integer_literal) (integer_literal))))
|
||||
(assignment_item (identifier) (binary_operation (integer_literal) (binary_operation (integer_literal) (integer_literal))))
|
||||
(assignment_item (identifier) (binary_operation (integer_literal) (binary_operation (integer_literal) (identifier)))))
|
||||
|
||||
==============
|
||||
Unary Operator
|
||||
==============
|
||||
|
@ -49,6 +49,7 @@ module.exports = grammar({
|
||||
$.index_expression,
|
||||
$.unary_operation,
|
||||
// TODO: Other expression types
|
||||
seq('(', $._expression, ')'),
|
||||
),
|
||||
|
||||
binary_operation: $ => {
|
||||
|
17
src/grammar.json
vendored
17
src/grammar.json
vendored
@ -104,6 +104,23 @@
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "unary_operation"
|
||||
},
|
||||
{
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "("
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "_expression"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": ")"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
56
src/node-types.json
vendored
56
src/node-types.json
vendored
@ -67,9 +67,17 @@
|
||||
"named": true,
|
||||
"fields": {
|
||||
"expr": {
|
||||
"multiple": false,
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "(",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": ")",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "absent",
|
||||
"named": true
|
||||
@ -141,9 +149,17 @@
|
||||
"named": true,
|
||||
"fields": {
|
||||
"left": {
|
||||
"multiple": false,
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "(",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": ")",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "absent",
|
||||
"named": true
|
||||
@ -325,9 +341,17 @@
|
||||
]
|
||||
},
|
||||
"right": {
|
||||
"multiple": false,
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "(",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": ")",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "absent",
|
||||
"named": true
|
||||
@ -397,6 +421,14 @@
|
||||
"multiple": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "(",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": ")",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": ",",
|
||||
"named": false
|
||||
@ -535,9 +567,17 @@
|
||||
"named": true,
|
||||
"fields": {
|
||||
"collection": {
|
||||
"multiple": false,
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "(",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": ")",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "absent",
|
||||
"named": true
|
||||
@ -596,6 +636,14 @@
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "(",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": ")",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": ",",
|
||||
"named": false
|
||||
|
5711
src/parser.c
vendored
5711
src/parser.c
vendored
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user