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 (unary_operation (identifier)) (integer_literal))))
|
||||||
(assignment_item (identifier) (index_expression (identifier) (binary_operation (integer_literal) (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
|
Unary Operator
|
||||||
==============
|
==============
|
||||||
|
@ -49,6 +49,7 @@ module.exports = grammar({
|
|||||||
$.index_expression,
|
$.index_expression,
|
||||||
$.unary_operation,
|
$.unary_operation,
|
||||||
// TODO: Other expression types
|
// TODO: Other expression types
|
||||||
|
seq('(', $._expression, ')'),
|
||||||
),
|
),
|
||||||
|
|
||||||
binary_operation: $ => {
|
binary_operation: $ => {
|
||||||
|
17
src/grammar.json
vendored
17
src/grammar.json
vendored
@ -104,6 +104,23 @@
|
|||||||
{
|
{
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "unary_operation"
|
"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,
|
"named": true,
|
||||||
"fields": {
|
"fields": {
|
||||||
"expr": {
|
"expr": {
|
||||||
"multiple": false,
|
"multiple": true,
|
||||||
"required": true,
|
"required": true,
|
||||||
"types": [
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "(",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": ")",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "absent",
|
"type": "absent",
|
||||||
"named": true
|
"named": true
|
||||||
@ -141,9 +149,17 @@
|
|||||||
"named": true,
|
"named": true,
|
||||||
"fields": {
|
"fields": {
|
||||||
"left": {
|
"left": {
|
||||||
"multiple": false,
|
"multiple": true,
|
||||||
"required": true,
|
"required": true,
|
||||||
"types": [
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "(",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": ")",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "absent",
|
"type": "absent",
|
||||||
"named": true
|
"named": true
|
||||||
@ -325,9 +341,17 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"right": {
|
"right": {
|
||||||
"multiple": false,
|
"multiple": true,
|
||||||
"required": true,
|
"required": true,
|
||||||
"types": [
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "(",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": ")",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "absent",
|
"type": "absent",
|
||||||
"named": true
|
"named": true
|
||||||
@ -397,6 +421,14 @@
|
|||||||
"multiple": true,
|
"multiple": true,
|
||||||
"required": false,
|
"required": false,
|
||||||
"types": [
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "(",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": ")",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": ",",
|
"type": ",",
|
||||||
"named": false
|
"named": false
|
||||||
@ -535,9 +567,17 @@
|
|||||||
"named": true,
|
"named": true,
|
||||||
"fields": {
|
"fields": {
|
||||||
"collection": {
|
"collection": {
|
||||||
"multiple": false,
|
"multiple": true,
|
||||||
"required": true,
|
"required": true,
|
||||||
"types": [
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "(",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": ")",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "absent",
|
"type": "absent",
|
||||||
"named": true
|
"named": true
|
||||||
@ -596,6 +636,14 @@
|
|||||||
"multiple": true,
|
"multiple": true,
|
||||||
"required": true,
|
"required": true,
|
||||||
"types": [
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "(",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": ")",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": ",",
|
"type": ",",
|
||||||
"named": false
|
"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