This commit is contained in:
Paul 2000-12-20 20:15:24 +00:00
parent fda1fc3ca7
commit b56cd688ae
16 changed files with 1569 additions and 849 deletions

View file

@ -35,6 +35,7 @@
------- */
#include <stdio.h>
#include <stdlib.h>
/* Data
@ -204,6 +205,7 @@ CTreeNode::CTreeNode(NodeType _type,int _data)
int CTreeNode::generateCode(int _write)
{
int codeSize=0;
int tmp1,tmp2;
switch(m_type)
{
@ -248,11 +250,33 @@ int CTreeNode::generateCode(int _write)
codeSize+=m_children[2]->generateCode(_write);
break;
case WHILE_STMT: // while [expression, code]
tmp1=m_children[1]->generateCode(false);
tmp2=codeSize;
codeSize=m_children[0]->generateCode(_write);
codeSize+=emit(OP_PUSHVALUE,_write);
codeSize+=emit((signed short)tmp1+3,_write);
codeSize+=emit(OP_JMPF,_write);
codeSize+=m_children[1]->generateCode(_write);
codeSize+=emit(OP_PUSHVALUE,_write);
codeSize+=emit((signed short)-(codeSize-tmp2+2),_write);
codeSize+=emit(OP_JMP,_write);
break;
case DOWHILE_STMT: // do [code] while [expression]
tmp1=m_children[0]->generateCode(false)+m_children[1]->generateCode(false)+3;
codeSize=m_children[0]->generateCode(_write);
codeSize+=m_children[1]->generateCode(_write);
codeSize+=emit(OP_PUSHVALUE,_write);
codeSize+=emit((signed short)-tmp1,_write);
codeSize+=emit(OP_JMPT,_write);
break;
case POP_STMT: // pop
codeSize+=emit(OP_POP,_write);
break;
case ASSIGN_EXPR: // assign [ variable, number ]
case ASSIGN_EXPR: // assign [variable, number]
codeSize+=m_children[1]->generateCode(_write);
codeSize+=emit(OP_PUSHVALUE,_write);
codeSize+=emit(m_children[0]->getVariableIdx(),_write);
@ -260,17 +284,29 @@ int CTreeNode::generateCode(int _write)
break;
case EQUAL_EXPR: // == [variable, value]
codeSize+=m_children[0]->generateCode(_write);
codeSize+=m_children[1]->generateCode(_write);
codeSize+=m_children[0]->generateCode(_write);
codeSize+=emit(OP_IS_EQUAL_VALUE,_write);
break;
case NOTEQUAL_EXPR: // != [variable, value]
codeSize+=m_children[0]->generateCode(_write);
codeSize+=m_children[1]->generateCode(_write);
codeSize+=m_children[0]->generateCode(_write);
codeSize+=emit(OP_IS_NOTEQUAL_VALUE,_write);
break;
case LESSTHAN_EXPR: // [variable, value]
codeSize+=m_children[1]->generateCode(_write);
codeSize+=m_children[0]->generateCode(_write);
codeSize+=emit(OP_IS_LESSTHAN_VALUE,_write);
break;
case GREATERTHAN_EXPR: // [variable, value]
codeSize+=m_children[1]->generateCode(_write);
codeSize+=m_children[0]->generateCode(_write);
codeSize+=emit(OP_IS_GREATERTHAN_VALUE,_write);
break;
case VARIABLE_EXPR: // variable
case VALUE_EXPR: // value
if(m_numChildren)
@ -280,8 +316,15 @@ int CTreeNode::generateCode(int _write)
break;
case PLUS_EXPR: // + [value, value]
codeSize+=emitValue(m_children[0],_write);
codeSize+=emitValue(m_children[1],_write);
codeSize+=m_children[0]->generateCode(_write);
codeSize+=m_children[1]->generateCode(_write);
codeSize+=emit(OP_ADD,_write);
break;
case SUBTRACT_EXPR: // - [value, value]
codeSize+=m_children[0]->generateCode(_write);
codeSize+=m_children[1]->generateCode(_write);
codeSize+=emit(OP_NEG,_write);
codeSize+=emit(OP_ADD,_write);
break;
@ -293,6 +336,7 @@ int CTreeNode::generateCode(int _write)
default:
printf("UNHANDLED CASE %d\n",m_type);
exit(-2);
break;
}
@ -316,7 +360,7 @@ int CTreeNode::emit(unsigned short _data,int _write)
}
int CTreeNode::emitValue(CTreeNode *_child,int _write)
{
int codeSize;
int codeSize=0;
switch(_child->getType())
{
@ -328,7 +372,7 @@ int CTreeNode::emitValue(CTreeNode *_child,int _write)
break;
default:
printf("INTERNAL ERROR IN emitValue() :(\n");
codeSize=0;
exit(-2);
break;
}
return codeSize;

View file

@ -35,15 +35,20 @@ typedef enum
PAUSE_STMT, // pause
IF_STMT, // if [expression, ifcode]
IFELSE_STMT, // if [expression, ifcode, elsecode]
WHILE_STMT, // while [expression, code]
DOWHILE_STMT, // do [code] while [expression]
POP_STMT, // pop
// Expressions
ASSIGN_EXPR, // assignment [variable, value]
EQUAL_EXPR, // == [variable, value]
NOTEQUAL_EXPR, // != [variable, value]
LESSTHAN_EXPR, // < [variable, value]
GREATERTHAN_EXPR, // > [variable, value]
VARIABLE_EXPR, // variable
VALUE_EXPR, // value
PLUS_EXPR, // + [value, value]
SUBTRACT_EXPR, // - [value, value]
FUNCTION_EXPR, // function [functionNumber]
}NodeType;
@ -85,8 +90,11 @@ private:
OP_JMPT, // jump, value
OP_IS_EQUAL_VALUE, // value, value pushes result ( 0 or 1 ) to stack
OP_IS_NOTEQUAL_VALUE, // value, value pushes result ( 0 or 1 ) to stack
OP_IS_LESSTHAN_VALUE, // value, value pushes result ( 0 or 1 ) to stack
OP_IS_GREATERTHAN_VALUE,// value, value pushes result ( 0 or 1 ) to stack
OP_ASSIGN, // varidx, value
OP_ADD, // value, value pushes result to stack
OP_NEG, // value pushes result to stack
OP_PRINT, // value
OP_CALL_FUNCTION, // functionNumber, argcount args pushes return value to stack
};

View file

@ -61,8 +61,10 @@ struct FunctionDef
---- */
static FunctionDef s_functionNames[]=
{
{ "setCharacterAnimation", 2, }, // character, animation
{ "setText", 1, }, // textId
{ "setCharacterAnimation", 2 }, // character,animation
{ "setText", 1 }, // textId
{ "drawSprite", 4 }, // frame,x,y,ot
{ "getFrameTime", 0 }, //
};
static int s_functionCount=sizeof(s_functionNames)/sizeof(FunctionDef);

View file

