Slide is a relatively simple programming language the has the ability to slide in a variety of emitters, allowing it to take advantage of a variety of performance and libraries from other technologies.
Lexer
- Map init
- +=, -=, etc
Parse
- Map init
- +=, -=, etc
Semantic Analysis
- Correct types used in expression
- Correct type returned in function
- Correct type assigned to variable
- Breaks only in loop
- Continue only in loop
- Returns only in functions
- Only dereference pointers
- Only index array
- Can't compare arraylists
- Check array index is int
- Check argument types match
- Check for out-of-bound on array
- Type inference
- Only nils for pointers
- Exhaustive switches
- Switches on same time
- No Illegals
Tests
- Create proper tests
- Map of structs
- Array of structs
- Struct with array, arraylist, map, and pointer properties
- Map init
- Complete compiler test
Emitter
- Golang emitter
Working Outputs
- Compiler
- array
- bubblesort
- control
- enum
- func
- map
- primes
- simple
- stack
- structs
- switch
- typedef