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 <stdio.h>
#include <stdlib.h>
/* Data /* Data
@ -204,6 +205,7 @@ CTreeNode::CTreeNode(NodeType _type,int _data)
int CTreeNode::generateCode(int _write) int CTreeNode::generateCode(int _write)
{ {
int codeSize=0; int codeSize=0;
int tmp1,tmp2;
switch(m_type) switch(m_type)
{ {
@ -248,6 +250,28 @@ int CTreeNode::generateCode(int _write)
codeSize+=m_children[2]->generateCode(_write); codeSize+=m_children[2]->generateCode(_write);
break; 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 case POP_STMT: // pop
codeSize+=emit(OP_POP,_write); codeSize+=emit(OP_POP,_write);
break; break;
@ -260,17 +284,29 @@ int CTreeNode::generateCode(int _write)
break; break;
case EQUAL_EXPR: // == [variable, value] case EQUAL_EXPR: // == [variable, value]
codeSize+=m_children[0]->generateCode(_write);
codeSize+=m_children[1]->generateCode(_write); codeSize+=m_children[1]->generateCode(_write);
codeSize+=m_children[0]->generateCode(_write);
codeSize+=emit(OP_IS_EQUAL_VALUE,_write); codeSize+=emit(OP_IS_EQUAL_VALUE,_write);
break; break;
case NOTEQUAL_EXPR: // != [variable, value] case NOTEQUAL_EXPR: // != [variable, value]
codeSize+=m_children[0]->generateCode(_write);
codeSize+=m_children[1]->generateCode(_write); codeSize+=m_children[1]->generateCode(_write);
codeSize+=m_children[0]->generateCode(_write);
codeSize+=emit(OP_IS_NOTEQUAL_VALUE,_write); codeSize+=emit(OP_IS_NOTEQUAL_VALUE,_write);
break; 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 VARIABLE_EXPR: // variable
case VALUE_EXPR: // value case VALUE_EXPR: // value
if(m_numChildren) if(m_numChildren)
@ -280,8 +316,15 @@ int CTreeNode::generateCode(int _write)
break; break;
case PLUS_EXPR: // + [value, value] case PLUS_EXPR: // + [value, value]
codeSize+=emitValue(m_children[0],_write); codeSize+=m_children[0]->generateCode(_write);
codeSize+=emitValue(m_children[1],_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); codeSize+=emit(OP_ADD,_write);
break; break;
@ -293,6 +336,7 @@ int CTreeNode::generateCode(int _write)
default: default:
printf("UNHANDLED CASE %d\n",m_type); printf("UNHANDLED CASE %d\n",m_type);
exit(-2);
break; break;
} }
@ -316,7 +360,7 @@ int CTreeNode::emit(unsigned short _data,int _write)
} }
int CTreeNode::emitValue(CTreeNode *_child,int _write) int CTreeNode::emitValue(CTreeNode *_child,int _write)
{ {
int codeSize; int codeSize=0;
switch(_child->getType()) switch(_child->getType())
{ {
@ -328,7 +372,7 @@ int CTreeNode::emitValue(CTreeNode *_child,int _write)
break; break;
default: default:
printf("INTERNAL ERROR IN emitValue() :(\n"); printf("INTERNAL ERROR IN emitValue() :(\n");
codeSize=0; exit(-2);
break; break;
} }
return codeSize; return codeSize;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -12,29 +12,38 @@
8 | assign_expression END_STMT 8 | assign_expression END_STMT
9 | IF OPEN_PAR expression CLOSE_PAR statement 9 | IF OPEN_PAR expression CLOSE_PAR statement
10 | IF OPEN_PAR expression CLOSE_PAR statement ELSE statement 10 | IF OPEN_PAR expression CLOSE_PAR statement ELSE statement
11 | BEGIN_CS statement_list END_CS 11 | WHILE OPEN_PAR expression CLOSE_PAR statement
12 | function END_STMT 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 16 expression : OPEN_PAR expression CLOSE_PAR
15 | equal_expression 17 | equal_expression
16 | notequal_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 24 greaterthan_expression : value GREATERTHAN value
21 | VARIABLE
22 | value PLUS value
23 | function
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 state 0
@ -59,420 +68,649 @@ state 2
STOP shift 3 STOP shift 3
IF shift 4 IF shift 4
PAUSE shift 5 WHILE shift 5
PRINT shift 6 DO shift 6
END_STMT shift 7 PAUSE shift 7
BEGIN_CS shift 8 PRINT shift 8
VARIABLE shift 9 END_STMT shift 9
FUNCTION shift 10 BEGIN_CS shift 10
VARIABLE shift 11
FUNCTION shift 12
. reduce 1 . reduce 1
statement goto 11 statement goto 13
assign_expression goto 12 assign_expression goto 14
variable goto 13 variable goto 15
function goto 14 function goto 16
state 3 state 3
statement : STOP . END_STMT statement : STOP . END_STMT
END_STMT shift 15 END_STMT shift 17
state 4 state 4
statement : IF . OPEN_PAR expression CLOSE_PAR statement statement : IF . OPEN_PAR expression CLOSE_PAR statement
statement : IF . OPEN_PAR expression CLOSE_PAR statement ELSE 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 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 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) statement : END_STMT . (4)
. reduce 4 . reduce 4
state 8 state 10
statement : BEGIN_CS . statement_list END_CS statement : BEGIN_CS . statement_list END_CS
statement_list : . (3) statement_list : . (3)
. reduce 3 . reduce 3
statement_list goto 19 statement_list goto 23
state 9
variable : VARIABLE . (19)
. reduce 19
state 10
function : FUNCTION . OPEN_PAR $$1 CLOSE_PAR
OPEN_PAR shift 20
state 11 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) statement_list : statement_list statement . (2)
. reduce 2 . reduce 2
state 12 state 14
statement : assign_expression . END_STMT statement : assign_expression . END_STMT
END_STMT shift 21 END_STMT shift 25
state 13
assign_expression : variable . ASSIGN value
ASSIGN shift 22
state 14
statement : function . END_STMT
END_STMT shift 23
state 15 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) statement : STOP END_STMT . (5)
. reduce 5 . reduce 5
state 16 state 18
statement : IF OPEN_PAR . expression CLOSE_PAR statement statement : IF OPEN_PAR . expression CLOSE_PAR statement
statement : IF OPEN_PAR . expression CLOSE_PAR statement ELSE statement statement : IF OPEN_PAR . expression CLOSE_PAR statement ELSE statement
OPEN_PAR shift 24 OPEN_PAR shift 28
VARIABLE shift 25 VARIABLE shift 29
VALUE shift 26 VALUE shift 30
FUNCTION shift 10 FUNCTION shift 12
expression goto 27 expression goto 31
equal_expression goto 28 equal_expression goto 32
notequal_expression goto 29 notequal_expression goto 33
value goto 30 lessthan_expression goto 34
function goto 31 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) statement : PAUSE END_STMT . (6)
. reduce 6 . reduce 6
state 18 state 22
statement : PRINT OPEN_PAR . value CLOSE_PAR END_STMT statement : PRINT OPEN_PAR . value CLOSE_PAR END_STMT
VARIABLE shift 25 VARIABLE shift 29
VALUE shift 26 VALUE shift 30
FUNCTION shift 10 FUNCTION shift 12
value goto 32 value goto 40
function goto 31 function goto 37
state 19 state 23
statement_list : statement_list . statement statement_list : statement_list . statement
statement : BEGIN_CS statement_list . END_CS statement : BEGIN_CS statement_list . END_CS
STOP shift 3 STOP shift 3
IF shift 4 IF shift 4
PAUSE shift 5 WHILE shift 5
PRINT shift 6 DO shift 6
END_STMT shift 7 PAUSE shift 7
BEGIN_CS shift 8 PRINT shift 8
END_CS shift 33 END_STMT shift 9
VARIABLE shift 9 BEGIN_CS shift 10
FUNCTION shift 10 END_CS shift 41
VARIABLE shift 11
FUNCTION shift 12
statement goto 11 statement goto 13
assign_expression goto 12 assign_expression goto 14
variable goto 13 variable goto 15
function goto 14 function goto 16
state 20 state 24
function : FUNCTION OPEN_PAR . $$1 CLOSE_PAR 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) statement : assign_expression END_STMT . (8)
. reduce 8 . reduce 8
state 22 state 26
assign_expression : variable ASSIGN . value assign_expression : variable ASSIGN . value
VARIABLE shift 25 VARIABLE shift 29
VALUE shift 26 VALUE shift 30
FUNCTION shift 10 FUNCTION shift 12
value goto 35 value goto 43
function goto 31 function goto 37
state 23 state 27
statement : function END_STMT . (12) statement : function END_STMT . (14)
. reduce 12 . reduce 14
state 24 state 28
expression : OPEN_PAR . expression CLOSE_PAR expression : OPEN_PAR . expression CLOSE_PAR
OPEN_PAR shift 24 OPEN_PAR shift 28
VARIABLE shift 25 VARIABLE shift 29
VALUE shift 26 VALUE shift 30
FUNCTION shift 10 FUNCTION shift 12
expression goto 36 expression goto 44
equal_expression goto 28 equal_expression goto 32
notequal_expression goto 29 notequal_expression goto 33
value goto 30 lessthan_expression goto 34
function goto 31 greaterthan_expression goto 35
value goto 36
function goto 37
state 25 state 29
value : VARIABLE . (21) value : VARIABLE . (27)
. reduce 21 . reduce 27
state 26 state 30
value : VALUE . (20) 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 . reduce 20
state 27 state 36
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
equal_expression : value . EQUAL value equal_expression : value . EQUAL value
notequal_expression : value . NOTEQUAL value notequal_expression : value . NOTEQUAL value
lessthan_expression : value . LESSTHAN value
greaterthan_expression : value . GREATERTHAN value
value : value . PLUS value value : value . PLUS value
value : value . SUBTRACT value
EQUAL shift 38 EQUAL shift 46
NOTEQUAL shift 39 NOTEQUAL shift 47
PLUS shift 40 LESSTHAN shift 48
GREATERTHAN shift 49
PLUS shift 50
state 31 SUBTRACT shift 51
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
state 37 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
statement : IF OPEN_PAR expression CLOSE_PAR . statement ELSE statement statement : IF OPEN_PAR expression CLOSE_PAR . statement ELSE statement
STOP shift 3 STOP shift 3
IF shift 4 IF shift 4
PAUSE shift 5 WHILE shift 5
PRINT shift 6 DO shift 6
END_STMT shift 7 PAUSE shift 7
BEGIN_CS shift 8 PRINT shift 8
VARIABLE shift 9 END_STMT shift 9
FUNCTION shift 10 BEGIN_CS shift 10
VARIABLE shift 11
FUNCTION shift 12
statement goto 44 statement goto 57
assign_expression goto 12 assign_expression goto 14
variable goto 13 variable goto 15
function goto 14 function goto 16
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
state 46 state 46
notequal_expression : value NOTEQUAL value . (18) equal_expression : value EQUAL . value
value : value . PLUS value
PLUS shift 40 VARIABLE shift 29
. reduce 18 VALUE shift 30
FUNCTION shift 12
value goto 58
function goto 37
47: shift-reduce conflict (shift 40, reduce 22) on PLUS
state 47 state 47
value : value PLUS value . (22) notequal_expression : value NOTEQUAL . value
value : value . PLUS value
PLUS shift 40 VARIABLE shift 29
. reduce 22 VALUE shift 30
FUNCTION shift 12
value goto 59
function goto 37
state 48 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) statement : PRINT OPEN_PAR value CLOSE_PAR END_STMT . (7)
. reduce 7 . reduce 7
state 49 state 67
statement : IF OPEN_PAR expression CLOSE_PAR statement ELSE . statement statement : IF OPEN_PAR expression CLOSE_PAR statement ELSE . statement
STOP shift 3 STOP shift 3
IF shift 4 IF shift 4
PAUSE shift 5 WHILE shift 5
PRINT shift 6 DO shift 6
END_STMT shift 7 PAUSE shift 7
BEGIN_CS shift 8 PRINT shift 8
VARIABLE shift 9 END_STMT shift 9
FUNCTION shift 10 BEGIN_CS shift 10
VARIABLE shift 11
FUNCTION shift 12
statement goto 50 statement goto 69
assign_expression goto 12 assign_expression goto 14
variable goto 13 variable goto 15
function goto 14 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) statement : IF OPEN_PAR expression CLOSE_PAR statement ELSE statement . (10)
. reduce 10 . reduce 10
State 44 contains 1 shift-reduce conflict state 70
State 47 contains 1 shift-reduce conflict statement : DO statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT . (12)
. reduce 12
19 tokens, 12 nonterminals State 57 contains 1 shift-reduce conflict
26 grammar rules, 51 states 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 STOP
%token IF %token IF
%token ELSE %token ELSE
%token WHILE
%token DO
%token PAUSE %token PAUSE
%token PRINT %token PRINT
%token ASSIGN %token ASSIGN
%token EQUAL %token EQUAL
%token NOTEQUAL %token NOTEQUAL
%token LESSTHAN
%token GREATERTHAN
%token PLUS %token PLUS
%token SUBTRACT
%token END_STMT %token END_STMT
%token OPEN_PAR %token OPEN_PAR
%token CLOSE_PAR %token CLOSE_PAR
@ -85,7 +90,7 @@ private:
%type <treenode> program statement_list statement %type <treenode> program statement_list statement
%type <treenode> assign_expression %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> variable
%type <treenode> value %type <treenode> value
%type <treenode> function %type <treenode> function
@ -115,6 +120,8 @@ statement
|assign_expression END_STMT {$$=$1;} |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 {$$=new CTreeNode(IF_STMT,$3,$5);}
|IF OPEN_PAR expression CLOSE_PAR statement ELSE statement {$$=new CTreeNode(IFELSE_STMT,$3,$5,$7);} |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);} |BEGIN_CS statement_list END_CS {$$=new CTreeNode(STMT_LIST,$2);}
|function END_STMT {$$=new CTreeNode(STMT_LIST,$1,new CTreeNode(POP_STMT));} |function END_STMT {$$=new CTreeNode(STMT_LIST,$1,new CTreeNode(POP_STMT));}
; ;
@ -129,6 +136,8 @@ expression
:OPEN_PAR expression CLOSE_PAR {$$=$2;} :OPEN_PAR expression CLOSE_PAR {$$=$2;}
|equal_expression {$$=$1;} |equal_expression {$$=$1;}
|notequal_expression {$$=$1;} |notequal_expression {$$=$1;}
|lessthan_expression {$$=$1;}
|greaterthan_expression {$$=$1;}
; ;
equal_expression equal_expression
@ -139,6 +148,14 @@ notequal_expression
:value NOTEQUAL value {$$=new CTreeNode(NOTEQUAL_EXPR,$1,$3);} :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
:VARIABLE {$$=new CTreeNode(VARIABLE_EXPR,$1);} // variable id :VARIABLE {$$=new CTreeNode(VARIABLE_EXPR,$1);} // variable id
@ -147,7 +164,10 @@ variable
value value
:VALUE {$$=new CTreeNode(VALUE_EXPR,$1);} :VALUE {$$=new CTreeNode(VALUE_EXPR,$1);}
|VARIABLE {$$=new CTreeNode(VARIABLE_EXPR,$1);} // variable value |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 PLUS value {$$=new CTreeNode(PLUS_EXPR,$1,$3);}
|value SUBTRACT value {$$=new CTreeNode(SUBTRACT_EXPR,$1,$3);}
|function {$$=$1;} |function {$$=$1;}
; ;

View file

@ -57,9 +57,16 @@ static int s_numGlobalVarNames=sizeof(s_globalVarNames)/sizeof(char *);
static char *s_localVarNames[]= static char *s_localVarNames[]=
{ {
"tmp0",
"tmp1", "tmp1",
"tmp2", "tmp2",
"tmp3", "tmp3",
"tmp4",
"tmp5",
"tmp6",
"tmp7",
"tmp8",
"tmp9",
}; };
static int s_numLocalVarNames=sizeof(s_localVarNames)/sizeof(char *); 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; //do
//$tmp2=22; //{
//$tmp3=_setCharacterExpression(1,2); // print($tmp1);
//$tmp3=_setCharacterExpression($tmp1,$tmp2); // $tmp1=$tmp1+1;
print($tmp3); // pause;
$tmp3=_setText(123); //}
//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; stop;

View file

@ -22,6 +22,10 @@
#include "system\dbg.h" #include "system\dbg.h"
#endif #endif
#ifndef __SYSTEM_GSTATE_H__
#include "system\gstate.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -48,8 +52,10 @@ typedef struct
Function Prototypes 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_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[]= static FunctionDef s_functionDefs[]=
{ {
{ func_setCharacterExpression, 2 }, // character, expression { func_setCharacterAnimation, 2 }, // character,animation
{ func_setText, 1 }, // textId { func_setText, 1 }, // textId
{ func_drawSprite, 4 }, // frame,x,y,ot
{ func_getFrameTime, 0 }, //
}; };
static const int s_numFunctionDefs=sizeof(s_functionDefs)/sizeof(FunctionDef); 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: Function:
Purpose: Purpose:
Params: Params: character,animation
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
static signed short func_setCharacterExpression(unsigned short *_args) static signed short func_setCharacterAnimation(unsigned short *_args)
{ {
return _args[0]; return _args[0];
} }
@ -98,7 +106,7 @@ static signed short func_setCharacterExpression(unsigned short *_args)
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Function: Function:
Purpose: Purpose:
Params: Params: textid
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
static signed short func_setText(unsigned short *_args) 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 */ end */

