software program translating high level source code into low-level machine code (binary) that computer processor can execute - translator
example
- gcc
- javac
- clang
basic steps
- lexical analysis
- convert code into tokens describing diff parts of code
- similar logic used by syntax highlighting
- component focused, no deeper understanding on how parts fit together
- syntax analysis / parsing
- turn tokens into abstract syntax tree (AST)
- understanding of if smth is a function call, function def, etc.
- similar to DOM
- code generation