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