From 0095bd9eccbebfb6d9ae651d8851619a8403a76b Mon Sep 17 00:00:00 2001 From: Ryan Ward Date: Sun, 9 May 2021 23:08:09 -0400 Subject: [PATCH] Working on the library side of things --- DMS.sln | 13 + DMS/DMS.cpp | 39 +- DMS/DMS.vcxproj | 2 - DMS/DMS.vcxproj.filters | 95 +- DMS/LineParser.h | 2 + DMS/LineParserMatchProcess.cpp | 91 + DMS/LineParserParse.cpp | 79 +- DMS/core.cpp | 1 + DMS/dms_state.h | 14 + DMS/dump.bin | Bin 2711 -> 1383 bytes DMS/dump.txt | 3263 ++++++++++++++++++++++++++++--- DMS/enviroment.h | 6 - DMS/sound.cpp | 11 +- DMS/test.dms | 67 +- DMS_DLL/DMS_DLL.vcxproj | 178 ++ DMS_DLL/DMS_DLL.vcxproj.filters | 39 + DMS_DLL/dllmain.cpp | 19 + DMS_DLL/dmsFunctions.cpp | 2 + DMS_DLL/dmsFunctions.h | 165 ++ DMS_DLL/framework.h | 5 + DMS_DLL/pch.cpp | 5 + DMS_DLL/pch.h | 13 + 22 files changed, 3599 insertions(+), 510 deletions(-) create mode 100644 DMS_DLL/DMS_DLL.vcxproj create mode 100644 DMS_DLL/DMS_DLL.vcxproj.filters create mode 100644 DMS_DLL/dllmain.cpp create mode 100644 DMS_DLL/dmsFunctions.cpp create mode 100644 DMS_DLL/dmsFunctions.h create mode 100644 DMS_DLL/framework.h create mode 100644 DMS_DLL/pch.cpp create mode 100644 DMS_DLL/pch.h diff --git a/DMS.sln b/DMS.sln index 4ef5ec0..bfbbcad 100644 --- a/DMS.sln +++ b/DMS.sln @@ -5,6 +5,11 @@ VisualStudioVersion = 16.0.30320.27 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DMS", "DMS\DMS.vcxproj", "{0ECF46C1-EB08-4F8E-8ACB-002E38BFC1FA}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DMS_DLL", "DMS_DLL\DMS_DLL.vcxproj", "{B9978D79-836D-4A4D-9BFE-4EDE7B1BAF9F}" + ProjectSection(ProjectDependencies) = postProject + {0ECF46C1-EB08-4F8E-8ACB-002E38BFC1FA} = {0ECF46C1-EB08-4F8E-8ACB-002E38BFC1FA} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -21,6 +26,14 @@ Global {0ECF46C1-EB08-4F8E-8ACB-002E38BFC1FA}.Release|x64.Build.0 = Release|x64 {0ECF46C1-EB08-4F8E-8ACB-002E38BFC1FA}.Release|x86.ActiveCfg = Release|Win32 {0ECF46C1-EB08-4F8E-8ACB-002E38BFC1FA}.Release|x86.Build.0 = Release|Win32 + {B9978D79-836D-4A4D-9BFE-4EDE7B1BAF9F}.Debug|x64.ActiveCfg = Debug|x64 + {B9978D79-836D-4A4D-9BFE-4EDE7B1BAF9F}.Debug|x64.Build.0 = Debug|x64 + {B9978D79-836D-4A4D-9BFE-4EDE7B1BAF9F}.Debug|x86.ActiveCfg = Debug|Win32 + {B9978D79-836D-4A4D-9BFE-4EDE7B1BAF9F}.Debug|x86.Build.0 = Debug|Win32 + {B9978D79-836D-4A4D-9BFE-4EDE7B1BAF9F}.Release|x64.ActiveCfg = Release|x64 + {B9978D79-836D-4A4D-9BFE-4EDE7B1BAF9F}.Release|x64.Build.0 = Release|x64 + {B9978D79-836D-4A4D-9BFE-4EDE7B1BAF9F}.Release|x86.ActiveCfg = Release|Win32 + {B9978D79-836D-4A4D-9BFE-4EDE7B1BAF9F}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/DMS/DMS.cpp b/DMS/DMS.cpp index 8ae13e8..f873995 100644 --- a/DMS/DMS.cpp +++ b/DMS/DMS.cpp @@ -4,19 +4,46 @@ #include "pch.h" #include "dms.h" #include "actors.h" +#include +typedef int(__cdecl* MYPROC)(int); using namespace dms; int main() { + //HINSTANCE hinstLib; + //MYPROC ProcAdd; + //BOOL fFreeResult, fRunTimeLinkSuccess = FALSE; + //hinstLib = LoadLibrary(TEXT("Test.dll")); + + //if (hinstLib != NULL) { + // ProcAdd = (MYPROC)GetProcAddress(hinstLib, "Init"); + + // // If the function address is valid, call the function. + + // if (NULL != ProcAdd) + // { + // fRunTimeLinkSuccess = TRUE; + // (ProcAdd)(100); + // } + // // Free the DLL module. + + // fFreeResult = FreeLibrary(hinstLib); + //} + //exit(0); // TODO fix disp cmd to handle the standard multi::runner run; - - LineParser parser = LineParser("test.dms"); - dms_state* state = parser.Parse(); + dms_state* state = new dms_state(); + state->OnCustomBlock += [](customBlock* cb) { + std::cout << "Block Type: " << cb->type << std::endl; + std::cout << "Stringed Block: " << cb->toks->toString() << std::endl; + }; + LineParser parser; + state = parser.Parse(state,"test.dms"); // Load audio stuff dms::audio::init(state); state->dump(); + memory* mem = state->getMem(); sf::RenderWindow window(sf::VideoMode(1024, 768, 32), "Background Test"); @@ -53,10 +80,12 @@ int main() ////std::cout << test << std::endl; state->OnText += [&](dms::message msg) { - text.setString(dms::utils::concat(msg.chara->getName(),": ",msg.text)); + std::cout << dms::utils::concat(msg.chara->getName(), ": ", msg.text) << std::endl; + //text.setString(dms::utils::concat(msg.chara->getName(),": ",msg.text)); }; state->OnAppendText += [&](dms::message msg) { - text.setString(dms::utils::concat(text.getString().toAnsiString(), msg.text)); + std::cout << dms::utils::concat(text.getString().toAnsiString(), msg.text) << std::endl; + //text.setString(dms::utils::concat(text.getString().toAnsiString(), msg.text)); }; sf::RectangleShape rectangle; diff --git a/DMS/DMS.vcxproj b/DMS/DMS.vcxproj index 69958dd..89f1011 100644 --- a/DMS/DMS.vcxproj +++ b/DMS/DMS.vcxproj @@ -216,11 +216,9 @@ - - diff --git a/DMS/DMS.vcxproj.filters b/DMS/DMS.vcxproj.filters index 9956f62..87a0c36 100644 --- a/DMS/DMS.vcxproj.filters +++ b/DMS/DMS.vcxproj.filters @@ -19,30 +19,9 @@ {e3410a7b-6408-4022-b606-2c14cfaac52c} - - {f71964f6-66b3-4d8c-a8da-56d703ad1c2a} - - - {32abbbfd-6359-488c-83be-f61da8fd8f4d} - - - {10d9f698-b08c-40c5-b6b1-e6d903f4b279} - - - {4757b859-2680-4c9a-83e8-be3bf06f192e} - {be440a96-7b07-48b3-a84e-64b10775c979} - - {9490aa5b-7d9d-415c-a263-ef1ecd8dd188} - - - {4c0bb4c5-388c-4f15-abb7-143cb6d6232f} - - - {978b41cd-27e4-4b8c-874e-3b6e927b3d4d} - {ef57bfaf-35f9-4b3e-8642-7ee96fb82139} @@ -55,12 +34,12 @@ {f3de0fc4-d3ed-4241-9432-4b9136f0b672} - - {8b07822b-59fb-4826-89ce-7481977f640b} - {490b48c7-06fe-4e6f-9b95-93a0b01a963c} + + {8b07822b-59fb-4826-89ce-7481977f640b} + @@ -87,21 +66,12 @@ Source Files\DMS - - Source Files\DMS\objects - - - Source Files\DMS\objects - Source Files\DMS Source Files\DMS - - Source Files\DMS\standardMethods - Source Files\DMS\parser @@ -114,15 +84,6 @@ Source Files\DMS\parser - - Source Files\DMS\state - - - Source Files\DMS\state - - - Source Files\DMS\objects - Source Files\DMS @@ -135,6 +96,24 @@ Source Files\gui + + Source Files\DMS + + + Source Files\DMS + + + Source Files\DMS + + + Source Files\DMS + + + Source Files\DMS + + + Source Files\DMS + @@ -173,12 +152,6 @@ Header Files\DMS - - Header Files\DMS\objects - - - Header Files\DMS\objects - Header Files\DMS @@ -188,18 +161,6 @@ Header Files\DMS - - Header Files\DMS\C-API - - - Header Files\DMS\objects - - - Header Files\DMS\standardMethods - - - Header Files\DMS\C-API - Header Files\DMS @@ -216,7 +177,19 @@ Header Files\multi - Header Files\DMS\gui + Header Files\gui + + + Header Files\DMS + + + Header Files\DMS + + + Header Files\DMS + + + Header Files\DMS \ No newline at end of file diff --git a/DMS/LineParser.h b/DMS/LineParser.h index ca61237..15e84a5 100644 --- a/DMS/LineParser.h +++ b/DMS/LineParser.h @@ -63,6 +63,8 @@ namespace dms { void _Parse(tokenstream* stream); bool ParseLoop(tokenstream* stream, size_t count=0); std::stack lastCall; + // Block Handling Code + bool match_process_blocks(tokenstream* stream); // Match Process Code bool match_process_debug(tokenstream* stream); bool match_process_disp(tokenstream* stream); diff --git a/DMS/LineParserMatchProcess.cpp b/DMS/LineParserMatchProcess.cpp index 5b81890..d346472 100644 --- a/DMS/LineParserMatchProcess.cpp +++ b/DMS/LineParserMatchProcess.cpp @@ -4,6 +4,97 @@ using namespace dms::tokens; using namespace dms::utils; // TODO: process if elseif else statements, for loops and while loops namespace dms { + bool LineParser::match_process_blocks(tokenstream* stream) { + if (stream->match(tokens::bracketo, tokens::name, tokens::bracketc, tokens::newline)) { + stream->next(); + std::string name = stream->next().name; + createBlock(name, bt_block); + line = stream->next().line_num; // Consume + return true; + } + // This handles a few block types since they all follow a similar format + else if (stream->match(tokens::bracketo, tokens::name, tokens::colon, tokens::name, tokens::bracketc)) { + stream->next(); + std::string name = stream->next().name; + line = stream->next().line_num; + std::string temp = stream->next().name; + // Characters are a feature I want to have intergrated into the language + if (temp == "char") { + createBlock(name, bt_character); + } + // Enviroments are sortof like objects, they can be uses as an object. They are a cleaner way to build a hash map like object + else if (temp == "env") { + createBlock(name, bt_env); + } + // Menus are what they say on the tin. They provide the framework for having menus within your game + else if (temp == "menu") { + createBlock(name, bt_menu); + } + else { + std::vector* toks = new std::vector; + while (!match_process_blocks(stream) && stream->peek().type != tokens::eof && stream->peek().type != tokens::none) { + toks->push_back(stream->next()); + } + tokenstream* ts = new tokenstream(toks); + customBlock* cb = new customBlock(temp,ts); + state->OnCustomBlock.fire(cb); + } + stream->next(); + return true; + } + // Function block type + else if (stream->match(tokens::bracketo, tokens::name, tokens::colon, tokens::name, tokens::parao)) { + std::stringstream str; + stream->next(); + std::string name = stream->next().name; + line = stream->next().line_num; // The color, not needed after the inital match, but we still need to consume it + std::string b = stream->next().name; + if (b == "function") { + createBlock(name, bt_method); // We have a method let's set the block type to that, but we aren't done yet + // We need to set the params if any so the method can be supplied with arguments + stream->next(); // parao + std::vector tokens = stream->next(tokens::parac); // Consume until we see parac + dms_args args; + for (size_t i = 0; i < tokens.size() - 1; i++) {//The lase symbol is parac since that was the consume condition + if (tokens[i].type == tokens::name) { + // We got a name which is refering to a variable so lets build one + value v(tokens[i].name, datatypes::variable); + args.push(v); + } + else if (tokens[i].type == tokens::seperator) { + // We just ignore this + } + else { + std::stringstream str; + str << "Unexpected symbol: " << tokens[i]; + state->push_error(errors::error{ errors::badtoken,str.str(),true,line,current_chunk }); + return false; + } + } + // If all went well the 'args' now has all of tha params for the method we will be working with + current_chunk->params = args; + for (size_t i = 0; i < args.size(); i++) { + current_chunk->cmds.back()->args.push(args.args[i]); + } + + // Thats should be all we need to do + if (stream->peek().type != tokens::bracketc) { + state->push_error(errors::error{ errors::badtoken, "Incomplete function block declaration! Expected ']' to close the block!",true,line,current_chunk }); + return false; + } + else { + stream->next(); + return true; + } + } + else { + str << "'function' keyword expected got " << b; + state->push_error(errors::error{ errors::badtoken, str.str(),true,line,current_chunk }); + return false; + } + } + return false; + } bool LineParser::match_process_standard(tokenstream* stream, value& v) { stream->chomp(newline); //utils::debug(stream->peek()); diff --git a/DMS/LineParserParse.cpp b/DMS/LineParserParse.cpp index 3397608..a09fa60 100644 --- a/DMS/LineParserParse.cpp +++ b/DMS/LineParserParse.cpp @@ -415,84 +415,7 @@ namespace dms { } } // Default block - if (stream->match(tokens::bracketo, tokens::name, tokens::bracketc, tokens::newline)) { - stream->next(); - std::string name = stream->next().name; - createBlock(name, bt_block); - line = stream->next().line_num; // Consume - } - // This handles a few block types since they all follow a similar format - else if (stream->match(tokens::bracketo, tokens::name, tokens::colon, tokens::name, tokens::bracketc)) { - stream->next(); - std::string name = stream->next().name; - line = stream->next().line_num; - std::string temp = stream->next().name; - // Characters are a feature I want to have intergrated into the language - if (temp == "char") { - createBlock(name, bt_character); - } - // Enviroments are sortof like objects, they can be uses as an object. They are a cleaner way to build a hash map like object - else if (temp == "env") { - createBlock(name, bt_env); - } - // Menus are what they say on the tin. They provide the framework for having menus within your game - else if (temp == "menu") { - createBlock(name, bt_menu); - } - stream->next(); - } - // Function block type - else if (stream->match(tokens::bracketo, tokens::name, tokens::colon, tokens::name, tokens::parao)) { - std::stringstream str; - stream->next(); - std::string name = stream->next().name; - line = stream->next().line_num; // The color, not needed after the inital match, but we still need to consume it - std::string b = stream->next().name; - if (b == "function") { - createBlock(name, bt_method); // We have a method let's set the block type to that, but we aren't done yet - // We need to set the params if any so the method can be supplied with arguments - stream->next(); // parao - std::vector tokens = stream->next(tokens::parac); // Consume until we see parac - dms_args args; - for (size_t i = 0; i < tokens.size() - 1; i++) {//The lase symbol is parac since that was the consume condition - if (tokens[i].type == tokens::name) { - // We got a name which is refering to a variable so lets build one - value v(tokens[i].name, datatypes::variable); - args.push(v); - } - else if (tokens[i].type == tokens::seperator) { - // We just ignore this - } - else { - std::stringstream str; - str << "Unexpected symbol: " << tokens[i]; - state->push_error(errors::error{ errors::badtoken,str.str(),true,line,current_chunk }); - - return false; - } - } - // If all went well the 'args' now has all of tha params for the method we will be working with - current_chunk->params = args; - for (size_t i = 0; i < args.size(); i++) { - current_chunk->cmds.back()->args.push(args.args[i]); - } - - // Thats should be all we need to do - if (stream->peek().type != tokens::bracketc) { - state->push_error(errors::error{ errors::badtoken, "Incomplete function block declaration! Expected ']' to close the block!",true,line,current_chunk }); - return false; - } - else { - stream->next(); - } - } - else { - str << "'function' keyword expected got " << b; - state->push_error(errors::error{ errors::badtoken, str.str(),true,line,current_chunk }); - - return false; - } - } + match_process_blocks(stream); // Control Handle all controls here manageCount(match_process_choice(stream), count, current_count); manageCount(match_process_while(stream), count, current_count); diff --git a/DMS/core.cpp b/DMS/core.cpp index 533271f..a09f7e7 100644 --- a/DMS/core.cpp +++ b/DMS/core.cpp @@ -28,6 +28,7 @@ namespace dms { void init(dms_state* state) { state->invoker.registerFunction("print", print); state->invoker.registerFunction("type", type); + //state->invoker.registerFunction("concat", concat); } } } \ No newline at end of file diff --git a/DMS/dms_state.h b/DMS/dms_state.h index 026126f..e679454 100644 --- a/DMS/dms_state.h +++ b/DMS/dms_state.h @@ -11,10 +11,22 @@ #include "comparisons.h" #include "Connection.h" namespace dms { + struct tokenstream; + struct customBlock { + dms::chunk* chnk; + std::string type; + dms::tokenstream* toks; + customBlock(std::string s, dms::tokenstream* ts) { + type = s; + toks = ts; + } + }; + struct message { character* chara; std::string text; }; + struct statedata { codes::op code; cmd* c = nullptr; @@ -25,6 +37,7 @@ namespace dms { size_t ln = 0; std::string temp; }; + struct Handler; value blockInvoke(void*, dms_state*, dms_args*); struct dms_state @@ -97,6 +110,7 @@ namespace dms { multi::connection OnText; multi::connection OnAppendText; multi::connection HandleHalt; + multi::connection OnCustomBlock; private: // From what I gathered //std::mutex memory_mutex; diff --git a/DMS/dump.bin b/DMS/dump.bin index 6115cdcbbbe643be8d536ff1e743e39fe6a6867a..9c53731d83b86f33da1d8d2cd62582b0fe148109 100644 GIT binary patch delta 161 zcmbO(`kbrY$;a7Sfh{*NGmk-m*+7Ap%ik^3Pk|%1v^X*?m^24Mp=xyHLkWVwJex%-FsBa9IO U3BgQ;DB669#gTb46X#S$02ZAnm;e9( literal 2711 zcmcgu-EZPX5Kk{B3y}C9<{?tw2%kxMQdL19!MU74m`m;rZSX?e*j^5=OZo3Rv%}iJ zB~exB`U1Q2y)(a=aqs^6GdQbAY~}g{P8(24RkDQALa6|%mFwZi1?TZuXxOR@HX=y` z1nQ3yaI{QyEr?S*lKS~trdcfMCbE?NQ>|9`m&lEeCh_z=3-t*az3=w!!6DN#Yh+d@ z#^~m&X9FOc@JkX#NJsKDlsHJHag?NUJDQHbIWyJ{)NH^=(7jaxJCywa{6LDQaIL`+D?c45ux+{>C&jG*&VoW%uUhhFQ+z za4>6K-QiTR4ZrWj`YmKErgkMnST#|TgQaRVu!3d)6r?7SOotYv7LvH`rnaQmMv_5! zA=N=rhXN}|7f8A|BoSsV4@p-@x+0Q|_6+COt^)?&5Gke?a;EFKQ_Jj7*a; zSN=T@wG3Vpu!vw7?uEB=O?0eA;oXF7n(l|N_X0nR(K<0;{ue&7g!LUC@dgu-1S*Ex dY bracketc ] Line <18> newline Line <18> newline Line <19> newline -Line <20> name music2 -Line <20> dot dot -Line <20> name play -Line <20> parao ( -Line <20> parac ) Line <20> newline Line <20> newline -Line <21> name music2 -Line <21> dot dot -Line <21> name setVolume -Line <21> parao ( -Line <21> number 50 -Line <21> parac ) +Line <21> control +Line <21> string Pick an option +Line <21> cbracketo { Line <21> newline Line <21> newline -Line <22> name Ryan -Line <22> colon : -Line <22> string Hello how are you? +Line <22> string Option 1 +Line <22> cbracketo { Line <22> newline Line <22> newline -Line <23> name Bob +Line <23> name Ryan Line <23> colon : -Line <23> string Slot 3 = -Line <23> plus + -Line <23> name testINV -Line <23> bracketo [ -Line <23> string slot3 -Line <23> bracketc ] +Line <23> string Hi! Line <23> newline Line <23> newline +Line <24> cbracketc } Line <24> newline Line <24> newline +Line <25> string Option 2 +Line <25> cbracketo { Line <25> newline -Line <26> name wait -Line <26> number 5 +Line <25> newline +Line <26> name Bob +Line <26> colon : +Line <26> string Hello! Line <26> newline Line <26> newline -Line <27> name setBG -Line <27> parao ( -Line <27> string background2.jpg -Line <27> parac ) +Line <27> cbracketc } Line <27> newline Line <27> newline +Line <28> string Option 3 +Line <28> cbracketo { Line <28> newline Line <28> newline -Line <29> name Ryan -Line <29> colon : -Line <29> string Hello how are you? +Line <29> string Hahahaha Line <29> newline Line <29> newline -Line <30> name wait -Line <30> number 3 +Line <30> cbracketc } Line <30> newline Line <30> newline -Line <31> name Bob -Line <31> colon : -Line <31> string I'm good how are you? +Line <31> cbracketc } Line <31> newline Line <31> newline -Line <32> name wait -Line <32> number 3 Line <32> newline Line <32> newline -Line <33> name Ryan +Line <33> bracketo [ +Line <33> name testblock Line <33> colon : -Line <33> string I am great :D +Line <33> name metest +Line <33> bracketc ] Line <33> newline Line <33> newline +Line <34> string Hello World Line <34> newline Line <34> newline Line <35> name a Line <35> equal = -Line <35> number 0 +Line <35> number 10 Line <35> newline Line <35> newline Line <36> newline -Line <37> name while -Line <37> parao ( -Line <37> name music2 -Line <37> dot dot -Line <37> name getStatus -Line <37> parao ( -Line <37> parac ) -Line <37> not ! -Line <37> equal = -Line <37> string stopped -Line <37> parac ) -Line <37> cbracketo { -Line <37> cbracketc } +Line <36> newline +Line <37> bracketo [ +Line <37> name Ryan +Line <37> colon : +Line <37> name char +Line <37> bracketc ] Line <37> newline Line <37> newline +Line <38> name age +Line <38> equal = +Line <38> number 21 Line <38> newline +Line <38> newline +Line <39> name money +Line <39> equal = +Line <39> number 1000 Line <39> newline +Line <39> newline +Line <40> name lname +Line <40> equal = +Line <40> string Ward Line <40> newline +Line <40> newline +Line <41> name known +Line <41> equal = +Line <41> true true +Line <41> newline Line <41> newline Line <42> newline +Line <43> name calm +Line <43> colon : +Line <43> string ./path/to/file Line <43> newline +Line <43> newline +Line <44> name excited +Line <44> colon : +Line <44> string ./path/to/file +Line <44> newline Line <44> newline Line <45> newline +Line <45> newline +Line <46> bracketo [ +Line <46> name John +Line <46> colon : +Line <46> name char +Line <46> bracketc ] Line <46> newline +Line <46> newline +Line <47> name lname +Line <47> equal = +Line <47> string Johnson Line <47> newline +Line <47> newline +Line <48> name age +Line <48> equal = +Line <48> number 16 Line <48> newline +Line <48> newline +Line <49> name money +Line <49> equal = +Line <49> number 100000 Line <49> newline +Line <49> newline +Line <50> name known +Line <50> equal = +Line <50> true true +Line <50> newline Line <50> newline Line <51> newline +Line <51> newline +Line <52> bracketo [ +Line <52> name Bob +Line <52> colon : +Line <52> name char +Line <52> bracketc ] Line <52> newline Line <52> newline -Line <53> bracketo [ -Line <53> name SelectSong -Line <53> colon : -Line <53> name function -Line <53> parao ( -Line <53> parac ) -Line <53> bracketc ] Line <53> newline -Line <53> newline -Line <54> control -Line <54> string Pick song: -Line <54> cbracketo { Line <54> newline -Line <54> newline -Line <55> string Music 1 -Line <55> cbracketo { +Line <55> name lname +Line <55> equal = +Line <55> string Johnson Line <55> newline -Line <55> newline -Line <56> ret -Line <56> name music +Line <56> name unknown +Line <56> equal = +Line <56> string Some Random Guy Line <56> newline Line <56> newline -Line <57> cbracketc } +Line <57> name age +Line <57> equal = +Line <57> number 24 Line <57> newline Line <57> newline -Line <58> string Music 2 -Line <58> cbracketo { +Line <58> name money +Line <58> equal = +Line <58> number 100 Line <58> newline Line <58> newline -Line <59> ret -Line <59> name music2 +Line <59> name excited +Line <59> colon : +Line <59> string path/to/file Line <59> newline Line <59> newline -Line <60> cbracketc } -Line <60> newline -Line <60> newline -Line <61> cbracketc } -Line <61> newline -Line <61> newline -Line <62> newline -Line <62> newline -Line <63> bracketo [ -Line <63> name player -Line <63> colon : -Line <63> name function -Line <63> parao ( -Line <63> name song -Line <63> seperator , -Line <63> name food -Line <63> parac ) -Line <63> bracketc ] -Line <63> newline -Line <63> newline -Line <64> control -Line <64> string What you wanna do? -Line <64> cbracketo { -Line <64> newline -Line <64> newline -Line <65> string play/resume -Line <65> cbracketo { -Line <65> newline -Line <65> newline -Line <66> name song -Line <66> dot dot -Line <66> name play -Line <66> parao ( -Line <66> parac ) -Line <66> newline -Line <66> newline -Line <67> name player -Line <67> parao ( -Line <67> name song -Line <67> parac ) -Line <67> newline -Line <67> newline -Line <68> cbracketc } -Line <68> newline -Line <68> newline -Line <69> string pause -Line <69> cbracketo { -Line <69> newline -Line <69> newline -Line <70> name song -Line <70> dot . -Line <70> name pause -Line <70> parao ( -Line <70> parac ) -Line <70> newline -Line <70> newline -Line <71> name player -Line <71> parao ( -Line <71> name song -Line <71> parac ) -Line <71> newline -Line <71> newline -Line <72> cbracketc } -Line <72> newline -Line <72> newline -Line <73> string stop -Line <73> cbracketo { -Line <73> newline -Line <73> newline -Line <74> name song -Line <74> dot . -Line <74> name stop -Line <74> parao ( -Line <74> parac ) -Line <74> newline -Line <74> newline -Line <75> name player -Line <75> parao ( -Line <75> name song -Line <75> parac ) -Line <75> newline -Line <75> newline -Line <76> cbracketc } -Line <76> newline -Line <76> newline -Line <77> string newSong -Line <77> cbracketo { -Line <77> newline -Line <77> newline -Line <78> name song -Line <78> dot . -Line <78> name stop -Line <78> parao ( -Line <78> parac ) -Line <78> newline -Line <78> newline -Line <79> name player -Line <79> parao ( -Line <79> name song -Line <79> parac ) -Line <79> newline -Line <79> newline -Line <80> cbracketc } -Line <80> newline -Line <80> newline -Line <81> string quit -Line <81> exit -Line <81> number 0 -Line <81> newline -Line <81> newline -Line <82> cbracketc } -Line <82> newline -Line <82> newline -Line <83> newline -Line <83> newline -Line <84> bracketo [ -Line <84> name Ryan -Line <84> colon : -Line <84> name char -Line <84> bracketc ] -Line <84> newline -Line <84> newline -Line <85> name age -Line <85> equal = -Line <85> number 21 -Line <85> newline -Line <85> newline -Line <86> name money -Line <86> equal = -Line <86> number 1000 -Line <86> newline -Line <86> newline -Line <87> name lname -Line <87> equal = -Line <87> string Ward -Line <87> newline -Line <87> newline -Line <88> name known -Line <88> equal = -Line <88> true true -Line <88> newline -Line <88> newline -Line <89> newline -Line <90> name calm -Line <90> colon : -Line <90> string ./path/to/file -Line <90> newline -Line <90> newline -Line <91> name excited -Line <91> colon : -Line <91> string ./path/to/file -Line <91> newline -Line <91> newline -Line <92> newline -Line <92> newline -Line <93> bracketo [ -Line <93> name John -Line <93> colon : -Line <93> name char -Line <93> bracketc ] -Line <93> newline -Line <93> newline -Line <94> name lname -Line <94> equal = -Line <94> string Johnson -Line <94> newline -Line <94> newline -Line <95> name age -Line <95> equal = -Line <95> number 16 -Line <95> newline -Line <95> newline -Line <96> name money -Line <96> equal = -Line <96> number 100000 -Line <96> newline -Line <96> newline -Line <97> name known -Line <97> equal = -Line <97> true true -Line <97> newline -Line <97> newline -Line <98> newline -Line <98> newline -Line <99> bracketo [ -Line <99> name Bob -Line <99> colon : -Line <99> name char -Line <99> bracketc ] -Line <99> newline -Line <99> newline -Line <100> newline -Line <101> newline -Line <102> name lname -Line <102> equal = -Line <102> string Johnson -Line <102> newline -Line <103> name unknown -Line <103> equal = -Line <103> string Some Random Guy -Line <103> newline -Line <103> newline -Line <104> name age -Line <104> equal = -Line <104> number 24 -Line <104> newline -Line <104> newline -Line <105> name money -Line <105> equal = -Line <105> number 100 -Line <105> newline -Line <105> newline -Line <106> name excited -Line <106> colon : -Line <106> string path/to/file -Line <106> newline -Line <106> newline -Line <106> eof +Line <59> eof +Line <1> newline +Line <1> newline +Line <1> bracketo [ +Line <1> name default +Line <1> colon : +Line <1> name char +Line <1> bracketc ] +Line <1> newline +Line <1> newline +Line <2> newline +Line <3> name money +Line <3> equal = +Line <3> number 0 +Line <3> newline +Line <3> newline +Line <4> name test +Line <4> equal = +Line <4> nil nil +Line <4> newline +Line <4> newline +Line <5> newline +Line <5> newline +Line <6> bracketo [ +Line <6> name step +Line <6> colon : +Line <6> name function +Line <6> parao ( +Line <6> name a +Line <6> seperator , +Line <6> name b +Line <6> seperator , +Line <6> name c +Line <6> parac ) +Line <6> bracketc ] +Line <6> newline +Line <6> newline +Line <7> string Testing... +Line <7> newline +Line <8> newline +Line <9> name e +Line <9> equal = +Line <9> string somestring +Line <9> newline +Line <9> newline +Line <10> name e +Line <10> equal = +Line <10> nil nil +Line <10> newline +Line <10> newline +Line <11> name g +Line <11> equal = +Line <11> false false +Line <11> newline +Line <11> newline +Line <12> ret +Line <12> name d +Line <12> newline +Line <12> newline +Line <13> newline +Line <13> newline +Line <14> bracketo [ +Line <14> name testINV +Line <14> colon : +Line <14> name env +Line <14> bracketc ] +Line <14> newline +Line <14> newline +Line <15> name slot1 +Line <15> equal = +Line <15> string S1 +Line <15> newline +Line <15> newline +Line <16> name slot2 +Line <16> equal = +Line <16> string S2 +Line <16> newline +Line <16> newline +Line <17> name slot3 +Line <17> equal = +Line <17> string S3 +Line <17> newline +Line <17> newline +Line <18> name slot4 +Line <18> equal = +Line <18> string S4 +Line <18> newline +Line <18> newline +Line <19> name slot5 +Line <19> equal = +Line <19> string S5 +Line <19> newline +Line <19> newline +Line <20> name slot6 +Line <20> equal = +Line <20> string S6 +Line <20> newline +Line <20> newline +Line <21> name slot7 +Line <21> equal = +Line <21> string S7 +Line <21> newline +Line <21> newline +Line <22> name slot8 +Line <22> equal = +Line <22> string S8 +Line <22> newline +Line <22> newline +Line <22> eof +Line <1> newline +Line <1> newline +Line <1> flag +Line <1> name main +Line <1> newline +Line <2> newline +Line <3> flag +Line <3> name omniscient +Line <3> newline +Line <3> newline +Line <4> flag +Line <4> name fullname +Line <4> newline +Line <4> newline +Line <5> flag +Line <5> name forwardlabels +Line <5> newline +Line <6> flag +Line <6> name savestate +Line <6> newline +Line <6> newline +Line <7> newline +Line <8> newline +Line <9> newline +Line <10> flag +Line <10> string loadtest.dms +Line <10> newline +Line <10> newline +Line <11> flag +Line <11> number 0.2 +Line <11> newline +Line <11> newline +Line <12> flag +Line <12> name extendedDefine +Line <12> newline +Line <12> newline +Line <13> newline +Line <14> newline +Line <14> newline +Line <15> name music2 +Line <15> equal = +Line <15> name audio +Line <15> dot dot +Line <15> name loadMusic +Line <15> parao ( +Line <15> string test2.ogg +Line <15> parac ) +Line <15> newline +Line <15> newline +Line <16> name music +Line <16> equal = +Line <16> name audio +Line <16> dot . +Line <16> name loadMusic +Line <16> parao ( +Line <16> string test.ogg +Line <16> parac ) +Line <16> newline +Line <16> newline +Line <17> newline +Line <17> newline +Line <18> bracketo [ +Line <18> name main +Line <18> bracketc ] +Line <18> newline +Line <18> newline +Line <19> newline +Line <20> newline +Line <20> newline +Line <21> control +Line <21> string Pick an option +Line <21> cbracketo { +Line <21> newline +Line <21> newline +Line <22> string Option 1 +Line <22> cbracketo { +Line <22> newline +Line <22> newline +Line <23> name Ryan +Line <23> colon : +Line <23> string Hi! +Line <23> newline +Line <23> newline +Line <24> cbracketc } +Line <24> newline +Line <24> newline +Line <25> string Option 2 +Line <25> cbracketo { +Line <25> newline +Line <25> newline +Line <26> name Bob +Line <26> colon : +Line <26> string Hello! +Line <26> newline +Line <26> newline +Line <27> cbracketc } +Line <27> newline +Line <27> newline +Line <28> string Option 3 +Line <28> cbracketo { +Line <28> newline +Line <28> newline +Line <29> string Hahahaha +Line <29> newline +Line <29> newline +Line <30> cbracketc } +Line <30> newline +Line <30> newline +Line <31> cbracketc } +Line <31> newline +Line <31> newline +Line <32> newline +Line <32> newline +Line <33> bracketo [ +Line <33> name testblock +Line <33> colon : +Line <33> name metest +Line <33> bracketc ] +Line <33> newline +Line <33> newline +Line <34> string Hello World +Line <34> newline +Line <34> newline +Line <35> name a +Line <35> equal = +Line <35> number 10 +Line <35> newline +Line <35> newline +Line <36> newline +Line <36> newline +Line <37> bracketo [ +Line <37> name Ryan +Line <37> colon : +Line <37> name char +Line <37> bracketc ] +Line <37> newline +Line <37> newline +Line <38> name age +Line <38> equal = +Line <38> number 21 +Line <38> newline +Line <38> newline +Line <39> name money +Line <39> equal = +Line <39> number 1000 +Line <39> newline +Line <39> newline +Line <40> name lname +Line <40> equal = +Line <40> string Ward +Line <40> newline +Line <40> newline +Line <41> name known +Line <41> equal = +Line <41> true true +Line <41> newline +Line <41> newline +Line <42> newline +Line <43> name calm +Line <43> colon : +Line <43> string ./path/to/file +Line <43> newline +Line <43> newline +Line <44> name excited +Line <44> colon : +Line <44> string ./path/to/file +Line <44> newline +Line <44> newline +Line <45> newline +Line <45> newline +Line <46> bracketo [ +Line <46> name John +Line <46> colon : +Line <46> name char +Line <46> bracketc ] +Line <46> newline +Line <46> newline +Line <47> name lname +Line <47> equal = +Line <47> string Johnson +Line <47> newline +Line <47> newline +Line <48> name age +Line <48> equal = +Line <48> number 16 +Line <48> newline +Line <48> newline +Line <49> name money +Line <49> equal = +Line <49> number 100000 +Line <49> newline +Line <49> newline +Line <50> name known +Line <50> equal = +Line <50> true true +Line <50> newline +Line <50> newline +Line <51> newline +Line <51> newline +Line <52> bracketo [ +Line <52> name Bob +Line <52> colon : +Line <52> name char +Line <52> bracketc ] +Line <52> newline +Line <52> newline +Line <53> newline +Line <54> newline +Line <55> name lname +Line <55> equal = +Line <55> string Johnson +Line <55> newline +Line <56> name unknown +Line <56> equal = +Line <56> string Some Random Guy +Line <56> newline +Line <56> newline +Line <57> name age +Line <57> equal = +Line <57> number 24 +Line <57> newline +Line <57> newline +Line <58> name money +Line <58> equal = +Line <58> number 100 +Line <58> newline +Line <58> newline +Line <59> name excited +Line <59> colon : +Line <59> string path/to/file +Line <59> newline +Line <59> newline +Line <59> eof +Line <1> newline +Line <1> newline +Line <1> bracketo [ +Line <1> name default +Line <1> colon : +Line <1> name char +Line <1> bracketc ] +Line <1> newline +Line <1> newline +Line <2> newline +Line <3> name money +Line <3> equal = +Line <3> number 0 +Line <3> newline +Line <3> newline +Line <4> name test +Line <4> equal = +Line <4> nil nil +Line <4> newline +Line <4> newline +Line <5> newline +Line <5> newline +Line <6> bracketo [ +Line <6> name step +Line <6> colon : +Line <6> name function +Line <6> parao ( +Line <6> name a +Line <6> seperator , +Line <6> name b +Line <6> seperator , +Line <6> name c +Line <6> parac ) +Line <6> bracketc ] +Line <6> newline +Line <6> newline +Line <7> string Testing... +Line <7> newline +Line <8> newline +Line <9> name e +Line <9> equal = +Line <9> string somestring +Line <9> newline +Line <9> newline +Line <10> name e +Line <10> equal = +Line <10> nil nil +Line <10> newline +Line <10> newline +Line <11> name g +Line <11> equal = +Line <11> false false +Line <11> newline +Line <11> newline +Line <12> ret +Line <12> name d +Line <12> newline +Line <12> newline +Line <13> newline +Line <13> newline +Line <14> bracketo [ +Line <14> name testINV +Line <14> colon : +Line <14> name env +Line <14> bracketc ] +Line <14> newline +Line <14> newline +Line <15> name slot1 +Line <15> equal = +Line <15> string S1 +Line <15> newline +Line <15> newline +Line <16> name slot2 +Line <16> equal = +Line <16> string S2 +Line <16> newline +Line <16> newline +Line <17> name slot3 +Line <17> equal = +Line <17> string S3 +Line <17> newline +Line <17> newline +Line <18> name slot4 +Line <18> equal = +Line <18> string S4 +Line <18> newline +Line <18> newline +Line <19> name slot5 +Line <19> equal = +Line <19> string S5 +Line <19> newline +Line <19> newline +Line <20> name slot6 +Line <20> equal = +Line <20> string S6 +Line <20> newline +Line <20> newline +Line <21> name slot7 +Line <21> equal = +Line <21> string S7 +Line <21> newline +Line <21> newline +Line <22> name slot8 +Line <22> equal = +Line <22> string S8 +Line <22> newline +Line <22> newline +Line <22> eof +Line <1> newline +Line <1> newline +Line <1> flag +Line <1> name main +Line <1> newline +Line <2> newline +Line <3> flag +Line <3> name omniscient +Line <3> newline +Line <3> newline +Line <4> flag +Line <4> name fullname +Line <4> newline +Line <4> newline +Line <5> flag +Line <5> name forwardlabels +Line <5> newline +Line <6> flag +Line <6> name savestate +Line <6> newline +Line <6> newline +Line <7> newline +Line <8> newline +Line <9> newline +Line <10> flag +Line <10> string loadtest.dms +Line <10> newline +Line <10> newline +Line <11> flag +Line <11> number 0.2 +Line <11> newline +Line <11> newline +Line <12> flag +Line <12> name extendedDefine +Line <12> newline +Line <12> newline +Line <13> newline +Line <14> newline +Line <14> newline +Line <15> name music2 +Line <15> equal = +Line <15> name audio +Line <15> dot dot +Line <15> name loadMusic +Line <15> parao ( +Line <15> string test2.ogg +Line <15> parac ) +Line <15> newline +Line <15> newline +Line <16> name music +Line <16> equal = +Line <16> name audio +Line <16> dot . +Line <16> name loadMusic +Line <16> parao ( +Line <16> string test.ogg +Line <16> parac ) +Line <16> newline +Line <16> newline +Line <17> newline +Line <17> newline +Line <18> bracketo [ +Line <18> name main +Line <18> bracketc ] +Line <18> newline +Line <18> newline +Line <19> newline +Line <20> name music +Line <20> dot . +Line <20> name play +Line <20> parao ( +Line <20> parac ) +Line <20> newline +Line <20> newline +Line <21> name while +Line <21> parao ( +Line <21> name music +Line <21> dot . +Line <21> name isPlaying +Line <21> parao ( +Line <21> parac ) +Line <21> parac ) +Line <21> cbracketo { +Line <21> cbracketc } +Line <21> newline +Line <21> newline +Line <22> newline +Line <22> newline +Line <23> bracketo [ +Line <23> name testblock +Line <23> colon : +Line <23> name metest +Line <23> bracketc ] +Line <23> newline +Line <23> newline +Line <24> string Hello World +Line <24> newline +Line <24> newline +Line <25> name a +Line <25> equal = +Line <25> number 10 +Line <25> newline +Line <25> newline +Line <26> newline +Line <26> newline +Line <27> bracketo [ +Line <27> name Ryan +Line <27> colon : +Line <27> name char +Line <27> bracketc ] +Line <27> newline +Line <27> newline +Line <28> name age +Line <28> equal = +Line <28> number 21 +Line <28> newline +Line <28> newline +Line <29> name money +Line <29> equal = +Line <29> number 1000 +Line <29> newline +Line <29> newline +Line <30> name lname +Line <30> equal = +Line <30> string Ward +Line <30> newline +Line <30> newline +Line <31> name known +Line <31> equal = +Line <31> true true +Line <31> newline +Line <31> newline +Line <32> newline +Line <33> name calm +Line <33> colon : +Line <33> string ./path/to/file +Line <33> newline +Line <33> newline +Line <34> name excited +Line <34> colon : +Line <34> string ./path/to/file +Line <34> newline +Line <34> newline +Line <35> newline +Line <35> newline +Line <36> bracketo [ +Line <36> name John +Line <36> colon : +Line <36> name char +Line <36> bracketc ] +Line <36> newline +Line <36> newline +Line <37> name lname +Line <37> equal = +Line <37> string Johnson +Line <37> newline +Line <37> newline +Line <38> name age +Line <38> equal = +Line <38> number 16 +Line <38> newline +Line <38> newline +Line <39> name money +Line <39> equal = +Line <39> number 100000 +Line <39> newline +Line <39> newline +Line <40> name known +Line <40> equal = +Line <40> true true +Line <40> newline +Line <40> newline +Line <41> newline +Line <41> newline +Line <42> bracketo [ +Line <42> name Bob +Line <42> colon : +Line <42> name char +Line <42> bracketc ] +Line <42> newline +Line <42> newline +Line <43> newline +Line <44> newline +Line <45> name lname +Line <45> equal = +Line <45> string Johnson +Line <45> newline +Line <46> name unknown +Line <46> equal = +Line <46> string Some Random Guy +Line <46> newline +Line <46> newline +Line <47> name age +Line <47> equal = +Line <47> number 24 +Line <47> newline +Line <47> newline +Line <48> name money +Line <48> equal = +Line <48> number 100 +Line <48> newline +Line <48> newline +Line <49> name excited +Line <49> colon : +Line <49> string path/to/file +Line <49> newline +Line <49> newline +Line <49> eof +Line <1> newline +Line <1> newline +Line <1> bracketo [ +Line <1> name default +Line <1> colon : +Line <1> name char +Line <1> bracketc ] +Line <1> newline +Line <1> newline +Line <2> newline +Line <3> name money +Line <3> equal = +Line <3> number 0 +Line <3> newline +Line <3> newline +Line <4> name test +Line <4> equal = +Line <4> nil nil +Line <4> newline +Line <4> newline +Line <5> newline +Line <5> newline +Line <6> bracketo [ +Line <6> name step +Line <6> colon : +Line <6> name function +Line <6> parao ( +Line <6> name a +Line <6> seperator , +Line <6> name b +Line <6> seperator , +Line <6> name c +Line <6> parac ) +Line <6> bracketc ] +Line <6> newline +Line <6> newline +Line <7> string Testing... +Line <7> newline +Line <8> newline +Line <9> name e +Line <9> equal = +Line <9> string somestring +Line <9> newline +Line <9> newline +Line <10> name e +Line <10> equal = +Line <10> nil nil +Line <10> newline +Line <10> newline +Line <11> name g +Line <11> equal = +Line <11> false false +Line <11> newline +Line <11> newline +Line <12> ret +Line <12> name d +Line <12> newline +Line <12> newline +Line <13> newline +Line <13> newline +Line <14> bracketo [ +Line <14> name testINV +Line <14> colon : +Line <14> name env +Line <14> bracketc ] +Line <14> newline +Line <14> newline +Line <15> name slot1 +Line <15> equal = +Line <15> string S1 +Line <15> newline +Line <15> newline +Line <16> name slot2 +Line <16> equal = +Line <16> string S2 +Line <16> newline +Line <16> newline +Line <17> name slot3 +Line <17> equal = +Line <17> string S3 +Line <17> newline +Line <17> newline +Line <18> name slot4 +Line <18> equal = +Line <18> string S4 +Line <18> newline +Line <18> newline +Line <19> name slot5 +Line <19> equal = +Line <19> string S5 +Line <19> newline +Line <19> newline +Line <20> name slot6 +Line <20> equal = +Line <20> string S6 +Line <20> newline +Line <20> newline +Line <21> name slot7 +Line <21> equal = +Line <21> string S7 +Line <21> newline +Line <21> newline +Line <22> name slot8 +Line <22> equal = +Line <22> string S8 +Line <22> newline +Line <22> newline +Line <22> eof +Line <1> newline +Line <1> newline +Line <1> flag +Line <1> name main +Line <1> newline +Line <2> newline +Line <3> flag +Line <3> name omniscient +Line <3> newline +Line <3> newline +Line <4> flag +Line <4> name fullname +Line <4> newline +Line <4> newline +Line <5> flag +Line <5> name forwardlabels +Line <5> newline +Line <6> flag +Line <6> name savestate +Line <6> newline +Line <6> newline +Line <7> newline +Line <8> newline +Line <9> newline +Line <10> flag +Line <10> string loadtest.dms +Line <10> newline +Line <10> newline +Line <11> flag +Line <11> number 0.2 +Line <11> newline +Line <11> newline +Line <12> flag +Line <12> name extendedDefine +Line <12> newline +Line <12> newline +Line <13> newline +Line <14> newline +Line <14> newline +Line <15> name music2 +Line <15> equal = +Line <15> name audio +Line <15> dot dot +Line <15> name loadMusic +Line <15> parao ( +Line <15> string test2.ogg +Line <15> parac ) +Line <15> newline +Line <15> newline +Line <16> name music +Line <16> equal = +Line <16> name audio +Line <16> dot . +Line <16> name loadMusic +Line <16> parao ( +Line <16> string test.ogg +Line <16> parac ) +Line <16> newline +Line <16> newline +Line <17> newline +Line <17> newline +Line <18> bracketo [ +Line <18> name main +Line <18> bracketc ] +Line <18> newline +Line <18> newline +Line <19> newline +Line <20> name music +Line <20> dot . +Line <20> name play +Line <20> parao ( +Line <20> parac ) +Line <20> newline +Line <20> newline +Line <21> name while +Line <21> parao ( +Line <21> name music +Line <21> dot . +Line <21> name isPlaying +Line <21> parao ( +Line <21> parac ) +Line <21> parac ) +Line <21> cbracketo { +Line <21> cbracketc } +Line <21> newline +Line <21> newline +Line <22> newline +Line <22> newline +Line <23> bracketo [ +Line <23> name testblock +Line <23> colon : +Line <23> name metest +Line <23> bracketc ] +Line <23> newline +Line <23> newline +Line <24> string Hello World +Line <24> newline +Line <24> newline +Line <25> name a +Line <25> equal = +Line <25> number 10 +Line <25> newline +Line <25> newline +Line <26> newline +Line <26> newline +Line <27> bracketo [ +Line <27> name Ryan +Line <27> colon : +Line <27> name char +Line <27> bracketc ] +Line <27> newline +Line <27> newline +Line <28> name age +Line <28> equal = +Line <28> number 21 +Line <28> newline +Line <28> newline +Line <29> name money +Line <29> equal = +Line <29> number 1000 +Line <29> newline +Line <29> newline +Line <30> name lname +Line <30> equal = +Line <30> string Ward +Line <30> newline +Line <30> newline +Line <31> name known +Line <31> equal = +Line <31> true true +Line <31> newline +Line <31> newline +Line <32> newline +Line <33> name calm +Line <33> colon : +Line <33> string ./path/to/file +Line <33> newline +Line <33> newline +Line <34> name excited +Line <34> colon : +Line <34> string ./path/to/file +Line <34> newline +Line <34> newline +Line <35> newline +Line <35> newline +Line <36> bracketo [ +Line <36> name John +Line <36> colon : +Line <36> name char +Line <36> bracketc ] +Line <36> newline +Line <36> newline +Line <37> name lname +Line <37> equal = +Line <37> string Johnson +Line <37> newline +Line <37> newline +Line <38> name age +Line <38> equal = +Line <38> number 16 +Line <38> newline +Line <38> newline +Line <39> name money +Line <39> equal = +Line <39> number 100000 +Line <39> newline +Line <39> newline +Line <40> name known +Line <40> equal = +Line <40> true true +Line <40> newline +Line <40> newline +Line <41> newline +Line <41> newline +Line <42> bracketo [ +Line <42> name Bob +Line <42> colon : +Line <42> name char +Line <42> bracketc ] +Line <42> newline +Line <42> newline +Line <43> newline +Line <44> newline +Line <45> name lname +Line <45> equal = +Line <45> string Johnson +Line <45> newline +Line <46> name unknown +Line <46> equal = +Line <46> string Some Random Guy +Line <46> newline +Line <46> newline +Line <47> name age +Line <47> equal = +Line <47> number 24 +Line <47> newline +Line <47> newline +Line <48> name money +Line <48> equal = +Line <48> number 100 +Line <48> newline +Line <48> newline +Line <49> name excited +Line <49> colon : +Line <49> string path/to/file +Line <49> newline +Line <49> newline +Line <49> eof +Line <1> newline +Line <1> newline +Line <1> bracketo [ +Line <1> name default +Line <1> colon : +Line <1> name char +Line <1> bracketc ] +Line <1> newline +Line <1> newline +Line <2> newline +Line <3> name money +Line <3> equal = +Line <3> number 0 +Line <3> newline +Line <3> newline +Line <4> name test +Line <4> equal = +Line <4> nil nil +Line <4> newline +Line <4> newline +Line <5> newline +Line <5> newline +Line <6> bracketo [ +Line <6> name step +Line <6> colon : +Line <6> name function +Line <6> parao ( +Line <6> name a +Line <6> seperator , +Line <6> name b +Line <6> seperator , +Line <6> name c +Line <6> parac ) +Line <6> bracketc ] +Line <6> newline +Line <6> newline +Line <7> string Testing... +Line <7> newline +Line <8> newline +Line <9> name e +Line <9> equal = +Line <9> string somestring +Line <9> newline +Line <9> newline +Line <10> name e +Line <10> equal = +Line <10> nil nil +Line <10> newline +Line <10> newline +Line <11> name g +Line <11> equal = +Line <11> false false +Line <11> newline +Line <11> newline +Line <12> ret +Line <12> name d +Line <12> newline +Line <12> newline +Line <13> newline +Line <13> newline +Line <14> bracketo [ +Line <14> name testINV +Line <14> colon : +Line <14> name env +Line <14> bracketc ] +Line <14> newline +Line <14> newline +Line <15> name slot1 +Line <15> equal = +Line <15> string S1 +Line <15> newline +Line <15> newline +Line <16> name slot2 +Line <16> equal = +Line <16> string S2 +Line <16> newline +Line <16> newline +Line <17> name slot3 +Line <17> equal = +Line <17> string S3 +Line <17> newline +Line <17> newline +Line <18> name slot4 +Line <18> equal = +Line <18> string S4 +Line <18> newline +Line <18> newline +Line <19> name slot5 +Line <19> equal = +Line <19> string S5 +Line <19> newline +Line <19> newline +Line <20> name slot6 +Line <20> equal = +Line <20> string S6 +Line <20> newline +Line <20> newline +Line <21> name slot7 +Line <21> equal = +Line <21> string S7 +Line <21> newline +Line <21> newline +Line <22> name slot8 +Line <22> equal = +Line <22> string S8 +Line <22> newline +Line <22> newline +Line <22> eof +Line <1> newline +Line <1> newline +Line <1> flag +Line <1> name main +Line <1> newline +Line <2> newline +Line <3> flag +Line <3> name omniscient +Line <3> newline +Line <3> newline +Line <4> flag +Line <4> name fullname +Line <4> newline +Line <4> newline +Line <5> flag +Line <5> name forwardlabels +Line <5> newline +Line <6> flag +Line <6> name savestate +Line <6> newline +Line <6> newline +Line <7> newline +Line <8> newline +Line <9> newline +Line <10> flag +Line <10> string loadtest.dms +Line <10> newline +Line <10> newline +Line <11> flag +Line <11> number 0.2 +Line <11> newline +Line <11> newline +Line <12> flag +Line <12> name extendedDefine +Line <12> newline +Line <12> newline +Line <13> newline +Line <14> newline +Line <14> newline +Line <15> name music2 +Line <15> equal = +Line <15> name audio +Line <15> dot dot +Line <15> name loadMusic +Line <15> parao ( +Line <15> string test2.ogg +Line <15> parac ) +Line <15> newline +Line <15> newline +Line <16> name music +Line <16> equal = +Line <16> name audio +Line <16> dot . +Line <16> name loadMusic +Line <16> parao ( +Line <16> string test.ogg +Line <16> parac ) +Line <16> newline +Line <16> newline +Line <17> newline +Line <17> newline +Line <18> bracketo [ +Line <18> name main +Line <18> bracketc ] +Line <18> newline +Line <18> newline +Line <19> newline +Line <20> name music +Line <20> dot . +Line <20> name play +Line <20> parao ( +Line <20> parac ) +Line <20> newline +Line <20> newline +Line <21> name while +Line <21> parao ( +Line <21> name music +Line <21> dot . +Line <21> name isPlaying +Line <21> parao ( +Line <21> parac ) +Line <21> parac ) +Line <21> cbracketo { +Line <21> cbracketc } +Line <21> newline +Line <21> newline +Line <22> newline +Line <22> newline +Line <23> bracketo [ +Line <23> name testblock +Line <23> colon : +Line <23> name metest +Line <23> bracketc ] +Line <23> newline +Line <23> newline +Line <24> string Hello World +Line <24> newline +Line <24> newline +Line <25> name a +Line <25> equal = +Line <25> number 10 +Line <25> newline +Line <25> newline +Line <26> newline +Line <26> newline +Line <27> bracketo [ +Line <27> name Ryan +Line <27> colon : +Line <27> name char +Line <27> bracketc ] +Line <27> newline +Line <27> newline +Line <28> name age +Line <28> equal = +Line <28> number 21 +Line <28> newline +Line <28> newline +Line <29> name money +Line <29> equal = +Line <29> number 1000 +Line <29> newline +Line <29> newline +Line <30> name lname +Line <30> equal = +Line <30> string Ward +Line <30> newline +Line <30> newline +Line <31> name known +Line <31> equal = +Line <31> true true +Line <31> newline +Line <31> newline +Line <32> newline +Line <33> name calm +Line <33> colon : +Line <33> string ./path/to/file +Line <33> newline +Line <33> newline +Line <34> name excited +Line <34> colon : +Line <34> string ./path/to/file +Line <34> newline +Line <34> newline +Line <35> newline +Line <35> newline +Line <36> bracketo [ +Line <36> name John +Line <36> colon : +Line <36> name char +Line <36> bracketc ] +Line <36> newline +Line <36> newline +Line <37> name lname +Line <37> equal = +Line <37> string Johnson +Line <37> newline +Line <37> newline +Line <38> name age +Line <38> equal = +Line <38> number 16 +Line <38> newline +Line <38> newline +Line <39> name money +Line <39> equal = +Line <39> number 100000 +Line <39> newline +Line <39> newline +Line <40> name known +Line <40> equal = +Line <40> true true +Line <40> newline +Line <40> newline +Line <41> newline +Line <41> newline +Line <42> bracketo [ +Line <42> name Bob +Line <42> colon : +Line <42> name char +Line <42> bracketc ] +Line <42> newline +Line <42> newline +Line <43> newline +Line <44> newline +Line <45> name lname +Line <45> equal = +Line <45> string Johnson +Line <45> newline +Line <46> name unknown +Line <46> equal = +Line <46> string Some Random Guy +Line <46> newline +Line <46> newline +Line <47> name age +Line <47> equal = +Line <47> number 24 +Line <47> newline +Line <47> newline +Line <48> name money +Line <48> equal = +Line <48> number 100 +Line <48> newline +Line <48> newline +Line <49> name excited +Line <49> colon : +Line <49> string path/to/file +Line <49> newline +Line <49> newline +Line <49> eof +Line <1> newline +Line <1> newline +Line <1> bracketo [ +Line <1> name default +Line <1> colon : +Line <1> name char +Line <1> bracketc ] +Line <1> newline +Line <1> newline +Line <2> newline +Line <3> name money +Line <3> equal = +Line <3> number 0 +Line <3> newline +Line <3> newline +Line <4> name test +Line <4> equal = +Line <4> nil nil +Line <4> newline +Line <4> newline +Line <5> newline +Line <5> newline +Line <6> bracketo [ +Line <6> name step +Line <6> colon : +Line <6> name function +Line <6> parao ( +Line <6> name a +Line <6> seperator , +Line <6> name b +Line <6> seperator , +Line <6> name c +Line <6> parac ) +Line <6> bracketc ] +Line <6> newline +Line <6> newline +Line <7> string Testing... +Line <7> newline +Line <8> newline +Line <9> name e +Line <9> equal = +Line <9> string somestring +Line <9> newline +Line <9> newline +Line <10> name e +Line <10> equal = +Line <10> nil nil +Line <10> newline +Line <10> newline +Line <11> name g +Line <11> equal = +Line <11> false false +Line <11> newline +Line <11> newline +Line <12> ret +Line <12> name d +Line <12> newline +Line <12> newline +Line <13> newline +Line <13> newline +Line <14> bracketo [ +Line <14> name testINV +Line <14> colon : +Line <14> name env +Line <14> bracketc ] +Line <14> newline +Line <14> newline +Line <15> name slot1 +Line <15> equal = +Line <15> string S1 +Line <15> newline +Line <15> newline +Line <16> name slot2 +Line <16> equal = +Line <16> string S2 +Line <16> newline +Line <16> newline +Line <17> name slot3 +Line <17> equal = +Line <17> string S3 +Line <17> newline +Line <17> newline +Line <18> name slot4 +Line <18> equal = +Line <18> string S4 +Line <18> newline +Line <18> newline +Line <19> name slot5 +Line <19> equal = +Line <19> string S5 +Line <19> newline +Line <19> newline +Line <20> name slot6 +Line <20> equal = +Line <20> string S6 +Line <20> newline +Line <20> newline +Line <21> name slot7 +Line <21> equal = +Line <21> string S7 +Line <21> newline +Line <21> newline +Line <22> name slot8 +Line <22> equal = +Line <22> string S8 +Line <22> newline +Line <22> newline +Line <22> eof +Line <1> newline +Line <1> newline +Line <1> flag +Line <1> name main +Line <1> newline +Line <2> newline +Line <3> flag +Line <3> name omniscient +Line <3> newline +Line <3> newline +Line <4> flag +Line <4> name fullname +Line <4> newline +Line <4> newline +Line <5> flag +Line <5> name forwardlabels +Line <5> newline +Line <6> flag +Line <6> name savestate +Line <6> newline +Line <6> newline +Line <7> newline +Line <8> newline +Line <9> newline +Line <10> flag +Line <10> string loadtest.dms +Line <10> newline +Line <10> newline +Line <11> flag +Line <11> number 0.2 +Line <11> newline +Line <11> newline +Line <12> flag +Line <12> name extendedDefine +Line <12> newline +Line <12> newline +Line <13> newline +Line <14> newline +Line <14> newline +Line <15> name music2 +Line <15> equal = +Line <15> name audio +Line <15> dot dot +Line <15> name loadMusic +Line <15> parao ( +Line <15> string test2.ogg +Line <15> parac ) +Line <15> newline +Line <15> newline +Line <16> name music +Line <16> equal = +Line <16> name audio +Line <16> dot . +Line <16> name loadMusic +Line <16> parao ( +Line <16> string test.ogg +Line <16> parac ) +Line <16> newline +Line <16> newline +Line <17> newline +Line <17> newline +Line <18> bracketo [ +Line <18> name main +Line <18> bracketc ] +Line <18> newline +Line <18> newline +Line <19> newline +Line <20> name music +Line <20> dot . +Line <20> name play +Line <20> parao ( +Line <20> parac ) +Line <20> newline +Line <20> newline +Line <21> name while +Line <21> parao ( +Line <21> name music +Line <21> dot . +Line <21> name isPlaying +Line <21> parao ( +Line <21> parac ) +Line <21> parac ) +Line <21> cbracketo { +Line <21> cbracketc } +Line <21> newline +Line <21> newline +Line <22> newline +Line <22> newline +Line <23> bracketo [ +Line <23> name testblock +Line <23> colon : +Line <23> name metest +Line <23> bracketc ] +Line <23> newline +Line <23> newline +Line <24> string Hello World +Line <24> newline +Line <24> newline +Line <25> name a +Line <25> equal = +Line <25> number 10 +Line <25> newline +Line <25> newline +Line <26> newline +Line <26> newline +Line <27> bracketo [ +Line <27> name Ryan +Line <27> colon : +Line <27> name char +Line <27> bracketc ] +Line <27> newline +Line <27> newline +Line <28> name age +Line <28> equal = +Line <28> number 21 +Line <28> newline +Line <28> newline +Line <29> name money +Line <29> equal = +Line <29> number 1000 +Line <29> newline +Line <29> newline +Line <30> name lname +Line <30> equal = +Line <30> string Ward +Line <30> newline +Line <30> newline +Line <31> name known +Line <31> equal = +Line <31> true true +Line <31> newline +Line <31> newline +Line <32> newline +Line <33> name calm +Line <33> colon : +Line <33> string ./path/to/file +Line <33> newline +Line <33> newline +Line <34> name excited +Line <34> colon : +Line <34> string ./path/to/file +Line <34> newline +Line <34> newline +Line <35> newline +Line <35> newline +Line <36> bracketo [ +Line <36> name John +Line <36> colon : +Line <36> name char +Line <36> bracketc ] +Line <36> newline +Line <36> newline +Line <37> name lname +Line <37> equal = +Line <37> string Johnson +Line <37> newline +Line <37> newline +Line <38> name age +Line <38> equal = +Line <38> number 16 +Line <38> newline +Line <38> newline +Line <39> name money +Line <39> equal = +Line <39> number 100000 +Line <39> newline +Line <39> newline +Line <40> name known +Line <40> equal = +Line <40> true true +Line <40> newline +Line <40> newline +Line <41> newline +Line <41> newline +Line <42> bracketo [ +Line <42> name Bob +Line <42> colon : +Line <42> name char +Line <42> bracketc ] +Line <42> newline +Line <42> newline +Line <43> newline +Line <44> newline +Line <45> name lname +Line <45> equal = +Line <45> string Johnson +Line <45> newline +Line <46> name unknown +Line <46> equal = +Line <46> string Some Random Guy +Line <46> newline +Line <46> newline +Line <47> name age +Line <47> equal = +Line <47> number 24 +Line <47> newline +Line <47> newline +Line <48> name money +Line <48> equal = +Line <48> number 100 +Line <48> newline +Line <48> newline +Line <49> name excited +Line <49> colon : +Line <49> string path/to/file +Line <49> newline +Line <49> newline +Line <49> eof +Line <1> newline +Line <1> newline +Line <1> bracketo [ +Line <1> name default +Line <1> colon : +Line <1> name char +Line <1> bracketc ] +Line <1> newline +Line <1> newline +Line <2> newline +Line <3> name money +Line <3> equal = +Line <3> number 0 +Line <3> newline +Line <3> newline +Line <4> name test +Line <4> equal = +Line <4> nil nil +Line <4> newline +Line <4> newline +Line <5> newline +Line <5> newline +Line <6> bracketo [ +Line <6> name step +Line <6> colon : +Line <6> name function +Line <6> parao ( +Line <6> name a +Line <6> seperator , +Line <6> name b +Line <6> seperator , +Line <6> name c +Line <6> parac ) +Line <6> bracketc ] +Line <6> newline +Line <6> newline +Line <7> string Testing... +Line <7> newline +Line <8> newline +Line <9> name e +Line <9> equal = +Line <9> string somestring +Line <9> newline +Line <9> newline +Line <10> name e +Line <10> equal = +Line <10> nil nil +Line <10> newline +Line <10> newline +Line <11> name g +Line <11> equal = +Line <11> false false +Line <11> newline +Line <11> newline +Line <12> ret +Line <12> name d +Line <12> newline +Line <12> newline +Line <13> newline +Line <13> newline +Line <14> bracketo [ +Line <14> name testINV +Line <14> colon : +Line <14> name env +Line <14> bracketc ] +Line <14> newline +Line <14> newline +Line <15> name slot1 +Line <15> equal = +Line <15> string S1 +Line <15> newline +Line <15> newline +Line <16> name slot2 +Line <16> equal = +Line <16> string S2 +Line <16> newline +Line <16> newline +Line <17> name slot3 +Line <17> equal = +Line <17> string S3 +Line <17> newline +Line <17> newline +Line <18> name slot4 +Line <18> equal = +Line <18> string S4 +Line <18> newline +Line <18> newline +Line <19> name slot5 +Line <19> equal = +Line <19> string S5 +Line <19> newline +Line <19> newline +Line <20> name slot6 +Line <20> equal = +Line <20> string S6 +Line <20> newline +Line <20> newline +Line <21> name slot7 +Line <21> equal = +Line <21> string S7 +Line <21> newline +Line <21> newline +Line <22> name slot8 +Line <22> equal = +Line <22> string S8 +Line <22> newline +Line <22> newline +Line <22> eof +Line <1> newline +Line <1> newline +Line <1> flag +Line <1> name main +Line <1> newline +Line <2> newline +Line <3> flag +Line <3> name omniscient +Line <3> newline +Line <3> newline +Line <4> flag +Line <4> name fullname +Line <4> newline +Line <4> newline +Line <5> flag +Line <5> name forwardlabels +Line <5> newline +Line <6> flag +Line <6> name savestate +Line <6> newline +Line <6> newline +Line <7> newline +Line <8> newline +Line <9> newline +Line <10> flag +Line <10> string loadtest.dms +Line <10> newline +Line <10> newline +Line <11> flag +Line <11> number 0.2 +Line <11> newline +Line <11> newline +Line <12> flag +Line <12> name extendedDefine +Line <12> newline +Line <12> newline +Line <13> newline +Line <14> newline +Line <14> newline +Line <15> name music2 +Line <15> equal = +Line <15> name audio +Line <15> dot dot +Line <15> name loadMusic +Line <15> parao ( +Line <15> string test2.ogg +Line <15> parac ) +Line <15> newline +Line <15> newline +Line <16> name music +Line <16> equal = +Line <16> name audio +Line <16> dot . +Line <16> name loadMusic +Line <16> parao ( +Line <16> string test.ogg +Line <16> parac ) +Line <16> newline +Line <16> newline +Line <17> newline +Line <17> newline +Line <18> bracketo [ +Line <18> name main +Line <18> bracketc ] +Line <18> newline +Line <18> newline +Line <19> newline +Line <20> name music +Line <20> dot . +Line <20> name play +Line <20> parao ( +Line <20> parac ) +Line <20> newline +Line <20> newline +Line <21> name while +Line <21> parao ( +Line <21> name music +Line <21> dot . +Line <21> name isPlaying +Line <21> parao ( +Line <21> parac ) +Line <21> parac ) +Line <21> cbracketo { +Line <21> cbracketc } +Line <21> newline +Line <21> newline +Line <22> newline +Line <22> newline +Line <23> bracketo [ +Line <23> name testblock +Line <23> colon : +Line <23> string hehe +Line <23> bracketc ] +Line <23> newline +Line <23> newline +Line <24> string Hello World +Line <24> newline +Line <24> newline +Line <25> name a +Line <25> equal = +Line <25> number 10 +Line <25> newline +Line <25> newline +Line <26> newline +Line <26> newline +Line <27> bracketo [ +Line <27> name Ryan +Line <27> colon : +Line <27> name char +Line <27> bracketc ] +Line <27> newline +Line <27> newline +Line <28> name age +Line <28> equal = +Line <28> number 21 +Line <28> newline +Line <28> newline +Line <29> name money +Line <29> equal = +Line <29> number 1000 +Line <29> newline +Line <29> newline +Line <30> name lname +Line <30> equal = +Line <30> string Ward +Line <30> newline +Line <30> newline +Line <31> name known +Line <31> equal = +Line <31> true true +Line <31> newline +Line <31> newline +Line <32> newline +Line <33> name calm +Line <33> colon : +Line <33> string ./path/to/file +Line <33> newline +Line <33> newline +Line <34> name excited +Line <34> colon : +Line <34> string ./path/to/file +Line <34> newline +Line <34> newline +Line <35> newline +Line <35> newline +Line <36> bracketo [ +Line <36> name John +Line <36> colon : +Line <36> name char +Line <36> bracketc ] +Line <36> newline +Line <36> newline +Line <37> name lname +Line <37> equal = +Line <37> string Johnson +Line <37> newline +Line <37> newline +Line <38> name age +Line <38> equal = +Line <38> number 16 +Line <38> newline +Line <38> newline +Line <39> name money +Line <39> equal = +Line <39> number 100000 +Line <39> newline +Line <39> newline +Line <40> name known +Line <40> equal = +Line <40> true true +Line <40> newline +Line <40> newline +Line <41> newline +Line <41> newline +Line <42> bracketo [ +Line <42> name Bob +Line <42> colon : +Line <42> name char +Line <42> bracketc ] +Line <42> newline +Line <42> newline +Line <43> newline +Line <44> newline +Line <45> name lname +Line <45> equal = +Line <45> string Johnson +Line <45> newline +Line <46> name unknown +Line <46> equal = +Line <46> string Some Random Guy +Line <46> newline +Line <46> newline +Line <47> name age +Line <47> equal = +Line <47> number 24 +Line <47> newline +Line <47> newline +Line <48> name money +Line <48> equal = +Line <48> number 100 +Line <48> newline +Line <48> newline +Line <49> name excited +Line <49> colon : +Line <49> string path/to/file +Line <49> newline +Line <49> newline +Line <49> eof +Line <1> newline +Line <1> newline +Line <1> bracketo [ +Line <1> name default +Line <1> colon : +Line <1> name char +Line <1> bracketc ] +Line <1> newline +Line <1> newline +Line <2> newline +Line <3> name money +Line <3> equal = +Line <3> number 0 +Line <3> newline +Line <3> newline +Line <4> name test +Line <4> equal = +Line <4> nil nil +Line <4> newline +Line <4> newline +Line <5> newline +Line <5> newline +Line <6> bracketo [ +Line <6> name step +Line <6> colon : +Line <6> name function +Line <6> parao ( +Line <6> name a +Line <6> seperator , +Line <6> name b +Line <6> seperator , +Line <6> name c +Line <6> parac ) +Line <6> bracketc ] +Line <6> newline +Line <6> newline +Line <7> string Testing... +Line <7> newline +Line <8> newline +Line <9> name e +Line <9> equal = +Line <9> string somestring +Line <9> newline +Line <9> newline +Line <10> name e +Line <10> equal = +Line <10> nil nil +Line <10> newline +Line <10> newline +Line <11> name g +Line <11> equal = +Line <11> false false +Line <11> newline +Line <11> newline +Line <12> ret +Line <12> name d +Line <12> newline +Line <12> newline +Line <13> newline +Line <13> newline +Line <14> bracketo [ +Line <14> name testINV +Line <14> colon : +Line <14> name env +Line <14> bracketc ] +Line <14> newline +Line <14> newline +Line <15> name slot1 +Line <15> equal = +Line <15> string S1 +Line <15> newline +Line <15> newline +Line <16> name slot2 +Line <16> equal = +Line <16> string S2 +Line <16> newline +Line <16> newline +Line <17> name slot3 +Line <17> equal = +Line <17> string S3 +Line <17> newline +Line <17> newline +Line <18> name slot4 +Line <18> equal = +Line <18> string S4 +Line <18> newline +Line <18> newline +Line <19> name slot5 +Line <19> equal = +Line <19> string S5 +Line <19> newline +Line <19> newline +Line <20> name slot6 +Line <20> equal = +Line <20> string S6 +Line <20> newline +Line <20> newline +Line <21> name slot7 +Line <21> equal = +Line <21> string S7 +Line <21> newline +Line <21> newline +Line <22> name slot8 +Line <22> equal = +Line <22> string S8 +Line <22> newline +Line <22> newline +Line <22> eof +Line <1> newline +Line <1> newline +Line <1> flag +Line <1> name main +Line <1> newline +Line <2> newline +Line <3> flag +Line <3> name omniscient +Line <3> newline +Line <3> newline +Line <4> flag +Line <4> name fullname +Line <4> newline +Line <4> newline +Line <5> flag +Line <5> name forwardlabels +Line <5> newline +Line <6> flag +Line <6> name savestate +Line <6> newline +Line <6> newline +Line <7> newline +Line <8> newline +Line <9> newline +Line <10> flag +Line <10> string loadtest.dms +Line <10> newline +Line <10> newline +Line <11> flag +Line <11> number 0.2 +Line <11> newline +Line <11> newline +Line <12> flag +Line <12> name extendedDefine +Line <12> newline +Line <12> newline +Line <13> newline +Line <14> newline +Line <14> newline +Line <15> name music2 +Line <15> equal = +Line <15> name audio +Line <15> dot dot +Line <15> name loadMusic +Line <15> parao ( +Line <15> string test2.ogg +Line <15> parac ) +Line <15> newline +Line <15> newline +Line <16> name music +Line <16> equal = +Line <16> name audio +Line <16> dot . +Line <16> name loadMusic +Line <16> parao ( +Line <16> string test.ogg +Line <16> parac ) +Line <16> newline +Line <16> newline +Line <17> newline +Line <17> newline +Line <18> bracketo [ +Line <18> name main +Line <18> bracketc ] +Line <18> newline +Line <18> newline +Line <19> newline +Line <20> name music +Line <20> dot . +Line <20> name play +Line <20> parao ( +Line <20> parac ) +Line <20> newline +Line <20> newline +Line <21> name while +Line <21> parao ( +Line <21> name music +Line <21> dot . +Line <21> name isPlaying +Line <21> parao ( +Line <21> parac ) +Line <21> parac ) +Line <21> cbracketo { +Line <21> cbracketc } +Line <21> newline +Line <21> newline +Line <22> newline +Line <22> newline +Line <23> bracketo [ +Line <23> name testblock +Line <23> colon : +Line <23> name metest +Line <23> bracketc ] +Line <23> newline +Line <23> newline +Line <24> string Hello World +Line <24> newline +Line <24> newline +Line <25> name a +Line <25> equal = +Line <25> number 10 +Line <25> newline +Line <25> newline +Line <26> newline +Line <26> newline +Line <27> bracketo [ +Line <27> name Ryan +Line <27> colon : +Line <27> name char +Line <27> bracketc ] +Line <27> newline +Line <27> newline +Line <28> name age +Line <28> equal = +Line <28> number 21 +Line <28> newline +Line <28> newline +Line <29> name money +Line <29> equal = +Line <29> number 1000 +Line <29> newline +Line <29> newline +Line <30> name lname +Line <30> equal = +Line <30> string Ward +Line <30> newline +Line <30> newline +Line <31> name known +Line <31> equal = +Line <31> true true +Line <31> newline +Line <31> newline +Line <32> newline +Line <33> name calm +Line <33> colon : +Line <33> string ./path/to/file +Line <33> newline +Line <33> newline +Line <34> name excited +Line <34> colon : +Line <34> string ./path/to/file +Line <34> newline +Line <34> newline +Line <35> newline +Line <35> newline +Line <36> bracketo [ +Line <36> name John +Line <36> colon : +Line <36> name char +Line <36> bracketc ] +Line <36> newline +Line <36> newline +Line <37> name lname +Line <37> equal = +Line <37> string Johnson +Line <37> newline +Line <37> newline +Line <38> name age +Line <38> equal = +Line <38> number 16 +Line <38> newline +Line <38> newline +Line <39> name money +Line <39> equal = +Line <39> number 100000 +Line <39> newline +Line <39> newline +Line <40> name known +Line <40> equal = +Line <40> true true +Line <40> newline +Line <40> newline +Line <41> newline +Line <41> newline +Line <42> bracketo [ +Line <42> name Bob +Line <42> colon : +Line <42> name char +Line <42> bracketc ] +Line <42> newline +Line <42> newline +Line <43> newline +Line <44> newline +Line <45> name lname +Line <45> equal = +Line <45> string Johnson +Line <45> newline +Line <46> name unknown +Line <46> equal = +Line <46> string Some Random Guy +Line <46> newline +Line <46> newline +Line <47> name age +Line <47> equal = +Line <47> number 24 +Line <47> newline +Line <47> newline +Line <48> name money +Line <48> equal = +Line <48> number 100 +Line <48> newline +Line <48> newline +Line <49> name excited +Line <49> colon : +Line <49> string path/to/file +Line <49> newline +Line <49> newline +Line <49> eof +Line <1> newline +Line <1> newline +Line <1> bracketo [ +Line <1> name default +Line <1> colon : +Line <1> name char +Line <1> bracketc ] +Line <1> newline +Line <1> newline +Line <2> newline +Line <3> name money +Line <3> equal = +Line <3> number 0 +Line <3> newline +Line <3> newline +Line <4> name test +Line <4> equal = +Line <4> nil nil +Line <4> newline +Line <4> newline +Line <5> newline +Line <5> newline +Line <6> bracketo [ +Line <6> name step +Line <6> colon : +Line <6> name function +Line <6> parao ( +Line <6> name a +Line <6> seperator , +Line <6> name b +Line <6> seperator , +Line <6> name c +Line <6> parac ) +Line <6> bracketc ] +Line <6> newline +Line <6> newline +Line <7> string Testing... +Line <7> newline +Line <8> newline +Line <9> name e +Line <9> equal = +Line <9> string somestring +Line <9> newline +Line <9> newline +Line <10> name e +Line <10> equal = +Line <10> nil nil +Line <10> newline +Line <10> newline +Line <11> name g +Line <11> equal = +Line <11> false false +Line <11> newline +Line <11> newline +Line <12> ret +Line <12> name d +Line <12> newline +Line <12> newline +Line <13> newline +Line <13> newline +Line <14> bracketo [ +Line <14> name testINV +Line <14> colon : +Line <14> name env +Line <14> bracketc ] +Line <14> newline +Line <14> newline +Line <15> name slot1 +Line <15> equal = +Line <15> string S1 +Line <15> newline +Line <15> newline +Line <16> name slot2 +Line <16> equal = +Line <16> string S2 +Line <16> newline +Line <16> newline +Line <17> name slot3 +Line <17> equal = +Line <17> string S3 +Line <17> newline +Line <17> newline +Line <18> name slot4 +Line <18> equal = +Line <18> string S4 +Line <18> newline +Line <18> newline +Line <19> name slot5 +Line <19> equal = +Line <19> string S5 +Line <19> newline +Line <19> newline +Line <20> name slot6 +Line <20> equal = +Line <20> string S6 +Line <20> newline +Line <20> newline +Line <21> name slot7 +Line <21> equal = +Line <21> string S7 +Line <21> newline +Line <21> newline +Line <22> name slot8 +Line <22> equal = +Line <22> string S8 +Line <22> newline +Line <22> newline +Line <22> eof +Line <1> newline +Line <1> newline +Line <1> flag +Line <1> name main +Line <1> newline +Line <2> newline +Line <3> flag +Line <3> name omniscient +Line <3> newline +Line <3> newline +Line <4> flag +Line <4> name fullname +Line <4> newline +Line <4> newline +Line <5> flag +Line <5> name forwardlabels +Line <5> newline +Line <6> flag +Line <6> name savestate +Line <6> newline +Line <6> newline +Line <7> newline +Line <8> newline +Line <9> newline +Line <10> flag +Line <10> string loadtest.dms +Line <10> newline +Line <10> newline +Line <11> flag +Line <11> number 0.2 +Line <11> newline +Line <11> newline +Line <12> flag +Line <12> name extendedDefine +Line <12> newline +Line <12> newline +Line <13> newline +Line <14> newline +Line <14> newline +Line <15> name music2 +Line <15> equal = +Line <15> name audio +Line <15> dot dot +Line <15> name loadMusic +Line <15> parao ( +Line <15> string test2.ogg +Line <15> parac ) +Line <15> newline +Line <15> newline +Line <16> name music +Line <16> equal = +Line <16> name audio +Line <16> dot . +Line <16> name loadMusic +Line <16> parao ( +Line <16> string test.ogg +Line <16> parac ) +Line <16> newline +Line <16> newline +Line <17> newline +Line <17> newline +Line <18> bracketo [ +Line <18> name main +Line <18> bracketc ] +Line <18> newline +Line <18> newline +Line <19> newline +Line <20> name music +Line <20> dot . +Line <20> name play +Line <20> parao ( +Line <20> parac ) +Line <20> newline +Line <20> newline +Line <21> name while +Line <21> parao ( +Line <21> name music +Line <21> dot . +Line <21> name isPlaying +Line <21> parao ( +Line <21> parac ) +Line <21> parac ) +Line <21> cbracketo { +Line <21> cbracketc } +Line <21> newline +Line <21> newline +Line <22> newline +Line <22> newline +Line <23> bracketo [ +Line <23> name testblock +Line <23> colon : +Line <23> name metest +Line <23> bracketc ] +Line <23> newline +Line <23> newline +Line <24> string Hello World +Line <24> newline +Line <24> newline +Line <25> name a +Line <25> equal = +Line <25> number 10 +Line <25> newline +Line <25> newline +Line <26> newline +Line <26> newline +Line <27> bracketo [ +Line <27> name Ryan +Line <27> colon : +Line <27> name char +Line <27> bracketc ] +Line <27> newline +Line <27> newline +Line <28> name age +Line <28> equal = +Line <28> number 21 +Line <28> newline +Line <28> newline +Line <29> name money +Line <29> equal = +Line <29> number 1000 +Line <29> newline +Line <29> newline +Line <30> name lname +Line <30> equal = +Line <30> string Ward +Line <30> newline +Line <30> newline +Line <31> name known +Line <31> equal = +Line <31> true true +Line <31> newline +Line <31> newline +Line <32> newline +Line <33> name calm +Line <33> colon : +Line <33> string ./path/to/file +Line <33> newline +Line <33> newline +Line <34> name excited +Line <34> colon : +Line <34> string ./path/to/file +Line <34> newline +Line <34> newline +Line <35> newline +Line <35> newline +Line <36> bracketo [ +Line <36> name John +Line <36> colon : +Line <36> name char +Line <36> bracketc ] +Line <36> newline +Line <36> newline +Line <37> name lname +Line <37> equal = +Line <37> string Johnson +Line <37> newline +Line <37> newline +Line <38> name age +Line <38> equal = +Line <38> number 16 +Line <38> newline +Line <38> newline +Line <39> name money +Line <39> equal = +Line <39> number 100000 +Line <39> newline +Line <39> newline +Line <40> name known +Line <40> equal = +Line <40> true true +Line <40> newline +Line <40> newline +Line <41> newline +Line <41> newline +Line <42> bracketo [ +Line <42> name Bob +Line <42> colon : +Line <42> name char +Line <42> bracketc ] +Line <42> newline +Line <42> newline +Line <43> newline +Line <44> newline +Line <45> name lname +Line <45> equal = +Line <45> string Johnson +Line <45> newline +Line <46> name unknown +Line <46> equal = +Line <46> string Some Random Guy +Line <46> newline +Line <46> newline +Line <47> name age +Line <47> equal = +Line <47> number 24 +Line <47> newline +Line <47> newline +Line <48> name money +Line <48> equal = +Line <48> number 100 +Line <48> newline +Line <48> newline +Line <49> name excited +Line <49> colon : +Line <49> string path/to/file +Line <49> newline +Line <49> newline +Line <49> eof +Line <1> newline +Line <1> newline +Line <1> bracketo [ +Line <1> name default +Line <1> colon : +Line <1> name char +Line <1> bracketc ] +Line <1> newline +Line <1> newline +Line <2> newline +Line <3> name money +Line <3> equal = +Line <3> number 0 +Line <3> newline +Line <3> newline +Line <4> name test +Line <4> equal = +Line <4> nil nil +Line <4> newline +Line <4> newline +Line <5> newline +Line <5> newline +Line <6> bracketo [ +Line <6> name step +Line <6> colon : +Line <6> name function +Line <6> parao ( +Line <6> name a +Line <6> seperator , +Line <6> name b +Line <6> seperator , +Line <6> name c +Line <6> parac ) +Line <6> bracketc ] +Line <6> newline +Line <6> newline +Line <7> string Testing... +Line <7> newline +Line <8> newline +Line <9> name e +Line <9> equal = +Line <9> string somestring +Line <9> newline +Line <9> newline +Line <10> name e +Line <10> equal = +Line <10> nil nil +Line <10> newline +Line <10> newline +Line <11> name g +Line <11> equal = +Line <11> false false +Line <11> newline +Line <11> newline +Line <12> ret +Line <12> name d +Line <12> newline +Line <12> newline +Line <13> newline +Line <13> newline +Line <14> bracketo [ +Line <14> name testINV +Line <14> colon : +Line <14> name env +Line <14> bracketc ] +Line <14> newline +Line <14> newline +Line <15> name slot1 +Line <15> equal = +Line <15> string S1 +Line <15> newline +Line <15> newline +Line <16> name slot2 +Line <16> equal = +Line <16> string S2 +Line <16> newline +Line <16> newline +Line <17> name slot3 +Line <17> equal = +Line <17> string S3 +Line <17> newline +Line <17> newline +Line <18> name slot4 +Line <18> equal = +Line <18> string S4 +Line <18> newline +Line <18> newline +Line <19> name slot5 +Line <19> equal = +Line <19> string S5 +Line <19> newline +Line <19> newline +Line <20> name slot6 +Line <20> equal = +Line <20> string S6 +Line <20> newline +Line <20> newline +Line <21> name slot7 +Line <21> equal = +Line <21> string S7 +Line <21> newline +Line <21> newline +Line <22> name slot8 +Line <22> equal = +Line <22> string S8 +Line <22> newline +Line <22> newline +Line <22> eof +Line <1> newline +Line <1> newline +Line <1> flag +Line <1> name main +Line <1> newline +Line <2> newline +Line <3> flag +Line <3> name omniscient +Line <3> newline +Line <3> newline +Line <4> flag +Line <4> name fullname +Line <4> newline +Line <4> newline +Line <5> flag +Line <5> name forwardlabels +Line <5> newline +Line <6> flag +Line <6> name savestate +Line <6> newline +Line <6> newline +Line <7> newline +Line <8> newline +Line <9> newline +Line <10> flag +Line <10> string loadtest.dms +Line <10> newline +Line <10> newline +Line <11> flag +Line <11> number 0.2 +Line <11> newline +Line <11> newline +Line <12> flag +Line <12> name extendedDefine +Line <12> newline +Line <12> newline +Line <13> newline +Line <14> newline +Line <14> newline +Line <15> name music2 +Line <15> equal = +Line <15> name audio +Line <15> dot dot +Line <15> name loadMusic +Line <15> parao ( +Line <15> string test2.ogg +Line <15> parac ) +Line <15> newline +Line <15> newline +Line <16> name music +Line <16> equal = +Line <16> name audio +Line <16> dot . +Line <16> name loadMusic +Line <16> parao ( +Line <16> string test.ogg +Line <16> parac ) +Line <16> newline +Line <16> newline +Line <17> newline +Line <17> newline +Line <18> bracketo [ +Line <18> name main +Line <18> bracketc ] +Line <18> newline +Line <18> newline +Line <19> newline +Line <20> name music +Line <20> dot . +Line <20> name play +Line <20> parao ( +Line <20> parac ) +Line <20> newline +Line <20> newline +Line <21> name while +Line <21> parao ( +Line <21> name music +Line <21> dot . +Line <21> name isPlaying +Line <21> parao ( +Line <21> parac ) +Line <21> parac ) +Line <21> cbracketo { +Line <21> cbracketc } +Line <21> newline +Line <21> newline +Line <22> newline +Line <22> newline +Line <23> bracketo [ +Line <23> name testblock +Line <23> colon : +Line <23> name metest +Line <23> bracketc ] +Line <23> newline +Line <23> newline +Line <24> string Hello World +Line <24> newline +Line <24> newline +Line <25> name a +Line <25> equal = +Line <25> number 10 +Line <25> newline +Line <25> newline +Line <26> newline +Line <26> newline +Line <27> bracketo [ +Line <27> name Ryan +Line <27> colon : +Line <27> name char +Line <27> bracketc ] +Line <27> newline +Line <27> newline +Line <28> name age +Line <28> equal = +Line <28> number 21 +Line <28> newline +Line <28> newline +Line <29> name money +Line <29> equal = +Line <29> number 1000 +Line <29> newline +Line <29> newline +Line <30> name lname +Line <30> equal = +Line <30> string Ward +Line <30> newline +Line <30> newline +Line <31> name known +Line <31> equal = +Line <31> true true +Line <31> newline +Line <31> newline +Line <32> newline +Line <33> name calm +Line <33> colon : +Line <33> string ./path/to/file +Line <33> newline +Line <33> newline +Line <34> name excited +Line <34> colon : +Line <34> string ./path/to/file +Line <34> newline +Line <34> newline +Line <35> newline +Line <35> newline +Line <36> bracketo [ +Line <36> name John +Line <36> colon : +Line <36> name char +Line <36> bracketc ] +Line <36> newline +Line <36> newline +Line <37> name lname +Line <37> equal = +Line <37> string Johnson +Line <37> newline +Line <37> newline +Line <38> name age +Line <38> equal = +Line <38> number 16 +Line <38> newline +Line <38> newline +Line <39> name money +Line <39> equal = +Line <39> number 100000 +Line <39> newline +Line <39> newline +Line <40> name known +Line <40> equal = +Line <40> true true +Line <40> newline +Line <40> newline +Line <41> newline +Line <41> newline +Line <42> bracketo [ +Line <42> name Bob +Line <42> colon : +Line <42> name char +Line <42> bracketc ] +Line <42> newline +Line <42> newline +Line <43> newline +Line <44> newline +Line <45> name lname +Line <45> equal = +Line <45> string Johnson +Line <45> newline +Line <46> name unknown +Line <46> equal = +Line <46> string Some Random Guy +Line <46> newline +Line <46> newline +Line <47> name age +Line <47> equal = +Line <47> number 24 +Line <47> newline +Line <47> newline +Line <48> name money +Line <48> equal = +Line <48> number 100 +Line <48> newline +Line <48> newline +Line <49> name excited +Line <49> colon : +Line <49> string path/to/file +Line <49> newline +Line <49> newline +Line <49> eof Line <1> newline Line <1> newline Line <1> bracketo [ diff --git a/DMS/enviroment.h b/DMS/enviroment.h index 8f62d38..8efcc3d 100644 --- a/DMS/enviroment.h +++ b/DMS/enviroment.h @@ -4,15 +4,9 @@ #include "memory.h" #include "Invoker.h" namespace dms { - enum class env_type { - env, - character, - function - }; struct enviroment : Invoker { std::string name = ""; memory values; - env_type type = env_type::env; bool has(std::string index); void set(std::string index, value val); value get(std::string index); diff --git a/DMS/sound.cpp b/DMS/sound.cpp index 5f1f670..c5b60f5 100644 --- a/DMS/sound.cpp +++ b/DMS/sound.cpp @@ -58,6 +58,12 @@ namespace dms::audio { return "stopped"; } } + value isPlaying(void* self, dms_state* state, dms_args* args) { + return ((sf::Music*)self)->getStatus() == sf::Music::Status::Playing; + } + value isPaused(void* self, dms_state* state, dms_args* args) { + return ((sf::Music*)self)->getStatus() == sf::Music::Status::Paused; + } // The customtype will be "sound" // We need to assoiate the sound type with an invoker so the interperter knows how to handle it @@ -72,19 +78,18 @@ namespace dms::audio { inv->registerFunction("setPitch", setPitch); inv->registerFunction("setVolume", setVolume); inv->registerFunction("getStatus", getStatus); + inv->registerFunction("isPlaying", isPlaying); + inv->registerFunction("isPaused", isPaused); auto* env = new enviroment; env->registerFunction("loadMusic", loadMusic); state->assoiateType("audiostream",inv); state->injectEnv("audio",env); - - //state->invoker.registerFunction("loadMusic", loadMusic); } value loadMusic(void* self, dms_state* state, dms_args* args) { if (args->size() || args->args[0].resolve(state).type == datatypes::string) { - sf::Music* music = new sf::Music; if (!music->openFromFile(args->args[0].getString())) { return value("Cannot open audio stream!", datatypes::error); diff --git a/DMS/test.dms b/DMS/test.dms index b100053..35f47b9 100644 --- a/DMS/test.dms +++ b/DMS/test.dms @@ -17,69 +17,12 @@ music = audio.loadMusic("test.ogg") [main] // Let's extend the base feature set - music2.play() - music2.setVolume(50) - Ryan: "Hello how are you?" - Bob: "Slot 3 = " + testINV["slot3"] + music.play() + while(music.isPlaying()){} - //print("Sound finished!") - wait 5 - setBG("background2.jpg") - - Ryan: "Hello how are you?" - wait 3 - Bob: "I'm good how are you?" - wait 3 - Ryan: "I am great :D" - - a=0 - // {} Still errors out, this needs to be fixed!!! - while(music2.getStatus()!="stopped"){} - // a = 0 - // while (true){ - // asm { - // add %a %a 1 - // add %p "a = " %a - // func %print nil %p - // } - // a = a + 1 - // print("a = " + a) - // } - // while(true){ - // song = SelectSong() - // player(song) - // } - -[SelectSong:function()] - choice "Pick song:" { - "Music 1" { - return music - } - "Music 2" { - return music2 - } - } - -[player:function(song,food)] - choice "What you wanna do?" { - "play/resume" { - song.play() - player(song) - } - "pause" { - song.pause() - player(song) - } - "stop" { - song.stop() - player(song) - } - "newSong" { - song.stop() - player(song) - } - "quit" exit 0 - } +[testblock:metest] + "Hello World" + a = 10 [Ryan:char] age = 21 diff --git a/DMS_DLL/DMS_DLL.vcxproj b/DMS_DLL/DMS_DLL.vcxproj new file mode 100644 index 0000000..5402a80 --- /dev/null +++ b/DMS_DLL/DMS_DLL.vcxproj @@ -0,0 +1,178 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {b9978d79-836d-4a4d-9bfe-4ede7b1baf9f} + DMSDLL + 10.0 + + + + DynamicLibrary + true + v142 + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + DynamicLibrary + true + v142 + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;DMSDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + false + + + + + Level3 + true + true + true + WIN32;NDEBUG;DMSDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + + + + + Level3 + true + _DEBUG;DMSDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + stdcpp17 + %(AdditionalIncludeDirectories) + + + Windows + true + false + + + + + Level3 + true + true + true + NDEBUG;DMSDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + + + + + + + + + + + Create + Create + Create + Create + + + + + + {0ecf46c1-eb08-4f8e-8acb-002e38bfc1fa} + + + + + + \ No newline at end of file diff --git a/DMS_DLL/DMS_DLL.vcxproj.filters b/DMS_DLL/DMS_DLL.vcxproj.filters new file mode 100644 index 0000000..640ae4c --- /dev/null +++ b/DMS_DLL/DMS_DLL.vcxproj.filters @@ -0,0 +1,39 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/DMS_DLL/dllmain.cpp b/DMS_DLL/dllmain.cpp new file mode 100644 index 0000000..f266597 --- /dev/null +++ b/DMS_DLL/dllmain.cpp @@ -0,0 +1,19 @@ +// dllmain.cpp : Defines the entry point for the DLL application. +#include "pch.h" + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} + diff --git a/DMS_DLL/dmsFunctions.cpp b/DMS_DLL/dmsFunctions.cpp new file mode 100644 index 0000000..4345aca --- /dev/null +++ b/DMS_DLL/dmsFunctions.cpp @@ -0,0 +1,2 @@ +#include "pch.h" +#include "dmsFunctions.h" diff --git a/DMS_DLL/dmsFunctions.h b/DMS_DLL/dmsFunctions.h new file mode 100644 index 0000000..92ee8d8 --- /dev/null +++ b/DMS_DLL/dmsFunctions.h @@ -0,0 +1,165 @@ +#pragma once +extern "C" { + typedef unsigned long int uint; + // Define variables + typedef void* DMS_STATE; + typedef void* DMS_ENV; + typedef void* DMS_CHAR; + typedef void* DMS_CHUNK; + typedef void* DMS_INVK; + typedef void* DMS_MEM; + typedef void* DMS_CONN; + typedef void* DMS_MSG; + struct DMS_VAL; + typedef void* DMS_LIST; + typedef void* DMS_BLOCK; + typedef void* DMS_MEMSTACK; + typedef void* DMS_STATSTACK; + typedef void* DMS_STAT; + typedef void* DMS_ARGS; + typedef void* DMS_TOKENSTREAM; + typedef uint DMS_TOKENTYPE; + typedef uint DMS_OP; + + struct DMS_CBLOCK { + DMS_CHUNK chunk; + const char* type; + DMS_TOKENSTREAM toks; + }; + + struct DMS_TOKEN { + DMS_TOKENTYPE type; + DMS_OP raw; + const char* name; + unsigned long long line_num = 0; + }; + + struct DMS_CMD { + uint opcode; + DMS_ARGS args; + }; + + struct DMS_LABEL { + const char* label; + uint pos; + }; + + typedef void(*DMS_FUNC)(void*, DMS_STATE, DMS_ARGS); + + // Code Execution + DMS_STATE dms_loadFile(const char*); + bool dms_loadFileB(DMS_STATE, const char*); + DMS_STATE dms_loadString(const char*); + bool dms_loadStringB(DMS_STATE, const char*); + bool dms_loopState(DMS_STATE); + bool dms_nextState(DMS_STATE); + + // Token Handling + DMS_TOKEN dms_next(DMS_TOKENSTREAM); + DMS_TOKEN dms_prev(DMS_TOKENSTREAM); + DMS_TOKEN dms_chomp(DMS_TOKENSTREAM, DMS_TOKEN); + DMS_TOKEN* dms_nextBalanced(DMS_TOKENSTREAM,DMS_TOKEN, DMS_TOKEN); + DMS_TOKEN* dms_nextBalancedNL(DMS_TOKENSTREAM, DMS_TOKEN, DMS_TOKEN,bool); + DMS_TOKEN dms_peek(DMS_TOKENSTREAM); + DMS_TOKEN dms_last(DMS_TOKENSTREAM); + DMS_TOKEN dms_nextUntil(DMS_TOKENSTREAM,DMS_TOKEN); + bool dms_can(DMS_TOKENSTREAM); + bool dms_match(DMS_TOKENSTREAM, uint, DMS_TOKEN*); + bool dms_hasScope(DMS_TOKENSTREAM, uint); + + // Connection Handling + int dms_connectText(DMS_CONN, void(*)(DMS_MSG)); + int dms_connectAppend(DMS_CONN, void(*)(DMS_MSG)); + int dms_connectHandleHalt(DMS_CONN, void(*)(DMS_STATE)); + int dms_connectCBlock(DMS_CONN, void(*)(DMS_CBLOCK)); + + // Message Handling + DMS_CHAR dms_getCharacter(DMS_MSG); + const char* dms_getText(DMS_MSG); + + // Value Handling + DMS_VAL* dms_getValue(DMS_STATE, const char*); + uint dms_getType(DMS_VAL*); + long long int dms_getInt(DMS_VAL*); + double dms_getDouble(DMS_VAL*); + bool dms_getBool(DMS_VAL*); + bool dms_isNil(DMS_VAL*); + DMS_ENV dms_getEnviroment(DMS_VAL*); + const char* dms_getString(DMS_VAL*); + DMS_BLOCK dms_getBlock(DMS_VAL*); + DMS_LIST dms_getList(DMS_VAL*); + // Value Creation + DMS_VAL* dms_newInt(long long int); + DMS_VAL* dms_newDouble(double); + DMS_VAL* dms_newString(const char*); + DMS_VAL* dms_newBool(bool); + DMS_VAL* dms_newNIL(); + DMS_VAL* dms_newList(DMS_LIST); + + // Custom Value Creation + DMS_VAL* dms_newValue(DMS_STATE,void*,const char*); + + // List Handling + uint dms_getLength(DMS_LIST); + DMS_VAL* dms_listGet(DMS_LIST, uint); + void dms_listSet(DMS_LIST, uint); + // List Creation + DMS_LIST dms_newList(uint, DMS_VAL**); + + // Args Handling + uint dms_getLength(DMS_ARGS); + DMS_VAL* dms_getArg(DMS_ARGS, uint); + void dms_pushArg(DMS_ARGS, DMS_VAL*); + // Args Creation + DMS_ARGS dms_newArgs(); + DMS_ARGS dms_newArgsN(uint); + + // Invoker Handling + bool dms_registerFunction(DMS_INVK,const char*, DMS_FUNC); + bool dms_registerFunctionOverride(DMS_INVK, const char*, DMS_FUNC); + DMS_VAL* dms_invokeA(DMS_INVK, const char*, DMS_STATE, DMS_ARGS); + DMS_VAL* dms_invokeB(DMS_INVK, void* ref, const char*, DMS_STATE, DMS_ARGS); + // Invoker Creation + DMS_INVK dms_newInvoker(); + + // Enviroment Handling + bool dms_registerEnvFunction(DMS_INVK, const char*, DMS_FUNC); + bool dms_registerEnvFunctionOverride(DMS_INVK, const char*, DMS_FUNC); + DMS_VAL* dms_env_InvokeA(DMS_INVK, const char*, DMS_STATE, DMS_ARGS); + DMS_VAL* dms_env_InvokeB(DMS_INVK, void* ref, const char*, DMS_STATE, DMS_ARGS); + DMS_VAL* dms_indexENV(const char*); + void dms_setENV(const char*, DMS_VAL*); + DMS_MEM dms_getEnvMem(DMS_ENV); + void dms_setEnvMem(DMS_ENV, DMS_MEM); + const char* dms_getEnvName(DMS_ENV); + bool dms_envHas(DMS_ENV, const char*); + void dms_envSet(DMS_ENV, const char*, DMS_VAL*); + DMS_VAL* dms_envGet(DMS_ENV, const char*); + // Enviroment Creation + DMS_ENV dms_newEnviroment(); + + // Memory Handling + uint dms_memCount(DMS_MEM, const char*); + void dms_memErase(DMS_MEM, const char*); + DMS_VAL* dms_memGet(DMS_MEM, const char*); + void dms_memSet(DMS_MEM, const char*,DMS_VAL*); + DMS_MEM dms_getParent(DMS_MEM); + // Memory Creation + DMS_MEM dms_newMemory(); + + // Chunk Handling + uint dms_getChunkType(DMS_CHUNK); + DMS_ARGS dms_getChunkParams(DMS_CHUNK); + const char* dms_getChunkName(DMS_CHUNK); + DMS_CMD* dms_getCmds(DMS_CHUNK); + void dms_addLabel(DMS_CHUNK,const char*, DMS_LABEL); + DMS_LABEL* dms_getLabels(DMS_CHUNK); + void dms_setChunkType(DMS_CHUNK, uint); + + // State Handling + bool dms_assoiateType(DMS_STATE, const char*, DMS_INVK); + bool dms_injectEnv(DMS_STATE, const char*, DMS_ENV); + DMS_INVK dms_getStateInvoker(DMS_STATE); + +} + diff --git a/DMS_DLL/framework.h b/DMS_DLL/framework.h new file mode 100644 index 0000000..54b83e9 --- /dev/null +++ b/DMS_DLL/framework.h @@ -0,0 +1,5 @@ +#pragma once + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +// Windows Header Files +#include diff --git a/DMS_DLL/pch.cpp b/DMS_DLL/pch.cpp new file mode 100644 index 0000000..64b7eef --- /dev/null +++ b/DMS_DLL/pch.cpp @@ -0,0 +1,5 @@ +// pch.cpp: source file corresponding to the pre-compiled header + +#include "pch.h" + +// When you are using pre-compiled headers, this source file is necessary for compilation to succeed. diff --git a/DMS_DLL/pch.h b/DMS_DLL/pch.h new file mode 100644 index 0000000..885d5d6 --- /dev/null +++ b/DMS_DLL/pch.h @@ -0,0 +1,13 @@ +// pch.h: This is a precompiled header file. +// Files listed below are compiled only once, improving build performance for future builds. +// This also affects IntelliSense performance, including code completion and many code browsing features. +// However, files listed here are ALL re-compiled if any one of them is updated between builds. +// Do not add files here that you will be updating frequently as this negates the performance advantage. + +#ifndef PCH_H +#define PCH_H + +// add headers that you want to pre-compile here +#include "framework.h" + +#endif //PCH_H