59 lines
2.0 KiB
C++
59 lines
2.0 KiB
C++
#include "base.cpp"
|
|
#include "base_unicode.cpp"
|
|
#include "new_lex.cpp"
|
|
#include "new_ast.cpp"
|
|
#include "new_parse.cpp"
|
|
#include "new_resolve.cpp"
|
|
#include "ccodegen.cpp"
|
|
|
|
// 2022.05.28 - On lambda expressions
|
|
// I think it's not wise to add the multiline lambda expressions
|
|
// As is the case with python it would require new alternative syntax.
|
|
// The idea was to imply that the whitespace significant syntax is just
|
|
// inserting '{' '}' ';' automatically and if you decide to write a brace
|
|
// it stops being whitespace significant and you can type everything with semicolons and braces
|
|
// Problem is first of all it's kind of weird to have a completly different syntax
|
|
// in a language to solve something that is a minor inconvenience,
|
|
// second of all it turned out to be kind of bad, maybe if it would be more
|
|
// complicated then it would be ok but it implies that you have to semicolon end
|
|
// a lot of thing unintuitively.
|
|
//
|
|
// Probably single line lambdas should be ok. Currently braces turn off indentation
|
|
// awareness. There might be something you can do by trying to turn that on
|
|
// problem is that complicates parsing a lot cause you have to account for multiple
|
|
// indent styles, which means error messages become bad.
|
|
|
|
|
|
/// @todo
|
|
/// [x] - Typespecs should probably be expressions so stuff like would be possible :: *[32]int
|
|
/// [ ] - Lexer: Need to insert scope endings when hitting End of file
|
|
/// [ ] - Add single line lambda expressions/
|
|
/// [ ] - Think about compound expressions, unify with calls - maybe Thing(a=1) instead of Thing{a=1}
|
|
/// [ ] - Structs
|
|
/// [ ] - Enums
|
|
/// [ ] - For loop
|
|
/// [ ] - Switch
|
|
|
|
|
|
int main(){
|
|
test_os_memory();
|
|
thread_ctx_init();
|
|
test_unicode();
|
|
test_types();
|
|
|
|
map_test();
|
|
test_array();
|
|
test_string_builder();
|
|
test_intern_table();
|
|
lex_test();
|
|
|
|
String result = compile_file("globals.kl"_s);
|
|
// String result = compile_file("structs.kl"_s);
|
|
// String result = compile_file("order_independent_globals.kl"_s);
|
|
printf("%s", result.str);
|
|
|
|
// compile_file("lambdas.kl"_s);
|
|
// compile_file("globals.kl"_s);
|
|
__debugbreak();
|
|
}
|