Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CounterPart of C

Build AST

cd buildSrc
python GenerateAST.py

Compile

mkdir cmake-build-debug
cd cmake-build-debug
cmake ../
make

Usage

cpc input.c
    [-Ocf]
    [-Ouc]
    [-ast ast_path.html] 
    [-ir ir_path.txt]
    [-o out.asm]

TODO

Parser

  • Lexical analysis
  • Syntax analysis

Semantic analysis

  • Algebraic operation: &, |, +, -, *, /, %, <<, >>, <, >, <=, >=, ==, !=, &&, ||, ^
  • Selection statement: if, if-else, switch
  • Iteration statement: while, do-while, for
  • Jump statement: goto
  • Function call & function definition
  • Variable initialization & definition
  • Conditional expression: ? :
  • Array initialization & operation
  • Enum
  • String literal
  • Struct
  • Type cast: (int) a
  • Pointer
  • Type quailifier: const volatile
  • sizeof(exp)

Code generation

  • IR
  • Code optimization
    • const expression in if statement
    • remove unused variables
    • temp variable in pointer assignment
    • ...
  • Target code

Others

  • AST visualization
  • Command line argument

About

A compiler of CounterPart of C language

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages