# Solstice rewrite in C Not self hosting yet. Maybe once this compiler is done. ## Building bash build.c ## Todo List - [ ] Lexer - [x] Lex values - [x] int - [x] double - [x] string - [x] char - [x] bool - [x] Lex keywords - [x] Ignore comments (//, /**/, #) - [x] Lex delimiters - [x] () - [x] {} - [x] . - [x] : - [x] , - [x] ==, = - [x] >, >= - [x] <, <= - [x] !, != - [x] +, +=, ++ - [x] -, -=, -- - [x] *, *= - [x] /, /= - [ ] Lex types - [x] Basic types (int, double, string, bool, char) - [ ] Advanced types (fun(...), template(...), object(...)) - [x] Lex identifiers - [ ] Parser - [x] Create structure to hold nodes - [ ] Start parsing tree - [x] puts - [x] Literal values - [x] '=' - [x] Maths - [x] Brackets - [ ] Comparisons - [ ] Code blocks (` { } `) - [ ] If - [ ] While - [ ] Function Definition - [ ] Function Calls - [ ] Structs - [ ] new - [ ] use - [ ] Ground compiler - [x] Create structure to descend tree - [ ] Check types - [x] puts (none) - [x] set (typeof children.at[1]) - [x] Identifiers (scope->variables[idName]) - [x] add (string, int, double) - [x] subtract, multiply, divide (int, double) - [ ] Comparisons (bool) - [ ] Code block (none) - [ ] if, while (none) - [ ] Function definition (fun(...)) - [ ] Function call (return type of function) - [ ] Struct (template(...)) - [ ] new (children[0]) - [ ] use (none) - [ ] Generate code - [x] puts - [x] Literal values - [x] '=' - [x] Maths - [x] Brackets - [ ] Comparisons - [ ] Code blocks (` { } `) - [ ] If - [ ] While - [ ] Function Definition - [ ] Function Calls - [ ] Structs - [ ] new - [ ] use