diff options
| Commit | 156d0957c1b36bba2685fef548a8573e9337309a (patch) | |
|---|---|---|
| Author | 2018-11-18 23:01:20 +0200 | |
| Committer | 2018-11-18 23:01:20 +0200 | |
| Files | 3a882d71f65d8b5c129e348985c2c1a4fe70a031 /JSImpl/src/main.cpp | |
| IPL-156d0957c1b36bba2685fef548a8573e9337309a.tar IPL-156d0957c1b36bba2685fef548a8573e9337309a.tar.gz IPL-156d0957c1b36bba2685fef548a8573e9337309a.zip | ||
| Parent | a5ebf986574bdcdad968962751d9ab8dbe90980d (diff) | |
| Parent | 12232668d931b0f3593807d2096a2c2f26844b0b (diff) | |
Merge branch 'master' into json-to-ast
1 files changed, 45 insertions, 3 deletions
| -rw-r--r-- | JSImpl/src/main.cpp | 48 |
diff --git a/JSImpl/src/main.cpp b/JSImpl/src/main.cpp index c15458e..90f6023 100644 --- a/JSImpl/src/main.cpp +++ b/JSImpl/src/main.cpp @@ -6,6 +6,13 @@ #include <iostream> #include <cstring> +#include <sstream> +#include <iterator> + +#if defined(_WIN32) +#include <Windows.h> +#endif + void RunParseCalc() { IPLVector<Token> tokens; @@ -68,8 +75,43 @@ void Generate() IPLVector<Token> tokens; //Tokenize("var a = 0; var b = a + 123;a+b;", tokens); /*Tokenize("var a; if(a < 4) { a = 8; if(a < 7) {var b = 4;}} else { a = 2} ", tokens);*/ - Tokenize("var i = 0; for (var j = 0; j < 10; j = j + 1) { i = i + j; }", tokens); - std::cout << GenerateByteCode(Parse(tokens)); + IPLString source = "var i = 0; \n" + "for (var j = 0; j < 10; j++)\n" + "{\n" + " i = i + j;\n" + "}"; + Tokenize(source.c_str(), tokens); + + auto asmb = GenerateByteCode(Parse(tokens), source, + ByteCodeGeneratorOptions(ByteCodeGeneratorOptions::OptimizationsType::None, true)); + + //sets the color to intense red on blue background +#if defined(_WIN32) + HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); + std::istringstream asmbStream(asmb); + while (asmbStream.good()) + { + IPLString it; + std::getline(asmbStream, it); + if (it[0] == 'D') + { + SetConsoleTextAttribute(hStdout, FOREGROUND_GREEN| BACKGROUND_BLUE | FOREGROUND_INTENSITY); + auto dd = it.find("@@=>"); + std::cout << it.substr(0, dd); + SetConsoleTextAttribute(hStdout, FOREGROUND_RED | BACKGROUND_BLUE | FOREGROUND_INTENSITY); + std::cout << it.substr(dd, 4); + SetConsoleTextAttribute(hStdout, FOREGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_INTENSITY); + std::cout << it.substr(dd + 4, it.size()) << std::endl; + } + else + { + std::cout << it << std::endl; + } + SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); + } +#else + std::cout << asmb; +#endif } int main() @@ -78,7 +120,7 @@ int main() //InteractiveInterpreter(); Generate(); #if defined(_WIN32) - std::system("pause"); + //std::system("pause"); #endif return 0; } |
