Custom datatypes mostly implemented
This commit is contained in:
parent
2e298fab80
commit
8ad61af59d
@ -111,12 +111,12 @@
|
|||||||
<ClCompile Include="Invoker.cpp">
|
<ClCompile Include="Invoker.cpp">
|
||||||
<Filter>Source Files\DMS\objects</Filter>
|
<Filter>Source Files\DMS\objects</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="sound.cpp">
|
|
||||||
<Filter>Source Files\DMS\standardMethods</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="pch.cpp">
|
<ClCompile Include="pch.cpp">
|
||||||
<Filter>Source Files\DMS</Filter>
|
<Filter>Source Files\DMS</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="sound.cpp">
|
||||||
|
<Filter>Source Files\DMS\platformdep</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="value.h">
|
<ClInclude Include="value.h">
|
||||||
@ -182,11 +182,11 @@
|
|||||||
<ClInclude Include="s_value.h">
|
<ClInclude Include="s_value.h">
|
||||||
<Filter>Header Files\DMS\C-API</Filter>
|
<Filter>Header Files\DMS\C-API</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="sound.h">
|
|
||||||
<Filter>Header Files\DMS\standardMethods</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="pch.h">
|
<ClInclude Include="pch.h">
|
||||||
<Filter>Header Files\DMS</Filter>
|
<Filter>Header Files\DMS</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="sound.h">
|
||||||
|
<Filter>Header Files\DMS\platformdep</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@ -43,7 +43,7 @@ namespace dms {
|
|||||||
c->opcode = codes::KNOT;
|
c->opcode = codes::KNOT;
|
||||||
c->args.push(assn);
|
c->args.push(assn);
|
||||||
current_chunk->addCmd(c);
|
current_chunk->addCmd(c);
|
||||||
v.set(assn.s);
|
v.set(assn.getString());
|
||||||
v.type = variable;
|
v.type = variable;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -64,7 +64,7 @@ namespace dms {
|
|||||||
tokenstream tempstream(&toks);
|
tokenstream tempstream(&toks);
|
||||||
value var(datatypes::variable);
|
value var(datatypes::variable);
|
||||||
if (match_process_standard(&tempstream, var)) {
|
if (match_process_standard(&tempstream, var)) {
|
||||||
v.set(var.s);
|
v.set(var.getString());
|
||||||
v.type = datatypes::variable;
|
v.type = datatypes::variable;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -178,7 +178,7 @@ namespace dms {
|
|||||||
value var = value(datatypes::variable);
|
value var = value(datatypes::variable);
|
||||||
// We have some work to do here
|
// We have some work to do here
|
||||||
if (match_process_standard(stream, right)) {
|
if (match_process_standard(stream, right)) {
|
||||||
v.set(var.s);
|
v.set(var.getString());
|
||||||
v.type = datatypes::variable;
|
v.type = datatypes::variable;
|
||||||
cmd* c = new cmd;
|
cmd* c = new cmd;
|
||||||
c->opcode = code;
|
c->opcode = code;
|
||||||
@ -242,7 +242,7 @@ namespace dms {
|
|||||||
value var = value(datatypes::variable);
|
value var = value(datatypes::variable);
|
||||||
// COMP cmp out v1 v2
|
// COMP cmp out v1 v2
|
||||||
if (match_process_standard(stream,right)) {
|
if (match_process_standard(stream,right)) {
|
||||||
v.set(var.s);
|
v.set(var.getString());
|
||||||
v.type = datatypes::variable;
|
v.type = datatypes::variable;
|
||||||
cmd* c = new cmd;
|
cmd* c = new cmd;
|
||||||
c->opcode = codes::COMP;
|
c->opcode = codes::COMP;
|
||||||
|
|||||||
@ -459,7 +459,7 @@ namespace dms {
|
|||||||
// We got a name which is refering to a variable so lets build one
|
// We got a name which is refering to a variable so lets build one
|
||||||
value v;
|
value v;
|
||||||
v.type = datatypes::variable; // Special type, it writes data to the string portion, but is interperted as a lookup
|
v.type = datatypes::variable; // Special type, it writes data to the string portion, but is interperted as a lookup
|
||||||
v.s = tokens[i].name;
|
v.getString() = tokens[i].name;
|
||||||
args.push(v);
|
args.push(v);
|
||||||
}
|
}
|
||||||
else if (tokens[i].type == tokens::seperator) {
|
else if (tokens[i].type == tokens::seperator) {
|
||||||
|
|||||||
@ -21,6 +21,9 @@ namespace dms {
|
|||||||
return datatype[args->args[0].type];
|
return datatype[args->args[0].type];
|
||||||
}
|
}
|
||||||
return "nil";
|
return "nil";
|
||||||
|
}
|
||||||
|
value concat(void* self, dms_state* state, dms_args* args) {
|
||||||
|
|
||||||
}
|
}
|
||||||
void init(dms_state* state) {
|
void init(dms_state* state) {
|
||||||
state->invoker.registerFunction("print", print);
|
state->invoker.registerFunction("print", print);
|
||||||
|
|||||||
@ -3,7 +3,5 @@
|
|||||||
namespace dms {
|
namespace dms {
|
||||||
namespace core {
|
namespace core {
|
||||||
void init(dms_state* state);
|
void init(dms_state* state);
|
||||||
value print(void* self, dms_state* state, dms_args* args);
|
|
||||||
value type(void* self, dms_state* state, dms_args* args);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -19,7 +19,7 @@ namespace dms {
|
|||||||
if (!state->run(func, Fmem)) {
|
if (!state->run(func, Fmem)) {
|
||||||
std::vector<value> err = Fmem->examine(datatypes::error);
|
std::vector<value> err = Fmem->examine(datatypes::error);
|
||||||
if (err.size() > 0)
|
if (err.size() > 0)
|
||||||
state->push_error(errors::error{ errors::unknown ,err[0].s });
|
state->push_error(errors::error{ errors::unknown ,err[0].getString() });
|
||||||
else
|
else
|
||||||
state->push_error(errors::error{ errors::unknown ,"Function Returned an error!" });
|
state->push_error(errors::error{ errors::unknown ,"Function Returned an error!" });
|
||||||
state->popMem();// We need to restore the stack
|
state->popMem();// We need to restore the stack
|
||||||
@ -182,7 +182,7 @@ namespace dms {
|
|||||||
bool dms_state::assign(value var, value val) {
|
bool dms_state::assign(value var, value val) {
|
||||||
if (val.type == datatypes::error) {
|
if (val.type == datatypes::error) {
|
||||||
(*getMem())[var.getPrintable()] = val;
|
(*getMem())[var.getPrintable()] = val;
|
||||||
push_error(errors::error{ errors::unknown ,val.s });
|
push_error(errors::error{ errors::unknown ,val.getString() });
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
val.state = this;
|
val.state = this;
|
||||||
|
|||||||
@ -259,7 +259,7 @@ namespace dms {
|
|||||||
{
|
{
|
||||||
if (c->args.args[0].resolve(this).type == datatypes::custom) {
|
if (c->args.args[0].resolve(this).type == datatypes::custom) {
|
||||||
auto cust = c->args.args[0].resolve(this);
|
auto cust = c->args.args[0].resolve(this);
|
||||||
auto fname = c->args.args[1].s;
|
auto fname = c->args.args[1].getString();
|
||||||
auto assn = c->args.args[2];
|
auto assn = c->args.args[2];
|
||||||
dms_args args;
|
dms_args args;
|
||||||
|
|
||||||
@ -340,15 +340,15 @@ namespace dms {
|
|||||||
value env = c->args.args[1];
|
value env = c->args.args[1];
|
||||||
value indx = c->args.args[2].resolve(this);
|
value indx = c->args.args[2].resolve(this);
|
||||||
value assn = c->args.args[3].resolve(this);
|
value assn = c->args.args[3].resolve(this);
|
||||||
if (env.type == datatypes::block && blockExists(env.s)) { // If this is a block let's handle this
|
if (env.type == datatypes::block && blockExists(env.getString())) { // If this is a block let's handle this
|
||||||
enviroment* e = nullptr;
|
enviroment* e = nullptr;
|
||||||
if (environments.count(env.s)) {
|
if (environments.count(env.getString())) {
|
||||||
e = environments[env.s];
|
e = environments[env.getString()];
|
||||||
}
|
}
|
||||||
else if (characters.count(env.s)) {
|
else if (characters.count(env.getString())) {
|
||||||
e = characters[env.s];
|
e = characters[env.getString()];
|
||||||
}
|
}
|
||||||
e->values[indx.s] = assn;
|
e->values[indx.getString()] = assn;
|
||||||
}
|
}
|
||||||
else if (env.type == datatypes::env) {
|
else if (env.type == datatypes::env) {
|
||||||
if (indx.type == datatypes::number) {
|
if (indx.type == datatypes::number) {
|
||||||
@ -437,13 +437,13 @@ namespace dms {
|
|||||||
value assn = c->args.args[0];
|
value assn = c->args.args[0];
|
||||||
value env = c->args.args[1];
|
value env = c->args.args[1];
|
||||||
value indx = c->args.args[2].resolve(this);
|
value indx = c->args.args[2].resolve(this);
|
||||||
if (env.type == datatypes::block && blockExists(env.s)) { // If this is a block let's handle this
|
if (env.type == datatypes::block && blockExists(env.getString())) { // If this is a block let's handle this
|
||||||
enviroment* e = nullptr;
|
enviroment* e = nullptr;
|
||||||
if (environments.count(env.s)) {
|
if (environments.count(env.getString())) {
|
||||||
e = environments[env.s];
|
e = environments[env.getString()];
|
||||||
}
|
}
|
||||||
else if (characters.count(env.s)) {
|
else if (characters.count(env.getString())) {
|
||||||
e = characters[env.s];
|
e = characters[env.getString()];
|
||||||
}
|
}
|
||||||
if(!assign( assn, e->values[indx.getPrintable()])) {
|
if(!assign( assn, e->values[indx.getPrintable()])) {
|
||||||
return false;
|
return false;
|
||||||
@ -556,13 +556,13 @@ namespace dms {
|
|||||||
break;
|
break;
|
||||||
case SSPK:
|
case SSPK:
|
||||||
//Because we are using void* we must cast our pointers
|
//Because we are using void* we must cast our pointers
|
||||||
if (characterExists(c->args.args[0].s)){
|
if (characterExists(c->args.args[0].getString())){
|
||||||
speaker = getCharacter(c->args.args[0].s);
|
speaker = getCharacter(c->args.args[0].getString());
|
||||||
if (!handler->handleSpeaker(this, speaker))
|
if (!handler->handleSpeaker(this, speaker))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
push_error(errors::error{ errors::disp_unknown,concat("Unknown character '",c->args.args[0].s,"'!")});
|
push_error(errors::error{ errors::disp_unknown,concat("Unknown character '",c->args.args[0].getString(),"'!")});
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -572,7 +572,7 @@ namespace dms {
|
|||||||
break;
|
break;
|
||||||
case CHAR:
|
case CHAR:
|
||||||
{
|
{
|
||||||
std::string cha = c->args.args[0].s;
|
std::string cha = c->args.args[0].getString();
|
||||||
getCharacter(cha);
|
getCharacter(cha);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -596,10 +596,10 @@ namespace dms {
|
|||||||
//Because we are using void* we must cast our pointers
|
//Because we are using void* we must cast our pointers
|
||||||
{
|
{
|
||||||
std::vector<std::string> args;
|
std::vector<std::string> args;
|
||||||
std::string prompt = c->args.args[0].s;
|
std::string prompt = c->args.args[0].getString();
|
||||||
std::string fn = c->args.args[1].s;
|
std::string fn = c->args.args[1].getString();
|
||||||
for (size_t i = 2; i < c->args.args.size(); i++)
|
for (size_t i = 2; i < c->args.args.size(); i++)
|
||||||
args.push_back(c->args.args[i].resolve(this).s);
|
args.push_back(c->args.args[i].resolve(this).getString());
|
||||||
size_t npos = handler->handleChoice(this, prompt, args);
|
size_t npos = handler->handleChoice(this, prompt, args);
|
||||||
size_t nnpos = seek(concat("CHOI_", fn, "_", npos),cmds,LABL,pos);
|
size_t nnpos = seek(concat("CHOI_", fn, "_", npos),cmds,LABL,pos);
|
||||||
if (!nnpos) {
|
if (!nnpos) {
|
||||||
@ -614,7 +614,7 @@ namespace dms {
|
|||||||
case JUMP:
|
case JUMP:
|
||||||
// Value assert resolves the data so a variable must eventually equal a string
|
// Value assert resolves the data so a variable must eventually equal a string
|
||||||
if (utils::valueassert(c->args, this, datatypes::string)) {
|
if (utils::valueassert(c->args, this, datatypes::string)) {
|
||||||
std::string block = c->args.args[0].resolve(this).s;
|
std::string block = c->args.args[0].resolve(this).getString();
|
||||||
if (chunks[block] == NULL) {
|
if (chunks[block] == NULL) {
|
||||||
push_error(errors::error{ errors::non_existing_block ,utils::concat("Attempted to Jump to a non existing block [",block,"]") });
|
push_error(errors::error{ errors::non_existing_block ,utils::concat("Attempted to Jump to a non existing block [",block,"]") });
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
BIN
DMS/dump.bin
BIN
DMS/dump.bin
Binary file not shown.
366
DMS/dump.txt
366
DMS/dump.txt
@ -33,55 +33,108 @@ Line <12> name extendedDefine
|
|||||||
Line <12> newline
|
Line <12> newline
|
||||||
Line <12> newline
|
Line <12> newline
|
||||||
Line <13> newline
|
Line <13> newline
|
||||||
Line <14> name music
|
|
||||||
Line <14> equal =
|
|
||||||
Line <14> name loadMusic
|
|
||||||
Line <14> parao (
|
|
||||||
Line <14> string test2.ogg
|
|
||||||
Line <14> parac )
|
|
||||||
Line <14> newline
|
Line <14> newline
|
||||||
Line <14> newline
|
Line <14> newline
|
||||||
Line <15> name music2
|
Line <15> name music
|
||||||
Line <15> equal =
|
Line <15> equal =
|
||||||
Line <15> name loadMusic
|
Line <15> name loadMusic
|
||||||
Line <15> parao (
|
Line <15> parao (
|
||||||
Line <15> string test.ogg
|
Line <15> string test2.ogg
|
||||||
Line <15> parac )
|
Line <15> parac )
|
||||||
Line <15> newline
|
Line <15> newline
|
||||||
Line <15> newline
|
Line <15> newline
|
||||||
Line <16> bracketo [
|
Line <16> name music2
|
||||||
Line <16> name main
|
Line <16> equal =
|
||||||
Line <16> bracketc ]
|
Line <16> name loadMusic
|
||||||
|
Line <16> parao (
|
||||||
|
Line <16> string test.ogg
|
||||||
|
Line <16> parac )
|
||||||
Line <16> newline
|
Line <16> newline
|
||||||
Line <16> newline
|
Line <16> newline
|
||||||
Line <17> name a
|
|
||||||
Line <17> equal =
|
|
||||||
Line <17> number 10
|
|
||||||
Line <17> newline
|
Line <17> newline
|
||||||
Line <17> newline
|
Line <17> newline
|
||||||
Line <18> name tester
|
Line <18> bracketo [
|
||||||
Line <18> parao (
|
Line <18> name main
|
||||||
Line <18> parac )
|
Line <18> bracketc ]
|
||||||
Line <18> newline
|
Line <18> newline
|
||||||
Line <18> newline
|
Line <18> newline
|
||||||
Line <19> name print
|
|
||||||
Line <19> parao (
|
|
||||||
Line <19> string a =
|
|
||||||
Line <19> plus +
|
|
||||||
Line <19> name a
|
|
||||||
Line <19> parac )
|
|
||||||
Line <19> newline
|
|
||||||
Line <19> newline
|
Line <19> newline
|
||||||
Line <20> newline
|
Line <20> newline
|
||||||
|
Line <20> newline
|
||||||
Line <21> newline
|
Line <21> newline
|
||||||
|
Line <21> newline
|
||||||
|
Line <22> name music
|
||||||
|
Line <22> dot dot
|
||||||
|
Line <22> name setPitch
|
||||||
|
Line <22> parao (
|
||||||
|
Line <22> number 0.7
|
||||||
|
Line <22> parac )
|
||||||
Line <22> newline
|
Line <22> newline
|
||||||
|
Line <22> newline
|
||||||
|
Line <23> name print
|
||||||
|
Line <23> parao (
|
||||||
|
Line <23> name music
|
||||||
|
Line <23> dot .
|
||||||
|
Line <23> name getStatus
|
||||||
|
Line <23> parao (
|
||||||
|
Line <23> parac )
|
||||||
|
Line <23> parac )
|
||||||
Line <23> newline
|
Line <23> newline
|
||||||
|
Line <23> newline
|
||||||
|
Line <24> name music
|
||||||
|
Line <24> dot .
|
||||||
|
Line <24> name play
|
||||||
|
Line <24> parao (
|
||||||
|
Line <24> parac )
|
||||||
Line <24> newline
|
Line <24> newline
|
||||||
|
Line <24> newline
|
||||||
|
Line <25> name print
|
||||||
|
Line <25> parao (
|
||||||
|
Line <25> name music
|
||||||
|
Line <25> dot .
|
||||||
|
Line <25> name getStatus
|
||||||
|
Line <25> parao (
|
||||||
|
Line <25> parac )
|
||||||
|
Line <25> parac )
|
||||||
Line <25> newline
|
Line <25> newline
|
||||||
|
Line <25> newline
|
||||||
|
Line <26> name print
|
||||||
|
Line <26> parao (
|
||||||
|
Line <26> string Type:
|
||||||
|
Line <26> plus +
|
||||||
|
Line <26> name type
|
||||||
|
Line <26> parao (
|
||||||
|
Line <26> name music2
|
||||||
|
Line <26> parac )
|
||||||
|
Line <26> parac )
|
||||||
Line <26> newline
|
Line <26> newline
|
||||||
|
Line <26> newline
|
||||||
|
Line <27> name while
|
||||||
|
Line <27> parao (
|
||||||
|
Line <27> name music
|
||||||
|
Line <27> dot dot
|
||||||
|
Line <27> name getStatus
|
||||||
|
Line <27> parao (
|
||||||
|
Line <27> parac )
|
||||||
|
Line <27> not !
|
||||||
|
Line <27> equal =
|
||||||
|
Line <27> string stopped
|
||||||
|
Line <27> parac )
|
||||||
|
Line <27> cbracketo {
|
||||||
Line <27> newline
|
Line <27> newline
|
||||||
|
Line <27> newline
|
||||||
|
Line <28> name wait
|
||||||
|
Line <28> number 1
|
||||||
Line <28> newline
|
Line <28> newline
|
||||||
|
Line <28> newline
|
||||||
|
Line <29> cbracketc }
|
||||||
Line <29> newline
|
Line <29> newline
|
||||||
|
Line <29> newline
|
||||||
|
Line <30> name print
|
||||||
|
Line <30> parao (
|
||||||
|
Line <30> string Done
|
||||||
|
Line <30> parac )
|
||||||
|
Line <30> newline
|
||||||
Line <30> newline
|
Line <30> newline
|
||||||
Line <31> newline
|
Line <31> newline
|
||||||
Line <32> newline
|
Line <32> newline
|
||||||
@ -96,270 +149,255 @@ Line <40> newline
|
|||||||
Line <41> newline
|
Line <41> newline
|
||||||
Line <42> newline
|
Line <42> newline
|
||||||
Line <43> newline
|
Line <43> newline
|
||||||
Line <43> newline
|
|
||||||
Line <44> bracketo [
|
|
||||||
Line <44> name tester
|
|
||||||
Line <44> colon :
|
|
||||||
Line <44> name function
|
|
||||||
Line <44> parao (
|
|
||||||
Line <44> parac )
|
|
||||||
Line <44> bracketc ]
|
|
||||||
Line <44> newline
|
Line <44> newline
|
||||||
Line <44> newline
|
|
||||||
Line <45> name print
|
|
||||||
Line <45> parao (
|
|
||||||
Line <45> name a
|
|
||||||
Line <45> parac )
|
|
||||||
Line <45> newline
|
Line <45> newline
|
||||||
Line <45> newline
|
Line <45> newline
|
||||||
|
Line <46> bracketo [
|
||||||
|
Line <46> name SelectSong
|
||||||
|
Line <46> colon :
|
||||||
|
Line <46> name function
|
||||||
|
Line <46> parao (
|
||||||
|
Line <46> parac )
|
||||||
|
Line <46> bracketc ]
|
||||||
Line <46> newline
|
Line <46> newline
|
||||||
Line <46> newline
|
Line <46> newline
|
||||||
Line <47> bracketo [
|
Line <47> control
|
||||||
Line <47> name SelectSong
|
Line <47> string Pick song:
|
||||||
Line <47> colon :
|
Line <47> cbracketo {
|
||||||
Line <47> name function
|
|
||||||
Line <47> parao (
|
|
||||||
Line <47> parac )
|
|
||||||
Line <47> bracketc ]
|
|
||||||
Line <47> newline
|
Line <47> newline
|
||||||
Line <47> newline
|
Line <47> newline
|
||||||
Line <48> control
|
Line <48> string Music 1
|
||||||
Line <48> string Pick song:
|
|
||||||
Line <48> cbracketo {
|
Line <48> cbracketo {
|
||||||
Line <48> newline
|
Line <48> newline
|
||||||
Line <48> newline
|
Line <48> newline
|
||||||
Line <49> string Music 1
|
Line <49> ret
|
||||||
Line <49> cbracketo {
|
Line <49> name music
|
||||||
Line <49> newline
|
Line <49> newline
|
||||||
Line <49> newline
|
Line <49> newline
|
||||||
Line <50> ret
|
Line <50> cbracketc }
|
||||||
Line <50> name music
|
|
||||||
Line <50> newline
|
Line <50> newline
|
||||||
Line <50> newline
|
Line <50> newline
|
||||||
Line <51> cbracketc }
|
Line <51> string Music 2
|
||||||
|
Line <51> cbracketo {
|
||||||
Line <51> newline
|
Line <51> newline
|
||||||
Line <51> newline
|
Line <51> newline
|
||||||
Line <52> string Music 2
|
Line <52> ret
|
||||||
Line <52> cbracketo {
|
Line <52> name music2
|
||||||
Line <52> newline
|
Line <52> newline
|
||||||
Line <52> newline
|
Line <52> newline
|
||||||
Line <53> ret
|
Line <53> cbracketc }
|
||||||
Line <53> name music2
|
|
||||||
Line <53> newline
|
Line <53> newline
|
||||||
Line <53> newline
|
Line <53> newline
|
||||||
Line <54> cbracketc }
|
Line <54> cbracketc }
|
||||||
Line <54> newline
|
Line <54> newline
|
||||||
Line <54> newline
|
Line <54> newline
|
||||||
Line <55> cbracketc }
|
|
||||||
Line <55> newline
|
Line <55> newline
|
||||||
Line <55> newline
|
Line <55> newline
|
||||||
|
Line <56> bracketo [
|
||||||
|
Line <56> name player
|
||||||
|
Line <56> colon :
|
||||||
|
Line <56> name function
|
||||||
|
Line <56> parao (
|
||||||
|
Line <56> name song
|
||||||
|
Line <56> parac )
|
||||||
|
Line <56> bracketc ]
|
||||||
Line <56> newline
|
Line <56> newline
|
||||||
Line <56> newline
|
Line <56> newline
|
||||||
Line <57> bracketo [
|
Line <57> control
|
||||||
Line <57> name player
|
Line <57> string What you wanna do?
|
||||||
Line <57> colon :
|
Line <57> cbracketo {
|
||||||
Line <57> name function
|
|
||||||
Line <57> parao (
|
|
||||||
Line <57> name song
|
|
||||||
Line <57> parac )
|
|
||||||
Line <57> bracketc ]
|
|
||||||
Line <57> newline
|
Line <57> newline
|
||||||
Line <57> newline
|
Line <57> newline
|
||||||
Line <58> control
|
Line <58> string play/resume
|
||||||
Line <58> string What you wanna do?
|
|
||||||
Line <58> cbracketo {
|
Line <58> cbracketo {
|
||||||
Line <58> newline
|
Line <58> newline
|
||||||
Line <58> newline
|
Line <58> newline
|
||||||
Line <59> string play/resume
|
Line <59> name song
|
||||||
Line <59> cbracketo {
|
Line <59> dot dot
|
||||||
|
Line <59> name play
|
||||||
|
Line <59> parao (
|
||||||
|
Line <59> parac )
|
||||||
Line <59> newline
|
Line <59> newline
|
||||||
Line <59> newline
|
Line <59> newline
|
||||||
Line <60> name song
|
Line <60> name player
|
||||||
Line <60> dot dot
|
|
||||||
Line <60> name play
|
|
||||||
Line <60> parao (
|
Line <60> parao (
|
||||||
|
Line <60> name song
|
||||||
Line <60> parac )
|
Line <60> parac )
|
||||||
Line <60> newline
|
Line <60> newline
|
||||||
Line <60> newline
|
Line <60> newline
|
||||||
Line <61> name player
|
Line <61> cbracketc }
|
||||||
Line <61> parao (
|
|
||||||
Line <61> name song
|
|
||||||
Line <61> parac )
|
|
||||||
Line <61> newline
|
Line <61> newline
|
||||||
Line <61> newline
|
Line <61> newline
|
||||||
Line <62> cbracketc }
|
Line <62> string pause
|
||||||
|
Line <62> cbracketo {
|
||||||
Line <62> newline
|
Line <62> newline
|
||||||
Line <62> newline
|
Line <62> newline
|
||||||
Line <63> string pause
|
Line <63> name song
|
||||||
Line <63> cbracketo {
|
Line <63> dot .
|
||||||
|
Line <63> name pause
|
||||||
|
Line <63> parao (
|
||||||
|
Line <63> parac )
|
||||||
Line <63> newline
|
Line <63> newline
|
||||||
Line <63> newline
|
Line <63> newline
|
||||||
Line <64> name song
|
Line <64> name player
|
||||||
Line <64> dot .
|
|
||||||
Line <64> name pause
|
|
||||||
Line <64> parao (
|
Line <64> parao (
|
||||||
|
Line <64> name song
|
||||||
Line <64> parac )
|
Line <64> parac )
|
||||||
Line <64> newline
|
Line <64> newline
|
||||||
Line <64> newline
|
Line <64> newline
|
||||||
Line <65> name player
|
Line <65> cbracketc }
|
||||||
Line <65> parao (
|
|
||||||
Line <65> name song
|
|
||||||
Line <65> parac )
|
|
||||||
Line <65> newline
|
Line <65> newline
|
||||||
Line <65> newline
|
Line <65> newline
|
||||||
Line <66> cbracketc }
|
Line <66> string stop
|
||||||
|
Line <66> cbracketo {
|
||||||
Line <66> newline
|
Line <66> newline
|
||||||
Line <66> newline
|
Line <66> newline
|
||||||
Line <67> string stop
|
Line <67> name song
|
||||||
Line <67> cbracketo {
|
Line <67> dot .
|
||||||
|
Line <67> name stop
|
||||||
|
Line <67> parao (
|
||||||
|
Line <67> parac )
|
||||||
Line <67> newline
|
Line <67> newline
|
||||||
Line <67> newline
|
Line <67> newline
|
||||||
Line <68> name song
|
Line <68> name player
|
||||||
Line <68> dot .
|
|
||||||
Line <68> name stop
|
|
||||||
Line <68> parao (
|
Line <68> parao (
|
||||||
|
Line <68> name song
|
||||||
Line <68> parac )
|
Line <68> parac )
|
||||||
Line <68> newline
|
Line <68> newline
|
||||||
Line <68> newline
|
Line <68> newline
|
||||||
Line <69> name player
|
Line <69> cbracketc }
|
||||||
Line <69> parao (
|
|
||||||
Line <69> name song
|
|
||||||
Line <69> parac )
|
|
||||||
Line <69> newline
|
Line <69> newline
|
||||||
Line <69> newline
|
Line <69> newline
|
||||||
Line <70> cbracketc }
|
Line <70> string newSong
|
||||||
|
Line <70> cbracketo {
|
||||||
Line <70> newline
|
Line <70> newline
|
||||||
Line <70> newline
|
Line <70> newline
|
||||||
Line <71> string newSong
|
Line <71> name song
|
||||||
Line <71> cbracketo {
|
Line <71> dot .
|
||||||
|
Line <71> name stop
|
||||||
|
Line <71> parao (
|
||||||
|
Line <71> parac )
|
||||||
Line <71> newline
|
Line <71> newline
|
||||||
Line <71> newline
|
Line <71> newline
|
||||||
Line <72> name song
|
Line <72> name player
|
||||||
Line <72> dot .
|
|
||||||
Line <72> name stop
|
|
||||||
Line <72> parao (
|
Line <72> parao (
|
||||||
|
Line <72> name song
|
||||||
Line <72> parac )
|
Line <72> parac )
|
||||||
Line <72> newline
|
Line <72> newline
|
||||||
Line <72> newline
|
Line <72> newline
|
||||||
Line <73> name player
|
Line <73> cbracketc }
|
||||||
Line <73> parao (
|
|
||||||
Line <73> name song
|
|
||||||
Line <73> parac )
|
|
||||||
Line <73> newline
|
Line <73> newline
|
||||||
Line <73> newline
|
Line <73> newline
|
||||||
Line <74> cbracketc }
|
Line <74> string quit
|
||||||
|
Line <74> exit
|
||||||
|
Line <74> number 0
|
||||||
Line <74> newline
|
Line <74> newline
|
||||||
Line <74> newline
|
Line <74> newline
|
||||||
Line <75> string quit
|
Line <75> cbracketc }
|
||||||
Line <75> exit
|
|
||||||
Line <75> number 0
|
|
||||||
Line <75> newline
|
Line <75> newline
|
||||||
Line <75> newline
|
Line <75> newline
|
||||||
Line <76> cbracketc }
|
|
||||||
Line <76> newline
|
Line <76> newline
|
||||||
Line <76> newline
|
Line <76> newline
|
||||||
|
Line <77> bracketo [
|
||||||
|
Line <77> name Ryan
|
||||||
|
Line <77> colon :
|
||||||
|
Line <77> name char
|
||||||
|
Line <77> bracketc ]
|
||||||
Line <77> newline
|
Line <77> newline
|
||||||
Line <77> newline
|
Line <77> newline
|
||||||
Line <78> bracketo [
|
Line <78> name age
|
||||||
Line <78> name Ryan
|
Line <78> equal =
|
||||||
Line <78> colon :
|
Line <78> number 21
|
||||||
Line <78> name char
|
|
||||||
Line <78> bracketc ]
|
|
||||||
Line <78> newline
|
Line <78> newline
|
||||||
Line <78> newline
|
Line <78> newline
|
||||||
Line <79> name age
|
Line <79> name money
|
||||||
Line <79> equal =
|
Line <79> equal =
|
||||||
Line <79> number 21
|
Line <79> number 1000
|
||||||
Line <79> newline
|
Line <79> newline
|
||||||
Line <79> newline
|
Line <79> newline
|
||||||
Line <80> name money
|
Line <80> name lname
|
||||||
Line <80> equal =
|
Line <80> equal =
|
||||||
Line <80> number 1000
|
Line <80> string Ward
|
||||||
Line <80> newline
|
Line <80> newline
|
||||||
Line <80> newline
|
Line <80> newline
|
||||||
Line <81> name lname
|
Line <81> name known
|
||||||
Line <81> equal =
|
Line <81> equal =
|
||||||
Line <81> string Ward
|
Line <81> true true
|
||||||
Line <81> newline
|
Line <81> newline
|
||||||
Line <81> newline
|
Line <81> newline
|
||||||
Line <82> name known
|
|
||||||
Line <82> equal =
|
|
||||||
Line <82> true true
|
|
||||||
Line <82> newline
|
|
||||||
Line <82> newline
|
Line <82> newline
|
||||||
|
Line <83> name calm
|
||||||
|
Line <83> colon :
|
||||||
|
Line <83> string ./path/to/file
|
||||||
Line <83> newline
|
Line <83> newline
|
||||||
Line <84> name calm
|
Line <83> newline
|
||||||
|
Line <84> name excited
|
||||||
Line <84> colon :
|
Line <84> colon :
|
||||||
Line <84> string ./path/to/file
|
Line <84> string ./path/to/file
|
||||||
Line <84> newline
|
Line <84> newline
|
||||||
Line <84> newline
|
Line <84> newline
|
||||||
Line <85> name excited
|
|
||||||
Line <85> colon :
|
|
||||||
Line <85> string ./path/to/file
|
|
||||||
Line <85> newline
|
Line <85> newline
|
||||||
Line <85> newline
|
Line <85> newline
|
||||||
|
Line <86> bracketo [
|
||||||
|
Line <86> name John
|
||||||
|
Line <86> colon :
|
||||||
|
Line <86> name char
|
||||||
|
Line <86> bracketc ]
|
||||||
Line <86> newline
|
Line <86> newline
|
||||||
Line <86> newline
|
Line <86> newline
|
||||||
Line <87> bracketo [
|
Line <87> name lname
|
||||||
Line <87> name John
|
Line <87> equal =
|
||||||
Line <87> colon :
|
Line <87> string Johnson
|
||||||
Line <87> name char
|
|
||||||
Line <87> bracketc ]
|
|
||||||
Line <87> newline
|
Line <87> newline
|
||||||
Line <87> newline
|
Line <87> newline
|
||||||
Line <88> name lname
|
Line <88> name age
|
||||||
Line <88> equal =
|
Line <88> equal =
|
||||||
Line <88> string Johnson
|
Line <88> number 16
|
||||||
Line <88> newline
|
Line <88> newline
|
||||||
Line <88> newline
|
Line <88> newline
|
||||||
Line <89> name age
|
Line <89> name money
|
||||||
Line <89> equal =
|
Line <89> equal =
|
||||||
Line <89> number 16
|
Line <89> number 100000
|
||||||
Line <89> newline
|
Line <89> newline
|
||||||
Line <89> newline
|
Line <89> newline
|
||||||
Line <90> name money
|
Line <90> name known
|
||||||
Line <90> equal =
|
Line <90> equal =
|
||||||
Line <90> number 100000
|
Line <90> true true
|
||||||
Line <90> newline
|
Line <90> newline
|
||||||
Line <90> newline
|
Line <90> newline
|
||||||
Line <91> name known
|
|
||||||
Line <91> equal =
|
|
||||||
Line <91> true true
|
|
||||||
Line <91> newline
|
Line <91> newline
|
||||||
Line <91> newline
|
Line <91> newline
|
||||||
|
Line <92> bracketo [
|
||||||
|
Line <92> name Bob
|
||||||
|
Line <92> colon :
|
||||||
|
Line <92> name char
|
||||||
|
Line <92> bracketc ]
|
||||||
Line <92> newline
|
Line <92> newline
|
||||||
Line <92> newline
|
Line <92> newline
|
||||||
Line <93> bracketo [
|
|
||||||
Line <93> name Bob
|
|
||||||
Line <93> colon :
|
|
||||||
Line <93> name char
|
|
||||||
Line <93> bracketc ]
|
|
||||||
Line <93> newline
|
|
||||||
Line <93> newline
|
Line <93> newline
|
||||||
Line <94> newline
|
Line <94> newline
|
||||||
|
Line <95> name lname
|
||||||
|
Line <95> equal =
|
||||||
|
Line <95> string Johnson
|
||||||
Line <95> newline
|
Line <95> newline
|
||||||
Line <96> name lname
|
Line <96> name unknown
|
||||||
Line <96> equal =
|
Line <96> equal =
|
||||||
Line <96> string Johnson
|
Line <96> string Some Random Guy
|
||||||
Line <96> newline
|
Line <96> newline
|
||||||
Line <97> name unknown
|
Line <96> newline
|
||||||
|
Line <97> name age
|
||||||
Line <97> equal =
|
Line <97> equal =
|
||||||
Line <97> string Some Random Guy
|
Line <97> number 24
|
||||||
Line <97> newline
|
Line <97> newline
|
||||||
Line <97> newline
|
Line <97> newline
|
||||||
Line <98> name age
|
Line <98> name money
|
||||||
Line <98> equal =
|
Line <98> equal =
|
||||||
Line <98> number 24
|
Line <98> number 100
|
||||||
Line <98> newline
|
Line <98> newline
|
||||||
Line <98> newline
|
Line <98> newline
|
||||||
Line <99> name money
|
Line <99> name excited
|
||||||
Line <99> equal =
|
Line <99> colon :
|
||||||
Line <99> number 100
|
Line <99> string path/to/file
|
||||||
Line <99> newline
|
Line <99> newline
|
||||||
Line <99> newline
|
Line <99> newline
|
||||||
Line <100> name excited
|
Line <99> eof
|
||||||
Line <100> colon :
|
|
||||||
Line <100> string path/to/file
|
|
||||||
Line <100> newline
|
|
||||||
Line <100> newline
|
|
||||||
Line <100> eof
|
|
||||||
|
|||||||
@ -82,7 +82,7 @@ namespace dms::audio {
|
|||||||
if (args->size() || args->args[0].resolve(state).type == datatypes::string) {
|
if (args->size() || args->args[0].resolve(state).type == datatypes::string) {
|
||||||
|
|
||||||
sf::Music* music = new sf::Music;
|
sf::Music* music = new sf::Music;
|
||||||
if (!music->openFromFile(args->args[0].s)) {
|
if (!music->openFromFile(args->args[0].getString())) {
|
||||||
return value("Cannot open audio stream!", datatypes::error);
|
return value("Cannot open audio stream!", datatypes::error);
|
||||||
}
|
}
|
||||||
return value(music, "audiostream");
|
return value(music, "audiostream");
|
||||||
|
|||||||
29
DMS/test.dms
29
DMS/test.dms
@ -11,21 +11,23 @@ enable savestate
|
|||||||
version 0.2
|
version 0.2
|
||||||
using extendedDefine
|
using extendedDefine
|
||||||
// this code will reside within
|
// this code will reside within
|
||||||
|
|
||||||
music = loadMusic("test2.ogg")
|
music = loadMusic("test2.ogg")
|
||||||
music2 = loadMusic("test.ogg")
|
music2 = loadMusic("test.ogg")
|
||||||
|
|
||||||
[main]
|
[main]
|
||||||
a = 10
|
// Let's extend the base feature set
|
||||||
tester()
|
|
||||||
print("a = " + a)
|
|
||||||
// music.setPitch(.7)
|
music.setPitch(.7)
|
||||||
// print(music.getStatus())
|
print(music.getStatus())
|
||||||
// music.play()
|
music.play()
|
||||||
// print(music.getStatus())
|
print(music.getStatus())
|
||||||
// print("Type: " + type(music2))
|
print("Type: " + type(music2))
|
||||||
// while(music.getStatus()!="stopped"){
|
while(music.getStatus()!="stopped"){
|
||||||
// wait 1
|
wait 1
|
||||||
// }
|
}
|
||||||
// print("Done")
|
print("Done")
|
||||||
// a = 0
|
// a = 0
|
||||||
// while (true){
|
// while (true){
|
||||||
// asm {
|
// asm {
|
||||||
@ -41,9 +43,6 @@ music2 = loadMusic("test.ogg")
|
|||||||
// player(song)
|
// player(song)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
[tester:function()]
|
|
||||||
print(a)
|
|
||||||
|
|
||||||
[SelectSong:function()]
|
[SelectSong:function()]
|
||||||
choice "Pick song:" {
|
choice "Pick song:" {
|
||||||
"Music 1" {
|
"Music 1" {
|
||||||
|
|||||||
@ -359,8 +359,8 @@ namespace dms {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
value value::resolve(dms_state* _state) {
|
value value::resolve(dms_state* _state) {
|
||||||
if (type == datatypes::variable && (*this)!=(*_state->getMem())[s]) {
|
if (type == datatypes::variable && (*this)!=(*_state->getMem())[getString()]) {
|
||||||
return (*_state->getMem())[s].resolve(_state);
|
return (*_state->getMem())[getString()].resolve(_state);
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
@ -412,17 +412,17 @@ namespace dms {
|
|||||||
return "custom";
|
return "custom";
|
||||||
}
|
}
|
||||||
else if (type == block) {
|
else if (type == block) {
|
||||||
if (state->characterExists(s)) {
|
if (state->characterExists(getString())) {
|
||||||
auto cha = state->getCharacter(s);
|
auto cha = state->getCharacter(getString());
|
||||||
return cha->getName();
|
return cha->getName();
|
||||||
}
|
}
|
||||||
return s;
|
return getString();
|
||||||
}
|
}
|
||||||
else if (type == datatypes::variable) {
|
else if (type == datatypes::variable) {
|
||||||
return s; // Do the lookup
|
return getString(); // Do the lookup
|
||||||
}
|
}
|
||||||
else if (type == datatypes::error) {
|
else if (type == datatypes::error) {
|
||||||
return std::string("ERROR: ") + s;
|
return std::string("ERROR: ") + getString();
|
||||||
}
|
}
|
||||||
else if (type == datatypes::escape) {
|
else if (type == datatypes::escape) {
|
||||||
return "";
|
return "";
|
||||||
@ -450,6 +450,10 @@ namespace dms {
|
|||||||
else
|
else
|
||||||
return INT_MIN;
|
return INT_MIN;
|
||||||
}
|
}
|
||||||
|
std::string value::getString() const
|
||||||
|
{
|
||||||
|
return s;
|
||||||
|
}
|
||||||
// Compile time
|
// Compile time
|
||||||
void value::nuke() {
|
void value::nuke() {
|
||||||
delete e;
|
delete e;
|
||||||
@ -457,7 +461,7 @@ namespace dms {
|
|||||||
}
|
}
|
||||||
std::ostream& operator << (std::ostream& out, const value& c) {
|
std::ostream& operator << (std::ostream& out, const value& c) {
|
||||||
if (c.type == string) {
|
if (c.type == string) {
|
||||||
out << (char)c.type << c.s << (char)0;
|
out << (char)c.type << c.getString() << (char)0;
|
||||||
}
|
}
|
||||||
else if (c.type == number) {
|
else if (c.type == number) {
|
||||||
out << (char)c.type << c.n;
|
out << (char)c.type << c.n;
|
||||||
@ -481,10 +485,10 @@ namespace dms {
|
|||||||
out << (char)c.type << "Custom Data: " << c;
|
out << (char)c.type << "Custom Data: " << c;
|
||||||
}
|
}
|
||||||
else if (c.type == block) {
|
else if (c.type == block) {
|
||||||
out << (char)c.type << c.s;
|
out << (char)c.type << c.getString();
|
||||||
}
|
}
|
||||||
else if (c.type == datatypes::variable) {
|
else if (c.type == datatypes::variable) {
|
||||||
out << (char)c.type << c.s; // Do the lookup
|
out << (char)c.type << c.getString(); // Do the lookup
|
||||||
}
|
}
|
||||||
else if (c.type == datatypes::escape) {
|
else if (c.type == datatypes::escape) {
|
||||||
out << (char)0;
|
out << (char)0;
|
||||||
|
|||||||
@ -84,6 +84,7 @@ namespace dms {
|
|||||||
std::string toString() const;
|
std::string toString() const;
|
||||||
double getDouble() const;
|
double getDouble() const;
|
||||||
int64_t getInt() const;
|
int64_t getInt() const;
|
||||||
|
std::string getString() const;
|
||||||
friend std::ostream& operator << (std::ostream& out, const value& c);
|
friend std::ostream& operator << (std::ostream& out, const value& c);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ The Dialogue Management Script's goal is to provide a nice and simple way to hav
|
|||||||
- [X] ~~Implement bytecode for for/while loops~~
|
- [X] ~~Implement bytecode for for/while loops~~
|
||||||
- [X] ~~Implement bytecode for concatenation~~
|
- [X] ~~Implement bytecode for concatenation~~
|
||||||
- [X] ~~Interpert all the bytecode~~
|
- [X] ~~Interpert all the bytecode~~
|
||||||
- [ ] Finish implementing custom datatype
|
- [X] ~~Finish implementing custom datatype~~
|
||||||
- [ ] Speed up interperter
|
- [ ] Speed up interperter
|
||||||
- [ ] Finish C API for code
|
- [ ] Finish C API for code
|
||||||
- [ ] Extend beginning features
|
- [ ] Extend beginning features
|
||||||
Loading…
x
Reference in New Issue
Block a user