bitwise operations
This commit is contained in:
@@ -7,10 +7,12 @@ const PREC = {
|
||||
OR: 3,
|
||||
AND: 4,
|
||||
COMPARE: 5,
|
||||
SUM: 6,
|
||||
PRODUCT: 7,
|
||||
PREFIX: 8,
|
||||
POSTFIX: 9,
|
||||
BITWISE: 6,
|
||||
SHIFT: 7,
|
||||
SUM: 8,
|
||||
PRODUCT: 9,
|
||||
PREFIX: 10,
|
||||
POSTFIX: 11,
|
||||
};
|
||||
|
||||
module.exports = grammar({
|
||||
@@ -33,6 +35,9 @@ module.exports = grammar({
|
||||
[$.block, $.tuple_literal],
|
||||
[$.field_initializer, $.expression],
|
||||
[$.tuple_literal],
|
||||
[$.capture_list, $.expression],
|
||||
[$.for_statement, $.expression],
|
||||
[$.match_capture, $.expression],
|
||||
],
|
||||
|
||||
rules: {
|
||||
@@ -278,7 +283,7 @@ module.exports = grammar({
|
||||
|
||||
assignment_statement: $ => seq(
|
||||
field('left', $.expression),
|
||||
field('operator', choice('=', '+=', '-=', '*=', '/=')),
|
||||
field('operator', choice('=', '+=', '-=', '*=', '/=', '&=', '|=', 'xor=', '<<=', '>>=', '<<|=')),
|
||||
repeat($._newline),
|
||||
field('right', $._value),
|
||||
),
|
||||
@@ -454,6 +459,8 @@ module.exports = grammar({
|
||||
prec.left(PREC.OR, seq(field('left', $.expression), 'or', repeat($._newline), field('right', $.expression))),
|
||||
prec.left(PREC.AND, seq(field('left', $.expression), 'and', repeat($._newline), field('right', $.expression))),
|
||||
prec.left(PREC.COMPARE, seq(field('left', $.expression), field('operator', choice('==', '!=', '<', '<=', '>', '>=')), repeat($._newline), field('right', $.expression))),
|
||||
prec.left(PREC.BITWISE, seq(field('left', $.expression), field('operator', choice('&', 'xor', '|')), repeat($._newline), field('right', $.expression))),
|
||||
prec.left(PREC.SHIFT, seq(field('left', $.expression), field('operator', choice('<<', '>>', '<<|')), repeat($._newline), field('right', $.expression))),
|
||||
prec.left(PREC.SUM, seq(field('left', $.expression), field('operator', choice('+', '-')), repeat($._newline), field('right', $.expression))),
|
||||
prec.left(PREC.PRODUCT, seq(field('left', $.expression), field('operator', choice('*', '/')), repeat($._newline), field('right', $.expression))),
|
||||
),
|
||||
@@ -469,7 +476,7 @@ module.exports = grammar({
|
||||
)),
|
||||
|
||||
unary_expression: $ => prec(PREC.PREFIX, seq(
|
||||
field('operator', choice('-', '&', '!', '$', 'try')),
|
||||
field('operator', choice('-', '&', '!', '~', '$', 'try')),
|
||||
repeat($._newline),
|
||||
field('operand', $.expression),
|
||||
)),
|
||||
|
||||
Reference in New Issue
Block a user