Releases: fedejinich/fcc
Releases · fedejinich/fcc
chapter_8
04 Jan 21:56
Compare
Sorry, something went wrong.
No results found
In this chapter:
Added support for loops: while, do-while and for statements, along with break and continue.
Introduced a new semantic pass for loop labeling that tags each loop with a unique identifier to correctly resolve control flow jumps. - Extended variable resolution to support loops and generates the corresponding TACKY code.
chapter_7
04 Jan 21:52
Compare
Sorry, something went wrong.
No results found
In this chapter:
Introduced compound statements (blocks { ... }) to the compiler.
Added Block and Compound to the AST,
Implemented block parsing,
Extended variable resolution to support block scoping,
Converting blocks to TACKY IR.
chapter_6
21 Dec 23:08
Compare
Sorry, something went wrong.
No results found
Now fcc supports if (cond) exp_1 else exp_2 statements and conditional ternary operator cond ? v1 : v2.
if else statement.
if statment (without else clause).
if and else are now a keywords.
Ternary operator cond ? v1 : v2.
chapter_5
24 Sep 03:14
Compare
Sorry, something went wrong.
No results found
Now fcc supports local variables and semnatic checks.
Local variables: declarations with and without initializers.
Variable resolution: unique renaming of identifiers.
Initializers: evaluate and store into the declared variable.
Short-circuit: correct evaluation order for &&/||.
Semantic checks: duplicates, undeclared uses, invalid lvalues.
chapter_4
03 Sep 14:26
Compare
Sorry, something went wrong.
No results found
now fcc supports logical and relational operators (for precedence and associativity)
Relational: <, <=, >, >=, ==, !=
Logical: &&, ||
chapter_3_bitwise
29 Aug 04:08
Compare
Sorry, something went wrong.
No results found
This is an extension of chapter 3 that adds support for bitwise operators ^ & | << >>
chapter_3
27 Aug 04:21
Compare
Sorry, something went wrong.
No results found
fcc now supports Binary Operators (+, -, *, /, %):
Added parsing and code generation for binary operators
Implemented precedence climbing for expression parsing
Extended TACKY generation and assembly output
chapter_2
18 Aug 20:58
Compare
Sorry, something went wrong.
No results found
Second fcc snapshot, supporting unary operators:
Support for - and ~ unary operators
New tacky intermediate representation
Parsing recursive expressions
Replacing pseudoregisters with stack address
Fixing mov insutrctions to support registers on both operands
Emiting assembly
chapter_1
13 Aug 14:17
Compare
Sorry, something went wrong.
No results found
First functional snapshot of the compiler, implementing the four basic passes:
Lexer: Converts the source code into a list of tokens (delimiters, symbols, keywords, identifiers).
Parser: Transforms the token list into an abstract syntax tree (AST) for easier analysis.
Assembly generation: Converts the AST into assembly instructions, stored in an internal data structure.
Code emission: Writes the assembly code to a file for later assembling and linking.
old master
13 Aug 14:08
Compare
Sorry, something went wrong.
No results found
this is an old and archived version of fcc