diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 00000000..f3ea8136 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,34 @@ +#include <iostream>
+#include <string>
+#include "parse/lex.hpp"
+#include "parse/parseerror.hpp"
+#include "ast/ast.hpp"
+
+extern AST::Crate Parse_Crate(::std::string mainfile);
+extern void ResolvePaths(AST::Crate& crate);
+extern AST::Flat Convert_Flatten(const AST::Crate& crate);
+
+/// main!
+int main(int argc, char *argv[])
+{
+ try
+ {
+ AST::Crate crate = Parse_Crate("samples/1.rs");
+
+ // Resolve names to be absolute names (include references to the relevant struct/global/function)
+ ResolvePaths(crate);
+
+ // Typecheck / type propagate module (type annotations of all values)
+
+ // Flatten modules into "mangled" set
+ AST::Flat flat_crate = Convert_Flattern(crate);
+
+ // Convert structures to C structures / tagged enums
+ //Convert_Render(flat_crate, stdout);
+ }
+ catch(const ParseError::Base& e)
+ {
+ ::std::cerr << "Parser Error: " << e.what() << ::std::endl;
+ }
+ return 0;
+}
|