An interpreter reads one statement of source code, checks it, and carries it out straight away. It then moves to the next statement. No object code file is produced, so the interpreter and the source code are needed every time the program runs.
A compiler translates the whole program in stages: lexical analysis, syntax analysis, code generation and optimisation. The result is object code that runs on its own.
The grammar of a language is written down with syntax diagrams or with Backus-Naur Form (BNF). Compilers often change expressions into Reverse Polish Notation (RPN), where the operator comes after its operands, so no brackets are needed and a stack can evaluate it.