This document describes the design of a compiler for a simple C-like language. It outlines the main phases of the compiler including lexical analysis, syntax analysis, code generation, and optional semantic analysis. It provides details on token specification, grammar rules, and the management of registers and memory during code generation. The lexical analyzer breaks source code into tokens which are stored in tables. The syntax analyzer checks grammar rules and detects errors. Code generation transforms the parsed code into SAYEH assembly code. Register and memory addresses are tracked in tables to efficiently allocate resources during code generation.