90 lines
2.1 KiB
Markdown
90 lines
2.1 KiB
Markdown
# 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
|
|
- [x] Comparisons
|
|
- [x] Code blocks (` { } `)
|
|
- [x] If
|
|
- [x] 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)
|
|
- [x] Comparisons (bool)
|
|
- [x] Code block (none)
|
|
- [x] 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
|
|
- [x] Comparisons
|
|
- [x] Code blocks (` { } `)
|
|
- [x] If
|
|
- [x] While
|
|
- [ ] Function Definition
|
|
- [ ] Function Calls
|
|
- [ ] Structs
|
|
- [ ] new
|
|
- [ ] use
|
|
|
|
|