# Course Code: Course Name

## Descriptions

- Programming Languages: java and c
- Difficulty: 🌟🌟🌟
- Class Hour: 150h

The excellent Crafting Interpreters is writed by Bob Nystrom, available for free online. It's well organized, highly entertaining, and well suited to those whose primary goal is simply to better understand their languages and language tools.

The whole book is actually divided into two parts:  
  (1) Syntax tree: From the lexicon of Scanning to the recursive descent analysis of expressions to the syntax analysis of statements, and finally Resolving and Binding (semantic analysis operations that traverse the syntax tree), it will take you to realize the front-end part of the entire compilation theory, that is Get the data structure of the syntax tree and the results of error checking.  
  (2) Virtual machine: The syntax tree can be understood as a top-down analysis of a high-level language. This part is a bottom-up understanding of the compilation theory. The final results generated by compilation can be divided into two types. One is instructions, which directly It runs on the computer and is operated by the decoder, PC, etc. The second is Bytecode (bytecode), such as the compiled result class file of java, which runs in the JVM virtual machine, and the bytes generated by the virtual machine are interpreted and executed. Code, this part uses c to implement a virtual machine, and also includes Garbage Collection and other contents.



## Course Resources

- Course Website: https://craftinginterpreters.com/

