2026-02-15 19:47:23 +11:00
|
|
|
# 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
|
2026-02-20 09:35:50 +11:00
|
|
|
- [x] Ignore comments (//, /**/, #)
|
2026-02-20 14:22:26 +11:00
|
|
|
- [x] Lex delimiters
|
2026-02-15 19:47:23 +11:00
|
|
|
- [x] ()
|
|
|
|
|
- [x] {}
|
|
|
|
|
- [x] .
|
|
|
|
|
- [x] :
|
|
|
|
|
- [x] ,
|
2026-02-20 14:22:26 +11:00
|
|
|
- [x] ==, =
|
|
|
|
|
- [x] >, >=
|
|
|
|
|
- [x] <, <=
|
|
|
|
|
- [x] !, !=
|
|
|
|
|
- [x] +, +=, ++
|
|
|
|
|
- [x] -, -=, --
|
|
|
|
|
- [x] *, *=
|
|
|
|
|
- [x] /, /=
|
2026-02-15 19:47:23 +11:00
|
|
|
- [ ] Lex types
|
|
|
|
|
- [x] Basic types (int, double, string, bool, char)
|
|
|
|
|
- [ ] Advanced types (fun(...), template(...), object(...))
|
|
|
|
|
- [x] Lex identifiers
|
2026-02-22 09:21:51 +11:00
|
|
|
|
|
|
|
|
- [ ] Parser
|
|
|
|
|
- [x] Create structure to hold nodes
|
|
|
|
|
- [ ] Start parsing tree
|
2026-02-26 18:28:39 +11:00
|
|
|
- [x] puts
|
|
|
|
|
- [x] Literal values
|
|
|
|
|
- [x] '='
|
|
|
|
|
- [x] Maths
|
|
|
|
|
- [x] Brackets
|
2026-02-28 13:19:41 +11:00
|
|
|
- [x] Comparisons
|
|
|
|
|
- [x] Code blocks (` { } `)
|
|
|
|
|
- [x] If
|
|
|
|
|
- [x] While
|
2026-02-26 18:28:39 +11:00
|
|
|
- [ ] 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)
|
2026-02-28 13:19:41 +11:00
|
|
|
- [x] Comparisons (bool)
|
|
|
|
|
- [x] Code block (none)
|
|
|
|
|
- [x] if, while (none)
|
2026-02-26 18:28:39 +11:00
|
|
|
- [ ] 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
|
2026-02-28 13:19:41 +11:00
|
|
|
- [x] Comparisons
|
|
|
|
|
- [x] Code blocks (` { } `)
|
|
|
|
|
- [x] If
|
|
|
|
|
- [x] While
|
2026-02-26 18:28:39 +11:00
|
|
|
- [ ] Function Definition
|
|
|
|
|
- [ ] Function Calls
|
|
|
|
|
- [ ] Structs
|
|
|
|
|
- [ ] new
|
|
|
|
|
- [ ] use
|
|
|
|
|
|
2026-02-15 19:47:23 +11:00
|
|
|
|