Now things work nicely:
Code:
 COMPILER Calculator
 
 uses codegen;   
 
 var 
     gen: TCodeGenerator;
 
  CHARACTERS
    digit      = "0123456789" .
    hexdigit   = digit + "ABCDEF" .
  IGNORE CHR(1) .. CHR(31)
  TOKENS
    decNumber  = digit { digit } .
    hexNumber  = "$" hexdigit { hexdigit } .
  PRODUCTIONS
    Calculator = { Expression "=" }                  (. gen.Emit(oWRITE);  .)
                                                     (. gen.Emit(oRET); .)
    .
    Expression = Term { "+" Term                     (. gen.Emit(oAdd);  .) 
    |   "-" Term                                      (. gen.Emit(oSub);  .)
    }                                                 (.  .)
    .
    Term       = Factor { "*" Factor                  (. gen.Emit(oMul); .)
    |  "/" Factor                                     (. gen.Emit(oDiv); .)
    }                                                 (. .)
    .
    Factor     = decNumber                 (. gen.Emit(oCONST, StrToInt(LexString()) ); .) 
                 | hexNumber               (. gen.Emit(oCONST, StrToInt(LexString()) ); .)
                  | '(' Expression Factor ')'
                  .
  END Calculator.
I now also can do (10 + 10) / 4 =

But i also get an error:
Code:
│    1  (10 + 10) /4 =
│*****          ^ invalid Factor
│
│    1 error
It is complaining about the ) as it seems.

Though the end result seem to be right:
CONST 10
CONST 10
ADD
CONST 4
DIV
WRITE
RET