# SPO Lecture 4 Exercises
## Exercise 2

### Original
$Assign \rightarrow Id = Expr$
$Id \rightarrow A | B | C$
$Expr \rightarrow Expr + Term | Term$
$Term \rightarrow Term * Factor | Factor$
$Factor \rightarrow ( Expr ) | Id$
Tree:
$Factor \rightarrow $
### Right associativity
$Assign \rightarrow Id = Expr$
$Id \rightarrow A | B | C$
$Expr \rightarrow Term + Expr | Term$
$Term \rightarrow Term * Factor | Factor$
$Factor \rightarrow ( Expr ) | Id$
### + precedence
$Assign \rightarrow Id = Term$
$Id \rightarrow A | B | C$
$Expr \rightarrow Expr + Factor | Term$
$Term \rightarrow Term * Expr | Factor$
$Factor \rightarrow ( Expr ) | Id$
## Exercise 3

$A = A * (B + (C * A))$
$Assign$
$Id = Expr$
$Id = Id * Expr$
$Id = Id * ( Expr )$
$Id = Id * ( Id + Expr )$
$Id = Id * ( Id + ( Expr ) )$
$Id = Id * ( Id + ( Id * Expr ) )$
$Id = Id * ( Id + ( Id * Id ) )$
## Exercise 4

OBS: There are no parenthesis in the language. They are instead used to denote how operations are grouped
$a + b + c$
$S$
$A$
$A + A$
$(A + A) + A \text{ or } A + (A + A)$
$(Id + Id) + Id \text{ or } Id + (Id + Id)$
Because the addition operation is associative in math, nothing seems to happen, however working with programming, this property might not hold.
## Exercise 5
No support
There were probably some problems with the language definition
## Exercise 6
There were more browsers, so they needed to make sure that everything worked the same on every browser.