@ -125,136 +125,171 @@ return ELSE;
case 6:
{
#line 71 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return PAUSE;
return WHILE;
#line 130 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 7:
{
#line 72 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return PRINT;
return DO;
#line 137 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 8:
{
#line 73 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return ASSIGN;
return PAUSE;
#line 144 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 9:
{
#line 74 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return EQUAL;
return PRINT;
#line 151 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 10:
{
#line 75 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return NOTEQUAL;
return ASSIGN;
#line 158 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 11:
{
#line 76 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return PLUS;
return EQUAL;
#line 165 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 12:
{
#line 77 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return END_STMT;
return NOTEQUAL;
#line 172 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 13:
{
#line 78 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return OPEN_PAR;
return LESSTHAN;
#line 179 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 14:
{
#line 79 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return CLOSE_PAR;
return GREATERTHAN;
#line 186 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 15:
{
#line 80 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return BEGIN_CS;
return PLUS;
#line 193 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 16:
{
#line 81 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return END_CS;
return SUBTRACT;
#line 200 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 17:
{
#line 82 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return COMMA;
return END_STMT;
#line 207 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 18:
{
#line 85 "C:\\spongebob\\Utils\\scripter\\lexer.l"
yylval.variableIdx=lookupVarName(yytext+1);return VARIABLE;
#line 83 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return OPEN_PAR;
#line 214 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 19:
{
#line 86 "C:\\spongebob\\Utils\\scripter\\lexer.l"
yylval.value=atoi(yytext);return VALUE;
#line 84 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return CLOSE_PAR;
#line 221 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 20:
{
#line 89 "C:\\spongebob\\Utils\\scripter\\lexer.l"
yylval.functionNumber=lookupFunctionName(yytext+1);return FUNCTION;
#line 85 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return BEGIN_CS;
#line 228 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 21:
{
#line 91 "C:\\spongebob\\Utils\\scripter\\lexer.l"
#line 86 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return END_CS;
#line 235 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 22:
{
#line 92 "C:\\spongebob\\Utils\\scripter\\lexer.l"
#line 87 "C:\\spongebob\\Utils\\scripter\\lexer.l"
return COMMA;
#line 242 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 23:
{
#line 93 "C:\\spongebob\\Utils\\scripter\\lexer.l"
#line 90 "C:\\spongebob\\Utils\\scripter\\lexer.l"
yylval.variableIdx=lookupVarName(yytext+1);return VARIABLE;
#line 249 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 24:
{
#line 95 "C:\\spongebob\\Utils\\scripter\\lexer.l"
unexpectedChar();
#line 91 "C:\\spongebob\\Utils\\scripter\\lexer.l"
yylval.value=atoi(yytext);return VALUE;
#line 256 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 25:
{
#line 94 "C:\\spongebob\\Utils\\scripter\\lexer.l"
yylval.functionNumber=lookupFunctionName(yytext+1);return FUNCTION;
#line 263 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 26:
{
#line 96 "C:\\spongebob\\Utils\\scripter\\lexer.l"
#line 270 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 27:
{
#line 97 "C:\\spongebob\\Utils\\scripter\\lexer.l"
#line 277 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 28:
{
#line 98 "C:\\spongebob\\Utils\\scripter\\lexer.l"
#line 284 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
case 29:
{
#line 100 "C:\\spongebob\\Utils\\scripter\\lexer.l"
unexpectedChar();
#line 291 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
}
break;
default:
yyassert(0);
break;
@ -268,7 +303,7 @@ unexpectedChar();
#pragma warn .rch // <warning: unreachable code> to the old state
#endif
#endif
#line 97 "C:\\spongebob\\Utils\\scripter\\lexer.l"
#line 102 "C:\\spongebob\\Utils\\scripter\\lexer.l"
@ -276,7 +311,7 @@ unexpectedChar();
// programs section
#line 280 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
#line 315 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
void YYLEXNAME::yytables()
{
@ -300,9 +335,9 @@ void YYLEXNAME::yytables()
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 21, 21 },
{ 0, 33 },
{ 0, 44 },
{ 26, 26 },
{ 0, 40 },
{ 0, 54 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
@ -323,7 +358,7 @@ void YYLEXNAME::yytables()
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 21, 21 },
{ 26, 26 },
{ 0, 0 },
{ 0, 0 },
{ 3, 1 },
@ -338,269 +373,269 @@ void YYLEXNAME::yytables()
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 33, 20 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 40, 25 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 29, 8 },
{ 30, 9 },
{ 37, 11 },
{ 36, 10 },
{ 0, 0 },
{ 0, 0 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 31, 31 },
{ 38, 38 },
{ 0, 0 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 31, 31 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 36, 27 },
{ 43, 41 },
{ 24, 4 },
{ 35, 26 },
{ 40, 36 },
{ 38, 34 },
{ 34, 24 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 41, 37 },
{ 26, 6 },
{ 37, 28 },
{ 25, 5 },
{ 32, 32 },
{ 39, 35 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 32, 32 },
{ 0, 17 },
{ 0, 17 },
{ 0, 17 },
{ 0, 17 },
{ 0, 17 },
{ 0, 17 },
{ 0, 17 },
{ 0, 17 },
{ 0, 17 },
{ 0, 17 },
{ 0, 19 },
{ 0, 19 },
{ 0, 19 },
{ 0, 19 },
{ 0, 19 },
{ 0, 19 },
{ 0, 19 },
{ 0, 19 },
{ 0, 19 },
{ 0, 19 },
{ 21, 2 },
{ 22, 2 },
{ 27, 7 },
{ 18, 18 },
{ 18, 18 },
{ 18, 18 },
{ 18, 18 },
{ 18, 18 },
{ 18, 18 },
{ 18, 18 },
{ 18, 18 },
{ 18, 18 },
{ 18, 18 },
{ 42, 40 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 38, 38 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 44, 34 },
{ 53, 50 },
{ 29, 4 },
{ 42, 31 },
{ 49, 44 },
{ 46, 41 },
{ 33, 8 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 41, 29 },
{ 50, 45 },
{ 31, 6 },
{ 48, 43 },
{ 39, 39 },
{ 43, 32 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 39, 39 },
{ 0, 22 },
{ 0, 22 },
{ 0, 22 },
{ 0, 22 },
{ 0, 22 },
{ 0, 22 },
{ 0, 22 },
{ 0, 22 },
{ 0, 22 },
{ 0, 22 },
{ 0, 24 },
{ 0, 24 },
{ 0, 24 },
{ 0, 24 },
{ 0, 24 },
{ 0, 24 },
{ 0, 24 },
{ 0, 24 },
{ 0, 24 },
{ 0, 24 },
{ 26, 2 },
{ 27, 2 },
{ 34, 9 },
{ 23, 23 },
{ 23, 23 },
{ 23, 23 },
{ 23, 23 },
{ 23, 23 },
{ 23, 23 },
{ 23, 23 },
{ 23, 23 },
{ 23, 23 },
{ 23, 23 },
{ 45, 35 },
{ 32, 7 },
{ 30, 5 },
{ 52, 49 },
{ 47, 42 },
{ 51, 48 },
{ 35, 9 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 28, 7 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 21, 2 },
{ 9, 2 },
{ 0, 0 },
{ 44, 2 },
{ 17, 2 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 12, 2 },
{ 13, 2 },
{ 0, 0 },
{ 10, 2 },
{ 16, 2 },
{ 0, 0 },
{ 0, 0 },
{ 20, 2 },
{ 18, 2 },
{ 18, 2 },
{ 18, 2 },
{ 18, 2 },
{ 18, 2 },
{ 18, 2 },
{ 18, 2 },
{ 18, 2 },
{ 18, 2 },
{ 18, 2 },
{ 0, 0 },
{ 26, 2 },
{ 11, 2 },
{ 0, 0 },
{ 54, 2 },
{ 22, 2 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 17, 2 },
{ 18, 2 },
{ 0, 0 },
{ 14, 2 },
{ 21, 2 },
{ 15, 2 },
{ 0, 0 },
{ 25, 2 },
{ 23, 2 },
{ 23, 2 },
{ 23, 2 },
{ 23, 2 },
{ 23, 2 },
{ 23, 2 },
{ 23, 2 },
{ 23, 2 },
{ 23, 2 },
{ 23, 2 },
{ 0, 0 },
{ 16, 2 },
{ 12, 2 },
{ 10, 2 },
{ 13, 2 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 24, 2 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 8, 2 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 19, 2 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 6, 2 },
{ 0, 0 },
{ 0, 0 },
@ -612,69 +647,79 @@ void YYLEXNAME::yytables()
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 7, 2 },
{ 9, 2 },
{ 0, 0 },
{ 0, 0 },
{ 4, 2 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 7, 2 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 19, 2 },
{ 0, 0 },
{ 14, 2 },
{ 0, 0 },
{ 15, 2 }
{ 20, 2 }
};
yytransition = transition;
static const yystate_t YYNEARFAR YYBASED_CODE state[] = {
{ 0, 0, 0 },
{ 2, 1, 0 },
{ -23, 210, 0 },
{ -28, 210, 0 },
{ 0, 0, 2 },
{ 41, 20, 24 },
{ 0, 68, 24 },
{ 0, 60, 24 },
{ 0, 124, 24 },
{ 9, 1, 8 },
{ 0, 2, 24 },
{ 0, 0, 11 },
{ 0, 0, 12 },
{ 50, 20, 29 },
{ 0, 132, 29 },
{ 43, 61, 29 },
{ 0, 129, 29 },
{ 29, 29, 29 },
{ 0, 124, 29 },
{ 11, 2, 10 },
{ 0, 1, 29 },
{ 0, 0, 13 },
{ 0, 0, 14 },
{ 0, 0, 15 },
{ 0, 0, 16 },
{ 0, 0, 17 },
{ 31, 151, 24 },
{ 0, 174, 19 },
{ 32, 161, 24 },
{ 0, 1, 24 },
{ 0, 1, 22 },
{ 0, 0, 23 },
{ 0, 0, 24 },
{ 0, 29, 0 },
{ 0, 0, 18 },
{ 0, 0, 19 },
{ 0, 0, 20 },
{ 0, 0, 21 },
{ 0, 0, 22 },
{ 38, 151, 29 },
{ 0, 174, 24 },
{ 39, 161, 29 },
{ 0, 1, 29 },
{ 0, 1, 27 },
{ 0, 0, 28 },
{ 0, 0, 29 },
{ 0, 56, 0 },
{ 0, 0, 4 },
{ 36, 22, 0 },
{ 44, 22, 0 },
{ 35, 67, 0 },
{ 0, 0, 7 },
{ 0, 17, 0 },
{ 0, 64, 0 },
{ 0, 0, 9 },
{ 0, 0, 10 },
{ 41, 1, 18 },
{ 41, 76, 20 },
{ -33, 1, 21 },
{ 0, 127, 0 },
{ 0, 0, 11 },
{ 0, 0, 12 },
{ 50, 1, 23 },
{ 50, 76, 25 },
{ -40, 1, 26 },
{ 0, 27, 0 },
{ 40, 71, 0 },
{ 49, 135, 0 },
{ 0, 62, 0 },
{ 0, 23, 0 },
{ 0, 57, 0 },
{ 0, 58, 0 },
{ 0, 0, 3 },
{ 0, 0, 5 },
{ 0, 131, 0 },
{ 49, 136, 0 },
{ 0, 134, 0 },
{ 0, 19, 0 },
{ 0, 0, 6 },
{ 0, 0, 7 },
{ -44, 2, 1 }
{ 0, 0, 8 },
{ 0, 0, 9 },
{ -54, 2, 1 }
};
yystate = state;
@ -703,6 +748,11 @@ void YYLEXNAME::yytables()
0,
0,
0,
0,
0,
0,
0,
0,
0
};
yybackup = backup;

View file

@ -68,12 +68,17 @@ YYSTYPE& yylval = *(YYSTYPE*)yyparserptr->yylvalptr;
stop {return STOP;}
if {return IF;}
else {return ELSE;}
while {return WHILE;}
do {return DO;}
pause {return PAUSE;}
print {return PRINT;}
= {return ASSIGN;}
== {return EQUAL;}
!= {return NOTEQUAL;}
\< {return LESSTHAN;}
\> {return GREATERTHAN;}
\+ {return PLUS;}
\- {return SUBTRACT;}
; {return END_STMT;}
\( {return OPEN_PAR;}
\) {return CLOSE_PAR;}

View file

@ -76,7 +76,7 @@ void YYPARSENAME::yyaction(int action)
yyinitdebug((void YYFAR**)yya, 2);
#endif
{
#line 102 "C:\\spongebob\\Utils\\scripter\\parser.y"
#line 107 "C:\\spongebob\\Utils\\scripter\\parser.y"
s_baseTreeNode=yyattribute(1 - 1).treenode;
#line 82 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
@ -89,7 +89,7 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
yyinitdebug((void YYFAR**)yya, 3);
#endif
{
#line 106 "C:\\spongebob\\Utils\\scripter\\parser.y"
#line 111 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(STMT_LIST,yyattribute(1 - 2).treenode,yyattribute(2 - 2).treenode);
#line 95 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
@ -97,7 +97,7 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
break;
case 2:
{
#line 107 "C:\\spongebob\\Utils\\scripter\\parser.y"
#line 112 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(EMPTY_STMT);
#line 103 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
@ -109,7 +109,7 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
yyinitdebug((void YYFAR**)yya, 2);
#endif
{
#line 111 "C:\\spongebob\\Utils\\scripter\\parser.y"
#line 116 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(EMPTY_STMT);
#line 115 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
@ -122,7 +122,7 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
yyinitdebug((void YYFAR**)yya, 3);
#endif
{
#line 112 "C:\\spongebob\\Utils\\scripter\\parser.y"
#line 117 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(STOP_STMT);
#line 128 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
@ -135,7 +135,7 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
yyinitdebug((void YYFAR**)yya, 3);
#endif
{
#line 113 "C:\\spongebob\\Utils\\scripter\\parser.y"
#line 118 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(PAUSE_STMT);
#line 141 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
@ -148,7 +148,7 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
yyinitdebug((void YYFAR**)yya, 6);
#endif
{
#line 114 "C:\\spongebob\\Utils\\scripter\\parser.y"
#line 119 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(PRINT_STMT,yyattribute(3 - 5).treenode);
#line 154 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
@ -161,7 +161,7 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
yyinitdebug((void YYFAR**)yya, 3);
#endif
{
#line 115 "C:\\spongebob\\Utils\\scripter\\parser.y"
#line 120 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 2).treenode;
#line 167 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
@ -174,7 +174,7 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
yyinitdebug((void YYFAR**)yya, 6);
#endif
{
#line 116 "C:\\spongebob\\Utils\\scripter\\parser.y"
#line 121 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(IF_STMT,yyattribute(3 - 5).treenode,yyattribute(5 - 5).treenode);
#line 180 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
@ -187,7 +187,7 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
yyinitdebug((void YYFAR**)yya, 8);
#endif
{
#line 117 "C:\\spongebob\\Utils\\scripter\\parser.y"
#line 122 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(IFELSE_STMT,yyattribute(3 - 7).treenode,yyattribute(5 - 7).treenode,yyattribute(7 - 7).treenode);
#line 193 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
@ -196,12 +196,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
case 10:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[4];
yyinitdebug((void YYFAR**)yya, 4);
YYSTYPE YYFAR* yya[6];
yyinitdebug((void YYFAR**)yya, 6);
#endif
{
#line 118 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(STMT_LIST,yyattribute(2 - 3).treenode);
#line 123 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(WHILE_STMT,yyattribute(3 - 5).treenode,yyattribute(5 - 5).treenode);
#line 206 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
@ -209,12 +209,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
case 11:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[3];
yyinitdebug((void YYFAR**)yya, 3);
YYSTYPE YYFAR* yya[8];
yyinitdebug((void YYFAR**)yya, 8);
#endif
{
#line 119 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(STMT_LIST,yyattribute(1 - 2).treenode,new CTreeNode(POP_STMT));
#line 124 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(DOWHILE_STMT,yyattribute(2 - 7).treenode,yyattribute(5 - 7).treenode);
#line 219 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
@ -226,8 +226,8 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
yyinitdebug((void YYFAR**)yya, 4);
#endif
{
#line 124 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(ASSIGN_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
#line 125 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(STMT_LIST,yyattribute(2 - 3).treenode);
#line 232 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
@ -235,12 +235,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
case 13:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[4];
yyinitdebug((void YYFAR**)yya, 4);
YYSTYPE YYFAR* yya[3];
yyinitdebug((void YYFAR**)yya, 3);
#endif
{
#line 129 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(2 - 3).treenode;
#line 126 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(STMT_LIST,yyattribute(1 - 2).treenode,new CTreeNode(POP_STMT));
#line 245 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
@ -248,12 +248,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
case 14:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[2];
yyinitdebug((void YYFAR**)yya, 2);
YYSTYPE YYFAR* yya[4];
yyinitdebug((void YYFAR**)yya, 4);
#endif
{
#line 130 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode;
#line 131 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(ASSIGN_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
#line 258 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
@ -261,12 +261,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
case 15:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[2];
yyinitdebug((void YYFAR**)yya, 2);
YYSTYPE YYFAR* yya[4];
yyinitdebug((void YYFAR**)yya, 4);
#endif
{
#line 131 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode;
#line 136 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(2 - 3).treenode;
#line 271 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
@ -274,12 +274,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
case 16:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[4];
yyinitdebug((void YYFAR**)yya, 4);
YYSTYPE YYFAR* yya[2];
yyinitdebug((void YYFAR**)yya, 2);
#endif
{
#line 135 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(EQUAL_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
#line 137 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode;
#line 284 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
@ -287,12 +287,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
case 17:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[4];
yyinitdebug((void YYFAR**)yya, 4);
YYSTYPE YYFAR* yya[2];
yyinitdebug((void YYFAR**)yya, 2);
#endif
{
#line 139 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(NOTEQUAL_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
#line 138 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode;
#line 297 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
@ -304,8 +304,8 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
yyinitdebug((void YYFAR**)yya, 2);
#endif
{
#line 144 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VARIABLE_EXPR,yyattribute(1 - 1).variableIdx);
#line 139 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode;
#line 310 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
@ -317,8 +317,8 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
yyinitdebug((void YYFAR**)yya, 2);
#endif
{
#line 148 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VALUE_EXPR,yyattribute(1 - 1).value);
#line 140 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode;
#line 323 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
@ -326,12 +326,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
case 20:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[2];
yyinitdebug((void YYFAR**)yya, 2);
YYSTYPE YYFAR* yya[4];
yyinitdebug((void YYFAR**)yya, 4);
#endif
{
#line 149 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VARIABLE_EXPR,yyattribute(1 - 1).variableIdx);
#line 144 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(EQUAL_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
#line 336 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
@ -343,8 +343,8 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
yyinitdebug((void YYFAR**)yya, 4);
#endif
{
#line 150 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(PLUS_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
#line 148 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(NOTEQUAL_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
#line 349 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
@ -352,12 +352,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
case 22:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[2];
yyinitdebug((void YYFAR**)yya, 2);
YYSTYPE YYFAR* yya[4];
yyinitdebug((void YYFAR**)yya, 4);
#endif
{
#line 151 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode;
#line 152 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(LESSTHAN_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
#line 362 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
@ -365,26 +365,117 @@ s_baseTreeNode=yyattribute(1 - 1).treenode;
case 23:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[3];
yyinitdebug((void YYFAR**)yya, 3);
YYSTYPE YYFAR* yya[4];
yyinitdebug((void YYFAR**)yya, 4);
#endif
{
#line 156 "C:\\spongebob\\Utils\\scripter\\parser.y"
if(yyattribute(1 - 2).functionNumber!=-1){m_functionNumber=yyattribute(1 - 2).functionNumber;m_functionArgs=getFunctionArgs(yyattribute(1 - 2).functionNumber);}
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(GREATERTHAN_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
#line 375 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
break;
case 24:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[2];
yyinitdebug((void YYFAR**)yya, 2);
#endif
{
#line 161 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VARIABLE_EXPR,yyattribute(1 - 1).variableIdx);
#line 388 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
break;
case 25:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[2];
yyinitdebug((void YYFAR**)yya, 2);
#endif
{
#line 165 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VALUE_EXPR,yyattribute(1 - 1).value);
#line 401 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
break;
case 26:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[2];
yyinitdebug((void YYFAR**)yya, 2);
#endif
{
#line 166 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VARIABLE_EXPR,yyattribute(1 - 1).variableIdx);
#line 414 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
break;
case 27:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[4];
yyinitdebug((void YYFAR**)yya, 4);
#endif
{
#line 169 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(PLUS_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
#line 427 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
break;
case 28:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[4];
yyinitdebug((void YYFAR**)yya, 4);
#endif
{
#line 170 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(SUBTRACT_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
#line 440 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
break;
case 29:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[2];
yyinitdebug((void YYFAR**)yya, 2);
#endif
{
#line 171 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode;
#line 453 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
break;
case 30:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[3];
yyinitdebug((void YYFAR**)yya, 3);
#endif
{
#line 176 "C:\\spongebob\\Utils\\scripter\\parser.y"
if(yyattribute(1 - 2).functionNumber!=-1){m_functionNumber=yyattribute(1 - 2).functionNumber;m_functionArgs=getFunctionArgs(yyattribute(1 - 2).functionNumber);}
#line 466 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
break;
case 31:
{
#ifdef YYDEBUG
YYSTYPE YYFAR* yya[5];
yyinitdebug((void YYFAR**)yya, 5);
#endif
{
#line 157 "C:\\spongebob\\Utils\\scripter\\parser.y"
#line 177 "C:\\spongebob\\Utils\\scripter\\parser.y"
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(STMT_LIST,m_functionArgs,new CTreeNode(FUNCTION_EXPR,m_functionNumber));
#line 388 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
#line 479 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
}
}
break;
@ -393,14 +484,14 @@ if(yyattribute(1 - 2).functionNumber!=-1){m_functionNumber=yyattribute(1 - 2).fu
break;
}
}
#line 162 "C:\\spongebob\\Utils\\scripter\\parser.y"
#line 182 "C:\\spongebob\\Utils\\scripter\\parser.y"
/////////////////////////////////////////////////////////////////////////////
// programs section
#line 404 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
#line 495 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
void YYPARSENAME::yytables()
{
yyattribute_size = sizeof(YYSTYPE);
@ -413,20 +504,25 @@ void YYPARSENAME::yytables()
{ "STOP", 257 },
{ "IF", 258 },
{ "ELSE", 259 },
{ "PAUSE", 260 },
{ "PRINT", 261 },
{ "ASSIGN", 262 },
{ "EQUAL", 263 },
{ "NOTEQUAL", 264 },
{ "PLUS", 265 },
{ "END_STMT", 266 },
{ "OPEN_PAR", 267 },
{ "CLOSE_PAR", 268 },
{ "BEGIN_CS", 269 },
{ "END_CS", 270 },
{ "VARIABLE", 272 },
{ "VALUE", 273 },
{ "FUNCTION", 274 },
{ "WHILE", 260 },
{ "DO", 261 },
{ "PAUSE", 262 },
{ "PRINT", 263 },
{ "ASSIGN", 264 },
{ "EQUAL", 265 },
{ "NOTEQUAL", 266 },
{ "LESSTHAN", 267 },
{ "GREATERTHAN", 268 },
{ "PLUS", 269 },
{ "SUBTRACT", 270 },
{ "END_STMT", 271 },
{ "OPEN_PAR", 272 },
{ "CLOSE_PAR", 273 },
{ "BEGIN_CS", 274 },
{ "END_CS", 275 },
{ "VARIABLE", 277 },
{ "VALUE", 278 },
{ "FUNCTION", 279 },
{ NULL, 0 }
};
yysymbol = symbol;
@ -443,18 +539,25 @@ void YYPARSENAME::yytables()
"statement: assign_expression END_STMT",
"statement: IF OPEN_PAR expression CLOSE_PAR statement",
"statement: IF OPEN_PAR expression CLOSE_PAR statement ELSE statement",
"statement: WHILE OPEN_PAR expression CLOSE_PAR statement",
"statement: DO statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT",
"statement: BEGIN_CS statement_list END_CS",
"statement: function END_STMT",
"assign_expression: variable ASSIGN value",
"expression: OPEN_PAR expression CLOSE_PAR",
"expression: equal_expression",
"expression: notequal_expression",
"expression: lessthan_expression",
"expression: greaterthan_expression",
"equal_expression: value EQUAL value",
"notequal_expression: value NOTEQUAL value",
"lessthan_expression: value LESSTHAN value",
"greaterthan_expression: value GREATERTHAN value",
"variable: VARIABLE",
"value: VALUE",
"value: VARIABLE",
"value: value PLUS value",
"value: value SUBTRACT value",
"value: function",
"$$1:",
"function: FUNCTION OPEN_PAR $$1 CLOSE_PAR"
@ -474,164 +577,226 @@ void YYPARSENAME::yytables()
{ 3, 2, 7 },
{ 3, 5, 8 },
{ 3, 7, 9 },
{ 3, 3, 10 },
{ 3, 2, 11 },
{ 4, 3, 12 },
{ 5, 3, 13 },
{ 5, 1, 14 },
{ 5, 1, 15 },
{ 6, 3, 16 },
{ 7, 3, 17 },
{ 8, 1, 18 },
{ 9, 1, 19 },
{ 9, 1, 20 },
{ 9, 3, 21 },
{ 9, 1, 22 },
{ 11, 0, 23 },
{ 10, 4, 24 }
{ 3, 5, 10 },
{ 3, 7, 11 },
{ 3, 3, 12 },
{ 3, 2, 13 },
{ 4, 3, 14 },
{ 5, 3, 15 },
{ 5, 1, 16 },
{ 5, 1, 17 },
{ 5, 1, 18 },
{ 5, 1, 19 },
{ 6, 3, 20 },
{ 7, 3, 21 },
{ 8, 3, 22 },
{ 9, 3, 23 },
{ 10, 1, 24 },
{ 11, 1, 25 },
{ 11, 1, 26 },
{ 11, 3, 27 },
{ 11, 3, 28 },
{ 11, 1, 29 },
{ 13, 0, 30 },
{ 12, 4, 31 }
};
yyreduction = reduction;
static const yytokenaction_t YYNEARFAR YYBASED_CODE tokenaction[] = {
{ 49, YYAT_SHIFT, 3 },
{ 49, YYAT_SHIFT, 4 },
{ 32, YYAT_SHIFT, 40 },
{ 49, YYAT_SHIFT, 5 },
{ 49, YYAT_SHIFT, 6 },
{ 32, YYAT_SHIFT, 41 },
{ 47, YYAT_SHIFT, 40 },
{ 67, YYAT_SHIFT, 3 },
{ 67, YYAT_SHIFT, 4 },
{ 68, YYAT_SHIFT, 70 },
{ 67, YYAT_SHIFT, 5 },
{ 67, YYAT_SHIFT, 6 },
{ 67, YYAT_SHIFT, 7 },
{ 67, YYAT_SHIFT, 8 },
{ 2, YYAT_SHIFT, 3 },
{ 2, YYAT_SHIFT, 4 },
{ 49, YYAT_SHIFT, 7 },
{ 65, YYAT_SHIFT, 68 },
{ 2, YYAT_SHIFT, 5 },
{ 2, YYAT_SHIFT, 6 },
{ 49, YYAT_SHIFT, 8 },
{ 30, YYAT_SHIFT, 38 },
{ 30, YYAT_SHIFT, 39 },
{ 49, YYAT_SHIFT, 9 },
{ 2, YYAT_SHIFT, 7 },
{ 49, YYAT_SHIFT, 10 },
{ 30, YYAT_ERROR, 0 },
{ 2, YYAT_SHIFT, 8 },
{ 46, YYAT_SHIFT, 40 },
{ 45, YYAT_SHIFT, 40 },
{ 67, YYAT_SHIFT, 9 },
{ 40, YYAT_SHIFT, 50 },
{ 40, YYAT_SHIFT, 51 },
{ 67, YYAT_SHIFT, 10 },
{ 57, YYAT_SHIFT, 67 },
{ 40, YYAT_SHIFT, 54 },
{ 67, YYAT_SHIFT, 11 },
{ 2, YYAT_SHIFT, 9 },
{ 44, YYAT_SHIFT, 49 },
{ 67, YYAT_SHIFT, 12 },
{ 54, YYAT_SHIFT, 66 },
{ 2, YYAT_SHIFT, 10 },
{ 40, YYAT_SHIFT, 25 },
{ 40, YYAT_SHIFT, 26 },
{ 40, YYAT_SHIFT, 10 },
{ 41, YYAT_SHIFT, 48 },
{ 36, YYAT_SHIFT, 43 },
{ 35, YYAT_SHIFT, 40 },
{ 34, YYAT_SHIFT, 42 },
{ 27, YYAT_SHIFT, 37 },
{ 24, YYAT_SHIFT, 24 },
{ 19, YYAT_SHIFT, 33 },
{ 14, YYAT_SHIFT, 23 },
{ 13, YYAT_SHIFT, 22 },
{ 12, YYAT_SHIFT, 21 },
{ 10, YYAT_SHIFT, 20 },
{ 6, YYAT_SHIFT, 18 },
{ 5, YYAT_SHIFT, 17 },
{ 4, YYAT_SHIFT, 16 },
{ 3, YYAT_SHIFT, 15 },
{ 63, YYAT_SHIFT, 50 },
{ 63, YYAT_SHIFT, 51 },
{ 2, YYAT_SHIFT, 11 },
{ 51, YYAT_ERROR, 0 },
{ 2, YYAT_SHIFT, 12 },
{ 36, YYAT_SHIFT, 46 },
{ 36, YYAT_SHIFT, 47 },
{ 36, YYAT_SHIFT, 48 },
{ 36, YYAT_SHIFT, 49 },
{ 53, YYAT_SHIFT, 28 },
{ 62, YYAT_SHIFT, 50 },
{ 62, YYAT_SHIFT, 51 },
{ 44, YYAT_SHIFT, 56 },
{ 36, YYAT_ERROR, 0 },
{ 53, YYAT_SHIFT, 29 },
{ 53, YYAT_SHIFT, 30 },
{ 53, YYAT_SHIFT, 12 },
{ 61, YYAT_SHIFT, 50 },
{ 61, YYAT_SHIFT, 51 },
{ 60, YYAT_SHIFT, 50 },
{ 60, YYAT_SHIFT, 51 },
{ 59, YYAT_SHIFT, 50 },
{ 59, YYAT_SHIFT, 51 },
{ 58, YYAT_SHIFT, 50 },
{ 58, YYAT_SHIFT, 51 },
{ 43, YYAT_SHIFT, 50 },
{ 43, YYAT_SHIFT, 51 },
{ 42, YYAT_SHIFT, 55 },
{ 39, YYAT_SHIFT, 53 },
{ 38, YYAT_SHIFT, 52 },
{ 31, YYAT_SHIFT, 45 },
{ 23, YYAT_SHIFT, 41 },
{ 20, YYAT_SHIFT, 39 },
{ 16, YYAT_SHIFT, 27 },
{ 15, YYAT_SHIFT, 26 },
{ 14, YYAT_SHIFT, 25 },
{ 12, YYAT_SHIFT, 24 },
{ 8, YYAT_SHIFT, 22 },
{ 7, YYAT_SHIFT, 21 },
{ 5, YYAT_SHIFT, 19 },
{ 4, YYAT_SHIFT, 18 },
{ 3, YYAT_SHIFT, 17 },
{ 1, YYAT_ACCEPT, 0 }
};
yytokenaction = tokenaction;
yytokenaction_size = 44;
yytokenaction_size = 68;
static const yystateaction_t YYNEARFAR YYBASED_CODE stateaction[] = {
{ 0, 0, YYAT_REDUCE, 3 },
{ 43, 1, YYAT_ERROR, 0 },
{ 67, 1, YYAT_ERROR, 0 },
{ -250, 1, YYAT_REDUCE, 1 },
{ -224, 1, YYAT_DEFAULT, 41 },
{ -226, 1, YYAT_DEFAULT, 10 },
{ -226, 1, YYAT_DEFAULT, 41 },
{ -228, 1, YYAT_DEFAULT, 10 },
{ -205, 1, YYAT_DEFAULT, 68 },
{ -207, 1, YYAT_DEFAULT, 39 },
{ -208, 1, YYAT_DEFAULT, 39 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ -208, 1, YYAT_DEFAULT, 68 },
{ -210, 1, YYAT_DEFAULT, 39 },
{ 0, 0, YYAT_REDUCE, 4 },
{ 0, 0, YYAT_REDUCE, 3 },
{ 0, 0, YYAT_REDUCE, 19 },
{ -229, 1, YYAT_ERROR, 0 },
{ 0, 0, YYAT_REDUCE, 2 },
{ -229, 1, YYAT_DEFAULT, 41 },
{ -226, 1, YYAT_ERROR, 0 },
{ -231, 1, YYAT_DEFAULT, 41 },
{ 0, 0, YYAT_REDUCE, 5 },
{ 0, 0, YYAT_DEFAULT, 24 },
{ 0, 0, YYAT_REDUCE, 6 },
{ 0, 0, YYAT_DEFAULT, 40 },
{ -236, 1, YYAT_DEFAULT, 49 },
{ 0, 0, YYAT_REDUCE, 24 },
{ 0, 0, YYAT_REDUCE, 8 },
{ 0, 0, YYAT_DEFAULT, 40 },
{ 0, 0, YYAT_REDUCE, 12 },
{ -234, 1, YYAT_DEFAULT, 40 },
{ 0, 0, YYAT_REDUCE, 21 },
{ 0, 0, YYAT_REDUCE, 20 },
{ -236, 1, YYAT_DEFAULT, 36 },
{ 0, 0, YYAT_REDUCE, 15 },
{ 0, 0, YYAT_REDUCE, 16 },
{ -250, 1, YYAT_DEFAULT, 32 },
{ 0, 0, YYAT_REDUCE, 23 },
{ -263, 1, YYAT_DEFAULT, 36 },
{ 0, 0, YYAT_REDUCE, 11 },
{ -237, 1, YYAT_DEFAULT, 36 },
{ -235, 1, YYAT_REDUCE, 13 },
{ -239, 1, YYAT_ERROR, 0 },
{ 0, 0, YYAT_DEFAULT, 49 },
{ 0, 0, YYAT_DEFAULT, 40 },
{ 0, 0, YYAT_DEFAULT, 40 },
{ -247, 1, YYAT_ERROR, 0 },
{ -238, 1, YYAT_ERROR, 0 },
{ 0, 0, YYAT_REDUCE, 25 },
{ -211, 1, YYAT_DEFAULT, 39 },
{ 0, 0, YYAT_REDUCE, 2 },
{ -211, 1, YYAT_DEFAULT, 68 },
{ -205, 1, YYAT_ERROR, 0 },
{ -213, 1, YYAT_DEFAULT, 68 },
{ 0, 0, YYAT_REDUCE, 5 },
{ 0, 0, YYAT_DEFAULT, 53 },
{ 0, 0, YYAT_DEFAULT, 53 },
{ -203, 1, YYAT_ERROR, 0 },
{ 0, 0, YYAT_REDUCE, 6 },
{ 0, 0, YYAT_DEFAULT, 51 },
{ -219, 1, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_REDUCE, 31 },
{ 0, 0, YYAT_REDUCE, 8 },
{ 0, 0, YYAT_DEFAULT, 51 },
{ 0, 0, YYAT_REDUCE, 14 },
{ -236, 1, YYAT_REDUCE, 9 },
{ -244, 1, YYAT_REDUCE, 17 },
{ -245, 1, YYAT_REDUCE, 18 },
{ -259, 1, YYAT_REDUCE, 22 },
{ 0, 0, YYAT_DEFAULT, 53 },
{ 0, 0, YYAT_REDUCE, 27 },
{ 0, 0, YYAT_REDUCE, 26 },
{ -218, 1, YYAT_DEFAULT, 65 },
{ 0, 0, YYAT_REDUCE, 17 },
{ 0, 0, YYAT_REDUCE, 18 },
{ 0, 0, YYAT_REDUCE, 19 },
{ 0, 0, YYAT_REDUCE, 20 },
{ -235, 1, YYAT_DEFAULT, 40 },
{ 0, 0, YYAT_REDUCE, 30 },
{ -219, 1, YYAT_DEFAULT, 65 },
{ -219, 1, YYAT_ERROR, 0 },
{ -254, 1, YYAT_DEFAULT, 65 },
{ 0, 0, YYAT_REDUCE, 13 },
{ -221, 1, YYAT_DEFAULT, 65 },
{ -219, 1, YYAT_REDUCE, 15 },
{ -236, 1, YYAT_DEFAULT, 65 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ 0, 0, YYAT_DEFAULT, 51 },
{ 0, 0, YYAT_DEFAULT, 51 },
{ 0, 0, YYAT_DEFAULT, 51 },
{ 0, 0, YYAT_DEFAULT, 51 },
{ 0, 0, YYAT_DEFAULT, 51 },
{ -244, 1, YYAT_DEFAULT, 53 },
{ 0, 0, YYAT_DEFAULT, 67 },
{ -238, 1, YYAT_DEFAULT, 39 },
{ -248, 1, YYAT_DEFAULT, 68 },
{ 0, 0, YYAT_REDUCE, 32 },
{ 0, 0, YYAT_REDUCE, 16 },
{ -241, 1, YYAT_REDUCE, 9 },
{ -221, 1, YYAT_REDUCE, 21 },
{ -223, 1, YYAT_REDUCE, 22 },
{ -225, 1, YYAT_REDUCE, 23 },
{ -227, 1, YYAT_REDUCE, 24 },
{ -234, 1, YYAT_REDUCE, 28 },
{ -244, 1, YYAT_REDUCE, 29 },
{ 0, 0, YYAT_REDUCE, 11 },
{ -264, 1, YYAT_ERROR, 0 },
{ 0, 0, YYAT_REDUCE, 7 },
{ -257, 1, YYAT_DEFAULT, 41 },
{ 0, 0, YYAT_REDUCE, 10 }
{ -257, 1, YYAT_DEFAULT, 68 },
{ -269, 1, YYAT_ERROR, 0 },
{ 0, 0, YYAT_REDUCE, 10 },
{ 0, 0, YYAT_REDUCE, 12 }
};
yystateaction = stateaction;
static const yynontermgoto_t YYNEARFAR YYBASED_CODE nontermgoto[] = {
{ 49, 50 },
{ 49, 12 },
{ 24, 36 },
{ 24, 28 },
{ 24, 29 },
{ 49, 13 },
{ 24, 30 },
{ 49, 14 },
{ 40, 47 },
{ 40, 31 },
{ 53, 65 },
{ 53, 32 },
{ 53, 33 },
{ 53, 34 },
{ 53, 35 },
{ 52, 64 },
{ 53, 36 },
{ 67, 69 },
{ 67, 14 },
{ 51, 63 },
{ 51, 37 },
{ 0, 1 },
{ 0, 2 },
{ 39, 46 },
{ 38, 45 },
{ 37, 44 },
{ 22, 35 },
{ 20, 34 },
{ 19, 11 },
{ 18, 32 },
{ 16, 27 },
{ 8, 19 }
{ 50, 62 },
{ 67, 15 },
{ 49, 61 },
{ 67, 16 },
{ 48, 60 },
{ 47, 59 },
{ 46, 58 },
{ 45, 57 },
{ 28, 44 },
{ 26, 43 },
{ 24, 42 },
{ 23, 13 },
{ 22, 40 },
{ 19, 38 },
{ 18, 31 },
{ 10, 23 },
{ 6, 20 }
};
yynontermgoto = nontermgoto;
yynontermgoto_size = 21;
yynontermgoto_size = 30;
static const yystategoto_t YYNEARFAR YYBASED_CODE stategoto[] = {
{ 9, -1 },
{ 10, -1 },
{ 0, -1 },
{ 0, 19 },
{ 0, 23 },
{ 0, -1 },
{ 0, -1 },
{ 0, -1 },
{ 26, 67 },
{ 0, -1 },
{ 0, -1 },
{ 18, -1 },
{ 0, -1 },
{ 26, -1 },
{ 0, -1 },
{ 0, -1 },
{ 0, -1 },
@ -639,15 +804,17 @@ void YYPARSENAME::yytables()
{ 0, -1 },
{ 0, -1 },
{ 0, -1 },
{ 14, 24 },
{ 22, 53 },
{ 21, 53 },
{ 0, -1 },
{ 9, 40 },
{ 14, 49 },
{ 5, -1 },
{ 0, -1 },
{ 6, 40 },
{ 14, 51 },
{ 21, 67 },
{ 10, -1 },
{ 0, -1 },
{ -3, 40 },
{ 11, 51 },
{ 0, -1 },
{ 16, 53 },
{ 0, -1 },
{ 0, -1 },
{ 0, -1 },
@ -660,10 +827,19 @@ void YYPARSENAME::yytables()
{ 0, -1 },
{ 0, -1 },
{ 0, -1 },
{ 11, 49 },
{ 4, 40 },
{ 3, 40 },
{ -1, -1 },
{ 0, -1 },
{ 0, -1 },
{ 0, -1 },
{ 0, -1 },
{ 17, 67 },
{ 8, 51 },
{ 7, 51 },
{ 6, 51 },
{ 4, 51 },
{ 2, 51 },
{ -2, -1 },
{ 2, 67 },
{ -5, 51 },
{ 0, -1 },
{ 0, -1 },
{ 0, -1 },
@ -672,7 +848,14 @@ void YYPARSENAME::yytables()
{ 0, -1 },
{ 0, -1 },
{ 0, -1 },
{ -3, -1 },
{ 0, -1 },
{ 0, -1 },
{ 0, -1 },
{ 0, -1 },
{ 0, -1 },
{ 4, -1 },
{ 0, -1 },
{ 0, -1 },
{ 0, -1 }
};
yystategoto = stategoto;

View file

@ -63,19 +63,24 @@ union tagYYSTYPE {
#define STOP 257
#define IF 258
#define ELSE 259
#define PAUSE 260
#define PRINT 261
#define ASSIGN 262
#define EQUAL 263
#define NOTEQUAL 264
#define PLUS 265
#define END_STMT 266
#define OPEN_PAR 267
#define CLOSE_PAR 268
#define BEGIN_CS 269
#define END_CS 270
#define COMMA 271
#define VARIABLE 272
#define VALUE 273
#define FUNCTION 274
#define WHILE 260
#define DO 261
#define PAUSE 262
#define PRINT 263
#define ASSIGN 264
#define EQUAL 265
#define NOTEQUAL 266
#define LESSTHAN 267
#define GREATERTHAN 268
#define PLUS 269
#define SUBTRACT 270
#define END_STMT 271
#define OPEN_PAR 272
#define CLOSE_PAR 273
#define BEGIN_CS 274
#define END_CS 275
#define COMMA 276
#define VARIABLE 277
#define VALUE 278
#define FUNCTION 279
#endif

View file

@ -12,29 +12,38 @@
8 | assign_expression END_STMT
9 | IF OPEN_PAR expression CLOSE_PAR statement
10 | IF OPEN_PAR expression CLOSE_PAR statement ELSE statement
11 | BEGIN_CS statement_list END_CS
12 | function END_STMT
11 | WHILE OPEN_PAR expression CLOSE_PAR statement
12 | DO statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT
13 | BEGIN_CS statement_list END_CS
14 | function END_STMT
13 assign_expression : variable ASSIGN value
15 assign_expression : variable ASSIGN value
14 expression : OPEN_PAR expression CLOSE_PAR
15 | equal_expression
16 | notequal_expression
16 expression : OPEN_PAR expression CLOSE_PAR
17 | equal_expression
18 | notequal_expression
19 | lessthan_expression
20 | greaterthan_expression
17 equal_expression : value EQUAL value
21 equal_expression : value EQUAL value
18 notequal_expression : value NOTEQUAL value
22 notequal_expression : value NOTEQUAL value
19 variable : VARIABLE
23 lessthan_expression : value LESSTHAN value
20 value : VALUE
21 | VARIABLE
22 | value PLUS value
23 | function
24 greaterthan_expression : value GREATERTHAN value
24 $$1 :
25 variable : VARIABLE
25 function : FUNCTION OPEN_PAR $$1 CLOSE_PAR
26 value : VALUE
27 | VARIABLE
28 | value PLUS value
29 | value SUBTRACT value
30 | function
31 $$1 :
32 function : FUNCTION OPEN_PAR $$1 CLOSE_PAR
state 0
@ -59,420 +68,649 @@ state 2
STOP shift 3
IF shift 4
PAUSE shift 5
PRINT shift 6
END_STMT shift 7
BEGIN_CS shift 8
VARIABLE shift 9
FUNCTION shift 10
WHILE shift 5
DO shift 6
PAUSE shift 7
PRINT shift 8
END_STMT shift 9
BEGIN_CS shift 10
VARIABLE shift 11
FUNCTION shift 12
. reduce 1
statement goto 11
assign_expression goto 12
variable goto 13
function goto 14
statement goto 13
assign_expression goto 14
variable goto 15
function goto 16
state 3
statement : STOP . END_STMT
END_STMT shift 15
END_STMT shift 17
state 4
statement : IF . OPEN_PAR expression CLOSE_PAR statement
statement : IF . OPEN_PAR expression CLOSE_PAR statement ELSE statement
OPEN_PAR shift 16
state 5
statement : PAUSE . END_STMT
END_STMT shift 17
state 6
statement : PRINT . OPEN_PAR value CLOSE_PAR END_STMT
OPEN_PAR shift 18
state 5
statement : WHILE . OPEN_PAR expression CLOSE_PAR statement
OPEN_PAR shift 19
state 6
statement : DO . statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT
STOP shift 3
IF shift 4
WHILE shift 5
DO shift 6
PAUSE shift 7
PRINT shift 8
END_STMT shift 9
BEGIN_CS shift 10
VARIABLE shift 11
FUNCTION shift 12
statement goto 20
assign_expression goto 14
variable goto 15
function goto 16
state 7
statement : PAUSE . END_STMT
END_STMT shift 21
state 8
statement : PRINT . OPEN_PAR value CLOSE_PAR END_STMT
OPEN_PAR shift 22
state 9
statement : END_STMT . (4)
. reduce 4
state 8
state 10
statement : BEGIN_CS . statement_list END_CS
statement_list : . (3)
. reduce 3
statement_list goto 19
state 9
variable : VARIABLE . (19)
. reduce 19
state 10
function : FUNCTION . OPEN_PAR $$1 CLOSE_PAR
OPEN_PAR shift 20
statement_list goto 23
state 11
variable : VARIABLE . (25)
. reduce 25
state 12
function : FUNCTION . OPEN_PAR $$1 CLOSE_PAR
OPEN_PAR shift 24
state 13
statement_list : statement_list statement . (2)
. reduce 2
state 12
state 14
statement : assign_expression . END_STMT
END_STMT shift 21
state 13
assign_expression : variable . ASSIGN value
ASSIGN shift 22
state 14
statement : function . END_STMT
END_STMT shift 23
END_STMT shift 25
state 15
assign_expression : variable . ASSIGN value
ASSIGN shift 26
state 16
statement : function . END_STMT
END_STMT shift 27
state 17
statement : STOP END_STMT . (5)
. reduce 5
state 16
state 18
statement : IF OPEN_PAR . expression CLOSE_PAR statement
statement : IF OPEN_PAR . expression CLOSE_PAR statement ELSE statement
OPEN_PAR shift 24
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
OPEN_PAR shift 28
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
expression goto 27
equal_expression goto 28
notequal_expression goto 29
value goto 30
function goto 31
expression goto 31
equal_expression goto 32
notequal_expression goto 33
lessthan_expression goto 34
greaterthan_expression goto 35
value goto 36
function goto 37
state 17
state 19
statement : WHILE OPEN_PAR . expression CLOSE_PAR statement
OPEN_PAR shift 28
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
expression goto 38
equal_expression goto 32
notequal_expression goto 33
lessthan_expression goto 34
greaterthan_expression goto 35
value goto 36
function goto 37
state 20
statement : DO statement . WHILE OPEN_PAR expression CLOSE_PAR END_STMT
WHILE shift 39
state 21
statement : PAUSE END_STMT . (6)
. reduce 6
state 18
state 22
statement : PRINT OPEN_PAR . value CLOSE_PAR END_STMT
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 32
function goto 31
value goto 40
function goto 37
state 19
state 23
statement_list : statement_list . statement
statement : BEGIN_CS statement_list . END_CS
STOP shift 3
IF shift 4
PAUSE shift 5
PRINT shift 6
END_STMT shift 7
BEGIN_CS shift 8
END_CS shift 33
VARIABLE shift 9
FUNCTION shift 10
WHILE shift 5
DO shift 6
PAUSE shift 7
PRINT shift 8
END_STMT shift 9
BEGIN_CS shift 10
END_CS shift 41
VARIABLE shift 11
FUNCTION shift 12
statement goto 11
assign_expression goto 12
variable goto 13
function goto 14
statement goto 13
assign_expression goto 14
variable goto 15
function goto 16
state 20
state 24
function : FUNCTION OPEN_PAR . $$1 CLOSE_PAR
$$1 : . (24)
$$1 : . (31)
. reduce 24
. reduce 31
$$1 goto 34
$$1 goto 42
state 21
state 25
statement : assign_expression END_STMT . (8)
. reduce 8
state 22
state 26
assign_expression : variable ASSIGN . value
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 35
function goto 31
value goto 43
function goto 37
state 23
statement : function END_STMT . (12)
state 27
statement : function END_STMT . (14)
. reduce 12
. reduce 14
state 24
state 28
expression : OPEN_PAR . expression CLOSE_PAR
OPEN_PAR shift 24
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
OPEN_PAR shift 28
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
expression goto 36
equal_expression goto 28
notequal_expression goto 29
value goto 30
function goto 31
expression goto 44
equal_expression goto 32
notequal_expression goto 33
lessthan_expression goto 34
greaterthan_expression goto 35
value goto 36
function goto 37
state 25
value : VARIABLE . (21)
state 29
value : VARIABLE . (27)
. reduce 21
. reduce 27
state 26
value : VALUE . (20)
state 30
value : VALUE . (26)
. reduce 26
state 31
statement : IF OPEN_PAR expression . CLOSE_PAR statement
statement : IF OPEN_PAR expression . CLOSE_PAR statement ELSE statement
CLOSE_PAR shift 45
state 32
expression : equal_expression . (17)
. reduce 17
state 33
expression : notequal_expression . (18)
. reduce 18
state 34
expression : lessthan_expression . (19)
. reduce 19
state 35
expression : greaterthan_expression . (20)
. reduce 20
state 27
statement : IF OPEN_PAR expression . CLOSE_PAR statement
statement : IF OPEN_PAR expression . CLOSE_PAR statement ELSE statement
CLOSE_PAR shift 37
state 28
expression : equal_expression . (15)
. reduce 15
state 29
expression : notequal_expression . (16)
. reduce 16
state 30
state 36
equal_expression : value . EQUAL value
notequal_expression : value . NOTEQUAL value
lessthan_expression : value . LESSTHAN value
greaterthan_expression : value . GREATERTHAN value
value : value . PLUS value
value : value . SUBTRACT value
EQUAL shift 38
NOTEQUAL shift 39
PLUS shift 40
state 31
value : function . (23)
. reduce 23
state 32
statement : PRINT OPEN_PAR value . CLOSE_PAR END_STMT
value : value . PLUS value
PLUS shift 40
CLOSE_PAR shift 41
state 33
statement : BEGIN_CS statement_list END_CS . (11)
. reduce 11
state 34
function : FUNCTION OPEN_PAR $$1 . CLOSE_PAR
CLOSE_PAR shift 42
state 35
assign_expression : variable ASSIGN value . (13)
value : value . PLUS value
PLUS shift 40
. reduce 13
state 36
expression : OPEN_PAR expression . CLOSE_PAR
CLOSE_PAR shift 43
EQUAL shift 46
NOTEQUAL shift 47
LESSTHAN shift 48
GREATERTHAN shift 49
PLUS shift 50
SUBTRACT shift 51
state 37
value : function . (30)
. reduce 30
state 38
statement : WHILE OPEN_PAR expression . CLOSE_PAR statement
CLOSE_PAR shift 52
state 39
statement : DO statement WHILE . OPEN_PAR expression CLOSE_PAR END_STMT
OPEN_PAR shift 53
state 40
statement : PRINT OPEN_PAR value . CLOSE_PAR END_STMT
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
CLOSE_PAR shift 54
state 41
statement : BEGIN_CS statement_list END_CS . (13)
. reduce 13
state 42
function : FUNCTION OPEN_PAR $$1 . CLOSE_PAR
CLOSE_PAR shift 55
state 43
assign_expression : variable ASSIGN value . (15)
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 15
state 44
expression : OPEN_PAR expression . CLOSE_PAR
CLOSE_PAR shift 56
state 45
statement : IF OPEN_PAR expression CLOSE_PAR . statement
statement : IF OPEN_PAR expression CLOSE_PAR . statement ELSE statement
STOP shift 3
IF shift 4
PAUSE shift 5
PRINT shift 6
END_STMT shift 7
BEGIN_CS shift 8
VARIABLE shift 9
FUNCTION shift 10
WHILE shift 5
DO shift 6
PAUSE shift 7
PRINT shift 8
END_STMT shift 9
BEGIN_CS shift 10
VARIABLE shift 11
FUNCTION shift 12
statement goto 44
assign_expression goto 12
variable goto 13
function goto 14
state 38
equal_expression : value EQUAL . value
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
value goto 45
function goto 31
state 39
notequal_expression : value NOTEQUAL . value
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
value goto 46
function goto 31
state 40
value : value PLUS . value
VARIABLE shift 25
VALUE shift 26
FUNCTION shift 10
value goto 47
function goto 31
state 41
statement : PRINT OPEN_PAR value CLOSE_PAR . END_STMT
END_STMT shift 48
state 42
function : FUNCTION OPEN_PAR $$1 CLOSE_PAR . (25)
. reduce 25
state 43
expression : OPEN_PAR expression CLOSE_PAR . (14)
. reduce 14
44: shift-reduce conflict (shift 49, reduce 9) on ELSE
state 44
statement : IF OPEN_PAR expression CLOSE_PAR statement . (9)
statement : IF OPEN_PAR expression CLOSE_PAR statement . ELSE statement
ELSE shift 49
. reduce 9
state 45
equal_expression : value EQUAL value . (17)
value : value . PLUS value
PLUS shift 40
. reduce 17
statement goto 57
assign_expression goto 14
variable goto 15
function goto 16
state 46
notequal_expression : value NOTEQUAL value . (18)
value : value . PLUS value
equal_expression : value EQUAL . value
PLUS shift 40
. reduce 18
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 58
function goto 37
47: shift-reduce conflict (shift 40, reduce 22) on PLUS
state 47
value : value PLUS value . (22)
value : value . PLUS value
notequal_expression : value NOTEQUAL . value
PLUS shift 40
. reduce 22
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 59
function goto 37
state 48
lessthan_expression : value LESSTHAN . value
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 60
function goto 37
state 49
greaterthan_expression : value GREATERTHAN . value
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 61
function goto 37
state 50
value : value PLUS . value
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 62
function goto 37
state 51
value : value SUBTRACT . value
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
value goto 63
function goto 37
state 52
statement : WHILE OPEN_PAR expression CLOSE_PAR . statement
STOP shift 3
IF shift 4
WHILE shift 5
DO shift 6
PAUSE shift 7
PRINT shift 8
END_STMT shift 9
BEGIN_CS shift 10
VARIABLE shift 11
FUNCTION shift 12
statement goto 64
assign_expression goto 14
variable goto 15
function goto 16
state 53
statement : DO statement WHILE OPEN_PAR . expression CLOSE_PAR END_STMT
OPEN_PAR shift 28
VARIABLE shift 29
VALUE shift 30
FUNCTION shift 12
expression goto 65
equal_expression goto 32
notequal_expression goto 33
lessthan_expression goto 34
greaterthan_expression goto 35
value goto 36
function goto 37
state 54
statement : PRINT OPEN_PAR value CLOSE_PAR . END_STMT
END_STMT shift 66
state 55
function : FUNCTION OPEN_PAR $$1 CLOSE_PAR . (32)
. reduce 32
state 56
expression : OPEN_PAR expression CLOSE_PAR . (16)
. reduce 16
57: shift-reduce conflict (shift 67, reduce 9) on ELSE
state 57
statement : IF OPEN_PAR expression CLOSE_PAR statement . (9)
statement : IF OPEN_PAR expression CLOSE_PAR statement . ELSE statement
ELSE shift 67
. reduce 9
state 58
equal_expression : value EQUAL value . (21)
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 21
state 59
notequal_expression : value NOTEQUAL value . (22)
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 22
state 60
lessthan_expression : value LESSTHAN value . (23)
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 23
state 61
greaterthan_expression : value GREATERTHAN value . (24)
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 24
62: shift-reduce conflict (shift 50, reduce 28) on PLUS
62: shift-reduce conflict (shift 51, reduce 28) on SUBTRACT
state 62
value : value PLUS value . (28)
value : value . PLUS value
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 28
63: shift-reduce conflict (shift 50, reduce 29) on PLUS
63: shift-reduce conflict (shift 51, reduce 29) on SUBTRACT
state 63
value : value . PLUS value
value : value SUBTRACT value . (29)
value : value . SUBTRACT value
PLUS shift 50
SUBTRACT shift 51
. reduce 29
state 64
statement : WHILE OPEN_PAR expression CLOSE_PAR statement . (11)
. reduce 11
state 65
statement : DO statement WHILE OPEN_PAR expression . CLOSE_PAR END_STMT
CLOSE_PAR shift 68
state 66
statement : PRINT OPEN_PAR value CLOSE_PAR END_STMT . (7)
. reduce 7
state 49
state 67
statement : IF OPEN_PAR expression CLOSE_PAR statement ELSE . statement
STOP shift 3
IF shift 4
PAUSE shift 5
PRINT shift 6
END_STMT shift 7
BEGIN_CS shift 8
VARIABLE shift 9
FUNCTION shift 10
WHILE shift 5
DO shift 6
PAUSE shift 7
PRINT shift 8
END_STMT shift 9
BEGIN_CS shift 10
VARIABLE shift 11
FUNCTION shift 12
statement goto 50
assign_expression goto 12
variable goto 13
function goto 14
statement goto 69
assign_expression goto 14
variable goto 15
function goto 16
state 50
state 68
statement : DO statement WHILE OPEN_PAR expression CLOSE_PAR . END_STMT
END_STMT shift 70
state 69
statement : IF OPEN_PAR expression CLOSE_PAR statement ELSE statement . (10)
. reduce 10
State 44 contains 1 shift-reduce conflict
State 47 contains 1 shift-reduce conflict
state 70
statement : DO statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT . (12)
. reduce 12
19 tokens, 12 nonterminals
26 grammar rules, 51 states
State 57 contains 1 shift-reduce conflict
State 62 contains 2 shift-reduce conflicts
State 63 contains 2 shift-reduce conflicts
24 tokens, 14 nonterminals
33 grammar rules, 71 states

View file

@ -66,12 +66,17 @@ private:
%token STOP
%token IF
%token ELSE
%token WHILE
%token DO
%token PAUSE
%token PRINT
%token ASSIGN
%token EQUAL
%token NOTEQUAL
%token LESSTHAN
%token GREATERTHAN
%token PLUS
%token SUBTRACT
%token END_STMT
%token OPEN_PAR
%token CLOSE_PAR
@ -85,7 +90,7 @@ private:
%type <treenode> program statement_list statement
%type <treenode> assign_expression
%type <treenode> expression equal_expression notequal_expression
%type <treenode> expression equal_expression notequal_expression lessthan_expression greaterthan_expression
%type <treenode> variable
%type <treenode> value
%type <treenode> function
@ -115,6 +120,8 @@ statement
|assign_expression END_STMT {$$=$1;}
|IF OPEN_PAR expression CLOSE_PAR statement {$$=new CTreeNode(IF_STMT,$3,$5);}
|IF OPEN_PAR expression CLOSE_PAR statement ELSE statement {$$=new CTreeNode(IFELSE_STMT,$3,$5,$7);}
|WHILE OPEN_PAR expression CLOSE_PAR statement {$$=new CTreeNode(WHILE_STMT,$3,$5);}
|DO statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT {$$=new CTreeNode(DOWHILE_STMT,$2,$5);}
|BEGIN_CS statement_list END_CS {$$=new CTreeNode(STMT_LIST,$2);}
|function END_STMT {$$=new CTreeNode(STMT_LIST,$1,new CTreeNode(POP_STMT));}
;
@ -129,6 +136,8 @@ expression
:OPEN_PAR expression CLOSE_PAR {$$=$2;}
|equal_expression {$$=$1;}
|notequal_expression {$$=$1;}
|lessthan_expression {$$=$1;}
|greaterthan_expression {$$=$1;}
;
equal_expression
@ -139,6 +148,14 @@ notequal_expression
:value NOTEQUAL value {$$=new CTreeNode(NOTEQUAL_EXPR,$1,$3);}
;
lessthan_expression
:value LESSTHAN value {$$=new CTreeNode(LESSTHAN_EXPR,$1,$3);}
;
greaterthan_expression
:value GREATERTHAN value {$$=new CTreeNode(GREATERTHAN_EXPR,$1,$3);}
;
variable
:VARIABLE {$$=new CTreeNode(VARIABLE_EXPR,$1);} // variable id
@ -147,7 +164,10 @@ variable
value
:VALUE {$$=new CTreeNode(VALUE_EXPR,$1);}
|VARIABLE {$$=new CTreeNode(VARIABLE_EXPR,$1);} // variable value
// |PLUS value {$$=$2;}
// |SUBTRACT value {$$=new CTreeNode(STMT_LIST,$1,new CTreeNode(
|value PLUS value {$$=new CTreeNode(PLUS_EXPR,$1,$3);}
|value SUBTRACT value {$$=new CTreeNode(SUBTRACT_EXPR,$1,$3);}
|function {$$=$1;}
;

View file

@ -57,9 +57,16 @@ static int s_numGlobalVarNames=sizeof(s_globalVarNames)/sizeof(char *);
static char *s_localVarNames[]=
{
"tmp0",
"tmp1",
"tmp2",
"tmp3",
"tmp4",
"tmp5",
"tmp6",
"tmp7",
"tmp8",
"tmp9",
};
static int s_numLocalVarNames=sizeof(s_localVarNames)/sizeof(char *);

View file

@ -1,10 +1,74 @@
#include data/scripts/defs.scr
#include data/scripts/defs/defs.scr
#include data/scripts/defs/charanim.scr
//$tmp1=11;
//$tmp2=22;
//$tmp3=_setCharacterExpression(1,2);
//$tmp3=_setCharacterExpression($tmp1,$tmp2);
print($tmp3);
$tmp3=_setText(123);
//do
//{
// print($tmp1);
// $tmp1=$tmp1+1;
// pause;
//}
//while($tmp1<1);
//print(112-_setText(1));
//do
//{
// print($tmp1);
// $tmp1=$tmp1+1;
// pause;
//}
//while($tmp1<2);
//print(222);
//stop;
//_setCharacterAnimation(CHAR_SPONGEBOB,ANIM_QUIET);
//_setText(123);
//pause;
#define x $tmp1
#define y $tmp2
#define vx $tmp3
#define vy $tmp4
#define velocity 5
x=100;
y=100;
vx=velocity;
vy=velocity;
while(1==1)
{
_drawSprite(0,x,y,100);
$tmp0=_getFrameTime();
print($tmp0);
do
{
x=x+vx;
if(x>512)
{
vx=0-velocity;
x=x-velocity;
}
else if(x<0)
{
vx=velocity;
x=x+velocity;
}
y=y+vy;
if(y>256)
{
vy=0-velocity;
y=y-velocity;
}
else if(y<0)
{
vy=velocity;
y=y+velocity;
}
$tmp0=$tmp0-1;
}
while($tmp0>0);
pause;
}
stop;

View file

@ -22,6 +22,10 @@
#include "system\dbg.h"
#endif
#ifndef __SYSTEM_GSTATE_H__
#include "system\gstate.h"
#endif
/* Std Lib
------- */
@ -48,8 +52,10 @@ typedef struct
Function Prototypes
------------------- */
static signed short func_setCharacterExpression(unsigned short *_args);
static signed short func_setCharacterAnimation(unsigned short *_args);
static signed short func_setText(unsigned short *_args);
static signed short func_drawSprite(unsigned short *_args);
static signed short func_getFrameTime(unsigned short *_args);
/*----------------------------------------------------------------------
@ -58,8 +64,10 @@ static signed short func_setText(unsigned short *_args);
static FunctionDef s_functionDefs[]=
{
{ func_setCharacterExpression, 2 }, // character, expression
{ func_setCharacterAnimation, 2 }, // character,animation
{ func_setText, 1 }, // textId
{ func_drawSprite, 4 }, // frame,x,y,ot
{ func_getFrameTime, 0 }, //
};
static const int s_numFunctionDefs=sizeof(s_functionDefs)/sizeof(FunctionDef);
@ -86,10 +94,10 @@ signed short callFunction(int _functionNumber,int _argCount,unsigned short *_arg
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Params: character,animation
Returns:
---------------------------------------------------------------------- */
static signed short func_setCharacterExpression(unsigned short *_args)
static signed short func_setCharacterAnimation(unsigned short *_args)
{
return _args[0];
}
@ -98,7 +106,7 @@ static signed short func_setCharacterExpression(unsigned short *_args)
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Params: textid
Returns:
---------------------------------------------------------------------- */
static signed short func_setText(unsigned short *_args)
@ -107,5 +115,39 @@ static signed short func_setText(unsigned short *_args)
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params: frame,x,y,ot
Returns:
---------------------------------------------------------------------- */
#include "gfx\sprbank.h"
SpriteBank *sb=NULL;
static signed short func_drawSprite(unsigned short *_args)
{
sFrameHdr *fh;
if(!sb)
{
sb=new ("sb") SpriteBank;
sb->load(UI_UIGFX_SPR);
}
fh=sb->getFrameHeader(_args[0]);
sb->printFT4(_args[0],_args[1]-(fh->W/2),_args[2]-(fh->H/2),0,0,_args[3]);
return 0;
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params: textid
Returns:
---------------------------------------------------------------------- */
static signed short func_getFrameTime(unsigned short *_args)
{
return GameState::getFramesSinceLast();
}
/*===========================================================================
end */

View file

@ -259,6 +259,24 @@ PAUL_DBGMSG("pc:0x%04d sp:%03d",m_pc*2,m_sp);
push(val1!=val2);
break;
case OP_IS_LESSTHAN_VALUE: // value, value pushes result ( 0 or 1 ) to stack
val1=pop();
val2=pop();
#ifdef FULL_CODE_OUTPUT
PAUL_DBGMSG("OP_IS_LESSTHAN_VALUE %d,%d",val1,val2);
#endif
push(val1<val2);
break;
case OP_IS_GREATERTHAN_VALUE:// value, value pushes result ( 0 or 1 ) to stack
val1=pop();
val2=pop();
#ifdef FULL_CODE_OUTPUT
PAUL_DBGMSG("OP_IS_GREATERTHAN_VALUE %d,%d",val1,val2);
#endif
push(val1>val2);
break;
case OP_ASSIGN: // varidx, value
val1=pop();
val2=pop();
@ -277,6 +295,14 @@ PAUL_DBGMSG("pc:0x%04d sp:%03d",m_pc*2,m_sp);
push(val1+val2);
break;
case OP_NEG: // value pushes result to stack
val1=pop();
#ifdef FULL_CODE_OUTPUT
PAUL_DBGMSG("NEG %d",val1);
#endif
push(-val1);
break;
case OP_PRINT: // value
val1=pop();
PAUL_DBGMSG("PRINT %d",val1);
@ -291,7 +317,7 @@ PAUL_DBGMSG("pc:0x%04d sp:%03d",m_pc*2,m_sp);
ASSERT(val2<MAX_FUNCTION_ARGS); // Too many args.. just increase the #define to fix this
for(i=0;i<val2;i++)
{
s_argBuffer[i]=pop();
s_argBuffer[val2-i-1]=pop();
}
val3=callFunction(val1,val2,s_argBuffer);
#ifdef FULL_CODE_OUTPUT

View file

@ -55,9 +55,16 @@ private:
// Local vars
enum
{
TMP0,
TMP1,
TMP2,
TMP3,
TMP4,
TMP5,
TMP6,
TMP7,
TMP8,
TMP9,
NUM_LOCAL_VARS,
};
@ -93,8 +100,11 @@ private:
OP_JMPT, // jump, value
OP_IS_EQUAL_VALUE, // value, value pushes result ( 0 or 1 ) to stack
OP_IS_NOTEQUAL_VALUE, // value, value pushes result ( 0 or 1 ) to stack
OP_IS_LESSTHAN_VALUE, // value, value pushes result ( 0 or 1 ) to stack
OP_IS_GREATERTHAN_VALUE,// value, value pushes result ( 0 or 1 ) to stack
OP_ASSIGN, // varidx, value
OP_ADD, // value, value pushes result to stack
OP_NEG, // value pushes result to stack
OP_PRINT, // value
OP_CALL_FUNCTION, // functionnumber, argcount args pushes return value to stack
};

Binary file not shown.

View file

@ -445,6 +445,14 @@ SOURCE=..\..\..\source\sound\xmplay.h
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\..\source\system\clickcount.cpp
# End Source File
# Begin Source File
SOURCE=..\..\..\source\system\clickcount.h
# End Source File
# Begin Source File
SOURCE=..\..\..\source\system\dbg.cpp
# End Source File
# Begin Source File
@ -646,13 +654,21 @@ SOURCE=..\..\..\data\translations\text.dat
# End Group
# Begin Group "scripts"
# PROP Default_Filter ""
# Begin Group "defs"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\..\data\scripts\defs.scr
SOURCE=..\..\..\data\scripts\defs\charanim.scr
# End Source File
# Begin Source File
SOURCE=..\..\..\data\scripts\defs\defs.scr
# End Source File
# End Group
# Begin Source File
SOURCE=..\..\..\data\scripts\test.scr
# End Source File
# End Group