* number := integer | double * integer := decimal integer * decimal integer := 0 | [ 1-9 ][ 0-9 ]* * double := decimal integer . [0-9]* | decimal integer [eE] decimal integer? * factor := term + term | term / term | numer | ( term ) * term := factor + factor | factor - factor | factor * expression := term