View file

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

View file

@ -55,9 +55,16 @@ private:
// Local vars // Local vars
enum enum
{ {
TMP0,
TMP1, TMP1,
TMP2, TMP2,
TMP3, TMP3,
TMP4,
TMP5,
TMP6,
TMP7,
TMP8,
TMP9,
NUM_LOCAL_VARS, NUM_LOCAL_VARS,
}; };
@ -93,8 +100,11 @@ private:
OP_JMPT, // jump, value OP_JMPT, // jump, value
OP_IS_EQUAL_VALUE, // value, value pushes result ( 0 or 1 ) to stack 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_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_ASSIGN, // varidx, value
OP_ADD, // value, value pushes result to stack OP_ADD, // value, value pushes result to stack
OP_NEG, // value pushes result to stack
OP_PRINT, // value OP_PRINT, // value
OP_CALL_FUNCTION, // functionnumber, argcount args pushes return value to stack 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 "" # PROP Default_Filter ""
# Begin Source File # 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 SOURCE=..\..\..\source\system\dbg.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File
@ -646,13 +654,21 @@ SOURCE=..\..\..\data\translations\text.dat
# End Group # End Group
# Begin Group "scripts" # Begin Group "scripts"
# PROP Default_Filter ""
# Begin Group "defs"
# PROP Default_Filter "" # PROP Default_Filter ""
# Begin Source File # Begin Source File
SOURCE=..\..\..\data\scripts\defs.scr SOURCE=..\..\..\data\scripts\defs\charanim.scr
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\..\data\scripts\defs\defs.scr
# End Source File
# End Group
# Begin Source File
SOURCE=..\..\..\data\scripts\test.scr SOURCE=..\..\..\data\scripts\test.scr
# End Source File # End Source File
# End Group # End Group