// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

const EXPRESSION = 0;
const SPREAD = EXPRESSION + 1;
const YIELD = SPREAD + 1;

// Note that some primary expressions (in the parser) must be emitted with lower
// precedence, because it's not normally legal for them to be followed by
// other postfix expressions, like ACCESS and CALL. For example:
// `function foo(){}` needs parens to call or access properties or
// compare with equality. Same thing with `class Foo {}` and `(x) => x`.
// However, prefix unary expressions will work in these cases. Unfortunately our
// current precedence tracking doesn't capture this distinction.
const PRIMARY_LOW_PRECEDENCE = ASSIGNMENT;

const ASSIGNMENT = YIELD + 1;
const LOGICAL_OR = ASSIGNMENT + 1;
const LOGICAL_AND = LOGICAL_OR + 1;
const BIT_OR = LOGICAL_AND + 1;
const BIT_XOR = BIT_OR + 1;
const BIT_AND = BIT_XOR + 1;
const EQUALITY = BIT_AND + 1;
const RELATIONAL = EQUALITY + 1;
const SHIFT = RELATIONAL + 1;
const ADDITIVE = SHIFT + 1;
const MULTIPLICATIVE = ADDITIVE + 1;
const UNARY = MULTIPLICATIVE + 1;
const LEFT_HAND_SIDE = UNARY + 1;
const CALL = LEFT_HAND_SIDE;
// We always emit `new` with parenthesis, so it uses ACCESS as its precedence.
const ACCESS = CALL + 1;
const PRIMARY = ACCESS + 1;
