Module: Chelsy::Operator

Defined in:
lib/chelsy/ast.rb,
lib/chelsy/ast.rb

Defined Under Namespace

Classes: Access, Add, Address, And, Assign, AssignAdd, AssignBitwiseAnd, AssignBitwiseLeftRight, AssignBitwiseLeftShift, AssignBitwiseOr, AssignBitwiseXor, AssignDiv, AssignMul, AssignRem, AssignSub, Base, Binary, BitwiseAnd, BitwiseLeftShift, BitwiseNot, BitwiseOr, BitwiseRightShift, BitwiseXor, Call, Cast, Comma, Conditional, Defined, Dereference, Div, Equal, GreaterThan, GreaterThanOrEqual, IndirectAccess, LessThan, LessThanOrEqual, Minus, Mul, Not, NotEqual, Or, Plus, Postfix, PostfixDecrement, PostfixIncrement, Prefix, PrefixDecrement, PrefixIncrement, Rem, SizeOf, Sub, Subscription, Unary

Constant Summary collapse

PRECEDENCE_TABLE =

--- Operator precedence The following table lists the precedence of operators. Operators are listed top to bottom, in descending precedence.

[
  # -- highest
  [
    PostfixIncrement, PostfixDecrement,
    Call,
    Subscription,
    Access,
    # Compound Literal
  ],
  [
    PrefixIncrement, PrefixDecrement,
    Plus, Minus,
    Not, BitwiseNot,
    Cast,
    Dereference,
    Address,
    SizeOf,
    Defined,
  ],
  [
    Mul, Div, Rem,
  ],
  [
    Add, Sub,
  ],
  [
    BitwiseLeftShift, BitwiseRightShift,
  ],
  [
    LessThan, LessThanOrEqual,
    GreaterThan, GreaterThanOrEqual,
  ],
  [
    Equal, NotEqual,
  ],
  [
    BitwiseAnd,
  ],
  [
    BitwiseXor,
  ],
  [
    BitwiseOr,
  ],
  [
    And,
  ],
  [
    Or,
  ],
  [
    Conditional,
  ],
  [
    Assign,
    AssignAdd, AssignSub,
    AssignMul, AssignDiv, AssignRem,
    AssignBitwiseLeftShift, AssignBitwiseLeftRight,
    AssignBitwiseAnd, AssignBitwiseXor, AssignBitwiseOr,
  ],
  [
    Comma,
  ],
]
OPERATOR_PRECEDENCE =

This hash contains precedence value (Fixnum) by Operator::Base classes. Higher precedence has higher value.

{}.tap do |table|
  PRECEDENCE_TABLE.reverse.each_with_index do |op_classes, precedence|
    op_classes.each do |klass|
      table[klass] = precedence
    end
  end
end