This commit is contained in:
parent
fda1fc3ca7
commit
b56cd688ae
16 changed files with 1569 additions and 849 deletions
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;}
|
||||
;
|
||||
|
||||
|
|
|
@ -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 *);
|
||||
|
||||
|
|
|
@ -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;
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue