5. Expressions

An expression is composed of integers, identifiers, and operators.

5.1. Operators

Operators are listed in descending precedence order. Operators without a horizontal line dividing them have equal precedence. For example, addition and subtraction have an equal level of precedence.

Class

Operation

Symbol

Usage

Associativity

Arithmetic

multiplication

division

*

/

expr * expr

expr / expr

left

left

addition

subtraction

+

-

expr + expr

expr - expr

left

left

Comparison

less than

greater than

<

>

expr < expr

expr > expr

left

left

is equal

is not equal

==

!=

expr == expr

expr != expr

left

left

Clarification: There is no remainder operator in SCalc. (no-rem)
Clarification: There is no exponentiation operator in SCalc. (no-pow)
Clarification: Division is integer division. (int-div)

5.2. Valid Expressions

Valid formats for expressions are

(<expr>)
<expr> <op> <expr>
<int>
<id>
  • expr is an expression.

  • int is an integer.

  • id is the identifier of a variable.

Assertion: All expressions will result in a value that fits in a 32 bit signed integer. (expression-size)
Assertion: No expression will contain a division by 0. (zero-divide)

Examples of valid expressions are

i * 2 * 10 + 4
2 - 4 * 5

5.3. Precedence

Precedence determines what order operations are evaluated in. Precedence works as defined in the following table:

Precedence

Operations

HIGHER

* /

+ -

< >

LOWER

== !=