This commit is contained in:
parent
c339c5acb2
commit
4ce71ec178
5 changed files with 1721 additions and 0 deletions
595
Utils/Scripter/lexer.cpp
Normal file
595
Utils/Scripter/lexer.cpp
Normal file
|
@ -0,0 +1,595 @@
|
|||
#include <clex.h>
|
||||
|
||||
#line 1 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
|
||||
/****************************************************************************
|
||||
lexer.l
|
||||
ParserWizard generated Lex file.
|
||||
|
||||
Date: 07 December 2000
|
||||
****************************************************************************/
|
||||
|
||||
#include "parser.h"
|
||||
#include "var.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
|
||||
#line 19 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
// repeated because of possible precompiled header
|
||||
#include <clex.h>
|
||||
|
||||
#include "lexer.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// constructor
|
||||
|
||||
YYLEXNAME::YYLEXNAME()
|
||||
{
|
||||
yytables();
|
||||
#line 28 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
|
||||
// place any extra initialisation code here
|
||||
|
||||
#line 35 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
|
||||
#ifndef YYTEXT_SIZE
|
||||
#define YYTEXT_SIZE 100
|
||||
#endif
|
||||
#ifndef YYUNPUT_SIZE
|
||||
#define YYUNPUT_SIZE YYTEXT_SIZE
|
||||
#endif
|
||||
|
||||
// backwards compatability with lex
|
||||
#ifdef input
|
||||
int YYLEXNAME::yyinput()
|
||||
{
|
||||
return input();
|
||||
}
|
||||
#else
|
||||
#define input yyinput
|
||||
#endif
|
||||
|
||||
#ifdef output
|
||||
void YYLEXNAME::yyoutput(int ch)
|
||||
{
|
||||
output(ch);
|
||||
}
|
||||
#else
|
||||
#define output yyoutput
|
||||
#endif
|
||||
|
||||
#ifdef unput
|
||||
void YYLEXNAME::yyunput(int ch)
|
||||
{
|
||||
unput(ch);
|
||||
}
|
||||
#else
|
||||
#define unput yyunput
|
||||
#endif
|
||||
|
||||
#ifndef YYNBORLANDWARN
|
||||
#ifdef __BORLANDC__
|
||||
#pragma warn -rch // <warning: unreachable code> off
|
||||
#endif
|
||||
#endif
|
||||
|
||||
int YYLEXNAME::yyaction(int action)
|
||||
{
|
||||
#line 40 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
|
||||
// extract yylval for use later on in actions
|
||||
YYSTYPE& yylval = *(YYSTYPE*)yyparserptr->yylvalptr;
|
||||
|
||||
#line 86 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
yyreturnflg = 1;
|
||||
switch (action) {
|
||||
case 1:
|
||||
{
|
||||
#line 47 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
/*preprocess(yytext);*/
|
||||
#line 93 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
#line 49 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return STOP;
|
||||
#line 100 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
{
|
||||
#line 50 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return IF;
|
||||
#line 107 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
#line 51 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return ELSE;
|
||||
#line 114 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
{
|
||||
#line 52 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return PAUSE;
|
||||
#line 121 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
{
|
||||
#line 53 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return PRINT;
|
||||
#line 128 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
{
|
||||
#line 54 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return ASSIGN;
|
||||
#line 135 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
{
|
||||
#line 55 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return EQUAL;
|
||||
#line 142 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
{
|
||||
#line 56 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return NOTEQUAL;
|
||||
#line 149 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
{
|
||||
#line 57 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return PLUS;
|
||||
#line 156 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
{
|
||||
#line 58 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return END_STMT;
|
||||
#line 163 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
{
|
||||
#line 59 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return OPEN_PAR;
|
||||
#line 170 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
{
|
||||
#line 60 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return CLOSE_PAR;
|
||||
#line 177 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
{
|
||||
#line 61 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return BEGIN_CS;
|
||||
#line 184 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
{
|
||||
#line 62 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
return END_CS;
|
||||
#line 191 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
{
|
||||
#line 63 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
yylval.variableIdx=lookupVarName(yytext+1);return VARIABLE;
|
||||
#line 198 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 17:
|
||||
{
|
||||
#line 64 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
|
||||
#line 205 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 18:
|
||||
{
|
||||
#line 65 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
yylval.value=atoi(yytext);return VALUE;
|
||||
#line 212 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 19:
|
||||
{
|
||||
#line 66 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
|
||||
#line 219 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
{
|
||||
#line 67 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
/*s_linesProcessed++;*/
|
||||
#line 226 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
case 21:
|
||||
{
|
||||
#line 68 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
printf("?\n");/*printf("line:%d\n",yylineno);printf("-%s-\n",yytext);yyerror("Unexpected character in source");*/
|
||||
#line 233 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
}
|
||||
break;
|
||||
default:
|
||||
yyassert(0);
|
||||
break;
|
||||
}
|
||||
yyreturnflg = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef YYNBORLANDWARN
|
||||
#ifdef __BORLANDC__
|
||||
#pragma warn .rch // <warning: unreachable code> to the old state
|
||||
#endif
|
||||
#endif
|
||||
#line 71 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// programs section
|
||||
|
||||
|
||||
#line 257 "C:\\spongebob\\Utils\\scripter\\lexer.cpp"
|
||||
|
||||
void YYLEXNAME::yytables()
|
||||
{
|
||||
yystext_size = YYTEXT_SIZE;
|
||||
yysunput_size = YYUNPUT_SIZE;
|
||||
|
||||
static const yymatch_t YYNEARFAR YYBASED_CODE match[] = {
|
||||
0
|
||||
};
|
||||
yymatch = match;
|
||||
|
||||
yytransitionmax = 251;
|
||||
static const yytransition_t YYNEARFAR YYBASED_CODE transition[] = {
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 18, 1 },
|
||||
{ 40, 40 },
|
||||
{ 18, 18 },
|
||||
{ 0, 29 },
|
||||
{ 0, 41 },
|
||||
{ 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 },
|
||||
{ 18, 1 },
|
||||
{ 40, 40 },
|
||||
{ 18, 18 },
|
||||
{ 20, 1 },
|
||||
{ 41, 40 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 29, 16 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 26, 7 },
|
||||
{ 27, 8 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 28, 28 },
|
||||
{ 0, 0 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 28, 28 },
|
||||
{ 0, 15 },
|
||||
{ 0, 15 },
|
||||
{ 0, 15 },
|
||||
{ 0, 15 },
|
||||
{ 0, 15 },
|
||||
{ 0, 15 },
|
||||
{ 0, 15 },
|
||||
{ 0, 15 },
|
||||
{ 0, 15 },
|
||||
{ 0, 15 },
|
||||
{ 40, 2 },
|
||||
{ 19, 2 },
|
||||
{ 32, 24 },
|
||||
{ 39, 37 },
|
||||
{ 21, 3 },
|
||||
{ 24, 6 },
|
||||
{ 31, 23 },
|
||||
{ 36, 32 },
|
||||
{ 34, 30 },
|
||||
{ 30, 21 },
|
||||
{ 37, 33 },
|
||||
{ 23, 5 },
|
||||
{ 17, 17 },
|
||||
{ 17, 17 },
|
||||
{ 17, 17 },
|
||||
{ 17, 17 },
|
||||
{ 17, 17 },
|
||||
{ 17, 17 },
|
||||
{ 17, 17 },
|
||||
{ 17, 17 },
|
||||
{ 17, 17 },
|
||||
{ 17, 17 },
|
||||
{ 25, 6 },
|
||||
{ 40, 2 },
|
||||
{ 8, 2 },
|
||||
{ 33, 25 },
|
||||
{ 41, 2 },
|
||||
{ 15, 2 },
|
||||
{ 22, 4 },
|
||||
{ 35, 31 },
|
||||
{ 38, 36 },
|
||||
{ 11, 2 },
|
||||
{ 12, 2 },
|
||||
{ 0, 0 },
|
||||
{ 9, 2 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 16, 2 },
|
||||
{ 17, 2 },
|
||||
{ 17, 2 },
|
||||
{ 17, 2 },
|
||||
{ 17, 2 },
|
||||
{ 17, 2 },
|
||||
{ 17, 2 },
|
||||
{ 17, 2 },
|
||||
{ 17, 2 },
|
||||
{ 17, 2 },
|
||||
{ 17, 2 },
|
||||
{ 0, 0 },
|
||||
{ 10, 2 },
|
||||
{ 0, 0 },
|
||||
{ 7, 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 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 5, 2 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 4, 2 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 6, 2 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 3, 2 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 0, 0 },
|
||||
{ 13, 2 },
|
||||
{ 0, 0 },
|
||||
{ 14, 2 }
|
||||
};
|
||||
yytransition = transition;
|
||||
|
||||
static const yystate_t YYNEARFAR YYBASED_CODE state[] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 2, 1, 0 },
|
||||
{ -20, 125, 0 },
|
||||
{ 37, 22, 21 },
|
||||
{ 0, 60, 21 },
|
||||
{ 0, 37, 21 },
|
||||
{ 0, 42, 21 },
|
||||
{ 8, 1, 7 },
|
||||
{ 0, 2, 21 },
|
||||
{ 0, 0, 10 },
|
||||
{ 0, 0, 11 },
|
||||
{ 0, 0, 12 },
|
||||
{ 0, 0, 13 },
|
||||
{ 0, 0, 14 },
|
||||
{ 0, 0, 15 },
|
||||
{ 28, 76, 21 },
|
||||
{ 0, 1, 21 },
|
||||
{ 0, 98, 18 },
|
||||
{ 0, 3, 19 },
|
||||
{ 0, 0, 20 },
|
||||
{ 0, 0, 21 },
|
||||
{ 0, 32, 0 },
|
||||
{ 0, 0, 3 },
|
||||
{ 32, 25, 0 },
|
||||
{ 0, 19, 0 },
|
||||
{ 0, 54, 0 },
|
||||
{ 0, 0, 8 },
|
||||
{ 0, 0, 9 },
|
||||
{ 37, 1, 16 },
|
||||
{ -29, 3, 17 },
|
||||
{ 0, 30, 0 },
|
||||
{ 36, 62, 0 },
|
||||
{ 0, 26, 0 },
|
||||
{ 0, 34, 0 },
|
||||
{ 0, 0, 2 },
|
||||
{ 0, 0, 4 },
|
||||
{ 0, 63, 0 },
|
||||
{ 0, 21, 0 },
|
||||
{ 0, 0, 5 },
|
||||
{ 0, 0, 6 },
|
||||
{ 18, 2, 19 },
|
||||
{ -41, 4, 1 }
|
||||
};
|
||||
yystate = state;
|
||||
|
||||
static const yybackup_t YYNEARFAR YYBASED_CODE backup[] = {
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
};
|
||||
yybackup = backup;
|
||||
}
|
33
Utils/Scripter/lexer.h
Normal file
33
Utils/Scripter/lexer.h
Normal file
|
@ -0,0 +1,33 @@
|
|||
#ifndef _LEXER_H
|
||||
#define _LEXER_H
|
||||
|
||||
#include <clex.h>
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// mylexer
|
||||
|
||||
class YYFAR mylexer : public yyflexer {
|
||||
public:
|
||||
mylexer();
|
||||
|
||||
protected:
|
||||
void yytables();
|
||||
virtual int yyaction(int action);
|
||||
|
||||
public:
|
||||
#line 23 "C:\\spongebob\\Utils\\scripter\\lexer.l"
|
||||
|
||||
// place any extra class members here
|
||||
|
||||
#line 23 "C:\\spongebob\\Utils\\scripter\\lexer.h"
|
||||
};
|
||||
|
||||
#ifndef YYLEXNAME
|
||||
#define YYLEXNAME mylexer
|
||||
#endif
|
||||
|
||||
#ifndef INITIAL
|
||||
#define INITIAL 0
|
||||
#endif
|
||||
|
||||
#endif
|
625
Utils/Scripter/parser.cpp
Normal file
625
Utils/Scripter/parser.cpp
Normal file
|
@ -0,0 +1,625 @@
|
|||
#include <cyacc.h>
|
||||
|
||||
#line 1 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
|
||||
/****************************************************************************
|
||||
parser.y
|
||||
ParserWizard generated YACC file.
|
||||
|
||||
Date: 07 December 2000
|
||||
****************************************************************************/
|
||||
|
||||
#include "lexer.h"
|
||||
#include "codegen.h"
|
||||
|
||||
|
||||
|
||||
#line 18 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
// repeated because of possible precompiled header
|
||||
#include <cyacc.h>
|
||||
|
||||
#include "parser.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// constructor
|
||||
|
||||
YYPARSENAME::YYPARSENAME()
|
||||
{
|
||||
yytables();
|
||||
#line 27 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
|
||||
// place any extra initialisation code here
|
||||
|
||||
#line 34 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
|
||||
#ifndef YYSTYPE
|
||||
#define YYSTYPE int
|
||||
#endif
|
||||
#ifndef YYSTACK_SIZE
|
||||
#define YYSTACK_SIZE 100
|
||||
#endif
|
||||
|
||||
// yyattribute
|
||||
#ifdef YYDEBUG
|
||||
void YYFAR* YYPARSENAME::yyattribute1(int index) const
|
||||
{
|
||||
YYSTYPE YYFAR* p = &((YYSTYPE YYFAR*)yyattributestackptr)[yytop + index];
|
||||
return p;
|
||||
}
|
||||
#define yyattribute(index) (*(YYSTYPE YYFAR*)yyattribute1(index))
|
||||
#else
|
||||
#define yyattribute(index) (((YYSTYPE YYFAR*)yyattributestackptr)[yytop + (index)])
|
||||
#endif
|
||||
|
||||
#ifdef YYDEBUG
|
||||
void YYPARSENAME::yyinitdebug(void YYFAR** p, int count) const
|
||||
{
|
||||
yyassert(p != NULL);
|
||||
yyassert(count >= 1);
|
||||
|
||||
YYSTYPE YYFAR** p1 = (YYSTYPE YYFAR**)p;
|
||||
for (int i = 0; i < count; i++) {
|
||||
p1[i] = &((YYSTYPE YYFAR*)yyattributestackptr)[yytop + i - (count - 1)];
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void YYPARSENAME::yyaction(int action)
|
||||
{
|
||||
switch (action) {
|
||||
case 0:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[2];
|
||||
yyinitdebug((void YYFAR**)yya, 2);
|
||||
#endif
|
||||
{
|
||||
#line 80 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
s_baseTreeNode=yyattribute(1 - 1).treenode;
|
||||
#line 81 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[3];
|
||||
yyinitdebug((void YYFAR**)yya, 3);
|
||||
#endif
|
||||
{
|
||||
#line 84 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(STMT_LIST,yyattribute(1 - 2).treenode,yyattribute(2 - 2).treenode);
|
||||
#line 94 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
#line 85 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(EMPTY_STMT);
|
||||
#line 102 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[2];
|
||||
yyinitdebug((void YYFAR**)yya, 2);
|
||||
#endif
|
||||
{
|
||||
#line 89 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(EMPTY_STMT);
|
||||
#line 114 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[3];
|
||||
yyinitdebug((void YYFAR**)yya, 3);
|
||||
#endif
|
||||
{
|
||||
#line 90 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(STOP_STMT);
|
||||
#line 127 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[3];
|
||||
yyinitdebug((void YYFAR**)yya, 3);
|
||||
#endif
|
||||
{
|
||||
#line 91 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(PAUSE_STMT);
|
||||
#line 140 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[6];
|
||||
yyinitdebug((void YYFAR**)yya, 6);
|
||||
#endif
|
||||
{
|
||||
#line 92 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(PRINT_STMT,yyattribute(3 - 5).treenode);
|
||||
#line 153 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[3];
|
||||
yyinitdebug((void YYFAR**)yya, 3);
|
||||
#endif
|
||||
{
|
||||
#line 93 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 2).treenode;
|
||||
#line 166 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[6];
|
||||
yyinitdebug((void YYFAR**)yya, 6);
|
||||
#endif
|
||||
{
|
||||
#line 94 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(IF_STMT,yyattribute(3 - 5).treenode,yyattribute(5 - 5).treenode);
|
||||
#line 179 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[8];
|
||||
yyinitdebug((void YYFAR**)yya, 8);
|
||||
#endif
|
||||
{
|
||||
#line 95 "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 192 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[4];
|
||||
yyinitdebug((void YYFAR**)yya, 4);
|
||||
#endif
|
||||
{
|
||||
#line 96 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(STMT_LIST,yyattribute(2 - 3).treenode);
|
||||
#line 205 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[4];
|
||||
yyinitdebug((void YYFAR**)yya, 4);
|
||||
#endif
|
||||
{
|
||||
#line 101 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(ASSIGN_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
|
||||
#line 218 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[4];
|
||||
yyinitdebug((void YYFAR**)yya, 4);
|
||||
#endif
|
||||
{
|
||||
#line 106 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(2 - 3).treenode;
|
||||
#line 231 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[2];
|
||||
yyinitdebug((void YYFAR**)yya, 2);
|
||||
#endif
|
||||
{
|
||||
#line 107 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode;
|
||||
#line 244 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[2];
|
||||
yyinitdebug((void YYFAR**)yya, 2);
|
||||
#endif
|
||||
{
|
||||
#line 108 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode;
|
||||
#line 257 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[4];
|
||||
yyinitdebug((void YYFAR**)yya, 4);
|
||||
#endif
|
||||
{
|
||||
#line 112 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(EQUAL_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
|
||||
#line 270 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[4];
|
||||
yyinitdebug((void YYFAR**)yya, 4);
|
||||
#endif
|
||||
{
|
||||
#line 116 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(NOTEQUAL_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
|
||||
#line 283 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 17:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[2];
|
||||
yyinitdebug((void YYFAR**)yya, 2);
|
||||
#endif
|
||||
{
|
||||
#line 121 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VARIABLE_EXPR,yyattribute(1 - 1).variableIdx);
|
||||
#line 296 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 18:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[2];
|
||||
yyinitdebug((void YYFAR**)yya, 2);
|
||||
#endif
|
||||
{
|
||||
#line 125 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VALUE_EXPR,yyattribute(1 - 1).value);
|
||||
#line 309 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 19:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[2];
|
||||
yyinitdebug((void YYFAR**)yya, 2);
|
||||
#endif
|
||||
{
|
||||
#line 126 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VARIABLE_EXPR,yyattribute(1 - 1).variableIdx);
|
||||
#line 322 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
{
|
||||
#ifdef YYDEBUG
|
||||
YYSTYPE YYFAR* yya[4];
|
||||
yyinitdebug((void YYFAR**)yya, 4);
|
||||
#endif
|
||||
{
|
||||
#line 127 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(PLUS_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode);
|
||||
#line 335 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
yyassert(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#line 130 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// programs section
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int n=1;
|
||||
|
||||
openOutputFile("test.dat");
|
||||
mylexer lexer;
|
||||
myparser parser;
|
||||
if(parser.yycreate(&lexer))
|
||||
{
|
||||
if(lexer.yycreate(&parser))
|
||||
{
|
||||
n=parser.yyparse();
|
||||
}
|
||||
}
|
||||
|
||||
if(s_baseTreeNode)
|
||||
{
|
||||
s_baseTreeNode->generateCode(true);
|
||||
}
|
||||
closeOutputFile();
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
#line 376 "C:\\spongebob\\Utils\\scripter\\parser.cpp"
|
||||
void YYPARSENAME::yytables()
|
||||
{
|
||||
yyattribute_size = sizeof(YYSTYPE);
|
||||
yysstack_size = YYSTACK_SIZE;
|
||||
|
||||
#ifdef YYDEBUG
|
||||
static const yysymbol_t YYNEARFAR YYBASED_CODE symbol[] = {
|
||||
{ "$end", 0 },
|
||||
{ "error", 256 },
|
||||
{ "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", 271 },
|
||||
{ "VALUE", 272 },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
yysymbol = symbol;
|
||||
|
||||
static const char* const YYNEARFAR YYBASED_CODE rule[] = {
|
||||
"$accept: program",
|
||||
"program: statement_list",
|
||||
"statement_list: statement_list statement",
|
||||
"statement_list:",
|
||||
"statement: END_STMT",
|
||||
"statement: STOP END_STMT",
|
||||
"statement: PAUSE END_STMT",
|
||||
"statement: PRINT OPEN_PAR value CLOSE_PAR END_STMT",
|
||||
"statement: assign_expression END_STMT",
|
||||
"statement: IF OPEN_PAR expression CLOSE_PAR statement",
|
||||
"statement: IF OPEN_PAR expression CLOSE_PAR statement ELSE statement",
|
||||
"statement: BEGIN_CS statement_list END_CS",
|
||||
"assign_expression: variable ASSIGN value",
|
||||
"expression: OPEN_PAR expression CLOSE_PAR",
|
||||
"expression: equal_expression",
|
||||
"expression: notequal_expression",
|
||||
"equal_expression: value EQUAL value",
|
||||
"notequal_expression: value NOTEQUAL value",
|
||||
"variable: VARIABLE",
|
||||
"value: VALUE",
|
||||
"value: VARIABLE",
|
||||
"value: value PLUS value"
|
||||
};
|
||||
yyrule = rule;
|
||||
#endif
|
||||
|
||||
static const yyreduction_t YYNEARFAR YYBASED_CODE reduction[] = {
|
||||
{ 0, 1, -1 },
|
||||
{ 1, 1, 0 },
|
||||
{ 2, 2, 1 },
|
||||
{ 2, 0, 2 },
|
||||
{ 3, 1, 3 },
|
||||
{ 3, 2, 4 },
|
||||
{ 3, 2, 5 },
|
||||
{ 3, 5, 6 },
|
||||
{ 3, 2, 7 },
|
||||
{ 3, 5, 8 },
|
||||
{ 3, 7, 9 },
|
||||
{ 3, 3, 10 },
|
||||
{ 4, 3, 11 },
|
||||
{ 5, 3, 12 },
|
||||
{ 5, 1, 13 },
|
||||
{ 5, 1, 14 },
|
||||
{ 6, 3, 15 },
|
||||
{ 7, 3, 16 },
|
||||
{ 8, 1, 17 },
|
||||
{ 9, 1, 18 },
|
||||
{ 9, 1, 19 },
|
||||
{ 9, 3, 20 }
|
||||
};
|
||||
yyreduction = reduction;
|
||||
|
||||
static const yytokenaction_t YYNEARFAR YYBASED_CODE tokenaction[] = {
|
||||
{ 42, YYAT_SHIFT, 3 },
|
||||
{ 42, YYAT_SHIFT, 4 },
|
||||
{ 27, YYAT_SHIFT, 34 },
|
||||
{ 42, YYAT_SHIFT, 5 },
|
||||
{ 42, YYAT_SHIFT, 6 },
|
||||
{ 27, YYAT_SHIFT, 35 },
|
||||
{ 40, YYAT_SHIFT, 34 },
|
||||
{ 2, YYAT_SHIFT, 3 },
|
||||
{ 2, YYAT_SHIFT, 4 },
|
||||
{ 42, YYAT_SHIFT, 7 },
|
||||
{ 2, YYAT_SHIFT, 5 },
|
||||
{ 2, YYAT_SHIFT, 6 },
|
||||
{ 42, YYAT_SHIFT, 8 },
|
||||
{ 39, YYAT_SHIFT, 34 },
|
||||
{ 42, YYAT_SHIFT, 9 },
|
||||
{ 38, YYAT_SHIFT, 34 },
|
||||
{ 2, YYAT_SHIFT, 7 },
|
||||
{ 26, YYAT_SHIFT, 32 },
|
||||
{ 26, YYAT_SHIFT, 33 },
|
||||
{ 2, YYAT_SHIFT, 8 },
|
||||
{ 37, YYAT_SHIFT, 42 },
|
||||
{ 2, YYAT_SHIFT, 9 },
|
||||
{ 26, YYAT_ERROR, 0 },
|
||||
{ 34, YYAT_SHIFT, 21 },
|
||||
{ 34, YYAT_SHIFT, 22 },
|
||||
{ 35, YYAT_SHIFT, 41 },
|
||||
{ 30, YYAT_SHIFT, 36 },
|
||||
{ 29, YYAT_SHIFT, 34 },
|
||||
{ 23, YYAT_SHIFT, 31 },
|
||||
{ 20, YYAT_SHIFT, 20 },
|
||||
{ 17, YYAT_SHIFT, 28 },
|
||||
{ 12, YYAT_SHIFT, 19 },
|
||||
{ 11, YYAT_SHIFT, 18 },
|
||||
{ 6, YYAT_SHIFT, 16 },
|
||||
{ 5, YYAT_SHIFT, 15 },
|
||||
{ 4, YYAT_SHIFT, 14 },
|
||||
{ 3, YYAT_SHIFT, 13 },
|
||||
{ 1, YYAT_ACCEPT, 0 }
|
||||
};
|
||||
yytokenaction = tokenaction;
|
||||
yytokenaction_size = 38;
|
||||
|
||||
static const yystateaction_t YYNEARFAR YYBASED_CODE stateaction[] = {
|
||||
{ 0, 0, YYAT_REDUCE, 3 },
|
||||
{ 37, 1, YYAT_ERROR, 0 },
|
||||
{ -250, 1, YYAT_REDUCE, 1 },
|
||||
{ -230, 1, YYAT_DEFAULT, 35 },
|
||||
{ -232, 1, YYAT_DEFAULT, 6 },
|
||||
{ -232, 1, YYAT_DEFAULT, 35 },
|
||||
{ -234, 1, YYAT_ERROR, 0 },
|
||||
{ 0, 0, YYAT_REDUCE, 4 },
|
||||
{ 0, 0, YYAT_REDUCE, 3 },
|
||||
{ 0, 0, YYAT_REDUCE, 18 },
|
||||
{ 0, 0, YYAT_REDUCE, 2 },
|
||||
{ -234, 1, YYAT_DEFAULT, 35 },
|
||||
{ -231, 1, YYAT_ERROR, 0 },
|
||||
{ 0, 0, YYAT_REDUCE, 5 },
|
||||
{ 0, 0, YYAT_DEFAULT, 20 },
|
||||
{ 0, 0, YYAT_REDUCE, 6 },
|
||||
{ 0, 0, YYAT_DEFAULT, 34 },
|
||||
{ -240, 1, YYAT_DEFAULT, 42 },
|
||||
{ 0, 0, YYAT_REDUCE, 8 },
|
||||
{ 0, 0, YYAT_DEFAULT, 34 },
|
||||
{ -238, 1, YYAT_DEFAULT, 34 },
|
||||
{ 0, 0, YYAT_REDUCE, 20 },
|
||||
{ 0, 0, YYAT_REDUCE, 19 },
|
||||
{ -240, 1, YYAT_DEFAULT, 30 },
|
||||
{ 0, 0, YYAT_REDUCE, 14 },
|
||||
{ 0, 0, YYAT_REDUCE, 15 },
|
||||
{ -246, 1, YYAT_DEFAULT, 27 },
|
||||
{ -263, 1, YYAT_DEFAULT, 30 },
|
||||
{ 0, 0, YYAT_REDUCE, 11 },
|
||||
{ -238, 1, YYAT_REDUCE, 12 },
|
||||
{ -242, 1, YYAT_ERROR, 0 },
|
||||
{ 0, 0, YYAT_DEFAULT, 42 },
|
||||
{ 0, 0, YYAT_DEFAULT, 34 },
|
||||
{ 0, 0, YYAT_DEFAULT, 34 },
|
||||
{ -248, 1, YYAT_ERROR, 0 },
|
||||
{ -241, 1, YYAT_ERROR, 0 },
|
||||
{ 0, 0, YYAT_REDUCE, 13 },
|
||||
{ -239, 1, YYAT_REDUCE, 9 },
|
||||
{ -250, 1, YYAT_REDUCE, 16 },
|
||||
{ -252, 1, YYAT_REDUCE, 17 },
|
||||
{ -259, 1, YYAT_REDUCE, 21 },
|
||||
{ 0, 0, YYAT_REDUCE, 7 },
|
||||
{ -257, 1, YYAT_DEFAULT, 35 },
|
||||
{ 0, 0, YYAT_REDUCE, 10 }
|
||||
};
|
||||
yystateaction = stateaction;
|
||||
|
||||
static const yynontermgoto_t YYNEARFAR YYBASED_CODE nontermgoto[] = {
|
||||
{ 20, 30 },
|
||||
{ 20, 24 },
|
||||
{ 20, 25 },
|
||||
{ 34, 40 },
|
||||
{ 20, 26 },
|
||||
{ 42, 43 },
|
||||
{ 42, 11 },
|
||||
{ 0, 1 },
|
||||
{ 0, 2 },
|
||||
{ 33, 39 },
|
||||
{ 42, 12 },
|
||||
{ 32, 38 },
|
||||
{ 31, 37 },
|
||||
{ 19, 29 },
|
||||
{ 17, 10 },
|
||||
{ 16, 27 },
|
||||
{ 14, 23 },
|
||||
{ 8, 17 }
|
||||
};
|
||||
yynontermgoto = nontermgoto;
|
||||
yynontermgoto_size = 18;
|
||||
|
||||
static const yystategoto_t YYNEARFAR YYBASED_CODE stategoto[] = {
|
||||
{ 6, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, 17 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 15, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 11, 20 },
|
||||
{ 0, -1 },
|
||||
{ 6, -1 },
|
||||
{ 11, 42 },
|
||||
{ 0, -1 },
|
||||
{ 4, -1 },
|
||||
{ -5, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 9, 42 },
|
||||
{ 2, -1 },
|
||||
{ 0, -1 },
|
||||
{ -6, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 0, -1 },
|
||||
{ 2, -1 },
|
||||
{ 0, -1 }
|
||||
};
|
||||
yystategoto = stategoto;
|
||||
|
||||
yydestructorptr = NULL;
|
||||
|
||||
yytokendestptr = NULL;
|
||||
yytokendest_size = 0;
|
||||
yytokendestbase = 0;
|
||||
}
|
63
Utils/Scripter/parser.h
Normal file
63
Utils/Scripter/parser.h
Normal file
|
@ -0,0 +1,63 @@
|
|||
#ifndef _PARSER_H
|
||||
#define _PARSER_H
|
||||
|
||||
#include <cyacc.h>
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// myparser
|
||||
|
||||
class YYFAR myparser : public yyfparser {
|
||||
public:
|
||||
myparser();
|
||||
|
||||
protected:
|
||||
void yytables();
|
||||
virtual void yyaction(int action);
|
||||
#ifdef YYDEBUG
|
||||
void YYFAR* yyattribute1(int index) const;
|
||||
void yyinitdebug(void YYFAR** p, int count) const;
|
||||
#endif
|
||||
|
||||
public:
|
||||
#line 22 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
|
||||
// place any extra class members here
|
||||
|
||||
#line 27 "C:\\spongebob\\Utils\\scripter\\parser.h"
|
||||
};
|
||||
|
||||
#ifndef YYPARSENAME
|
||||
#define YYPARSENAME myparser
|
||||
#endif
|
||||
|
||||
#ifndef YYSTYPE
|
||||
union tagYYSTYPE {
|
||||
#line 38 "C:\\spongebob\\Utils\\scripter\\parser.y"
|
||||
|
||||
int variableIdx;
|
||||
signed short value;
|
||||
class CTreeNode *treenode;
|
||||
|
||||
#line 42 "C:\\spongebob\\Utils\\scripter\\parser.h"
|
||||
};
|
||||
|
||||
#define YYSTYPE union tagYYSTYPE
|
||||
#endif
|
||||
|
||||
#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 VARIABLE 271
|
||||
#define VALUE 272
|
||||
#endif
|
405
Utils/Scripter/parser.v
Normal file
405
Utils/Scripter/parser.v
Normal file
|
@ -0,0 +1,405 @@
|
|||
0 $accept : program $end
|
||||
|
||||
1 program : statement_list
|
||||
|
||||
2 statement_list : statement_list statement
|
||||
3 |
|
||||
|
||||
4 statement : END_STMT
|
||||
5 | STOP END_STMT
|
||||
6 | PAUSE END_STMT
|
||||
7 | PRINT OPEN_PAR value CLOSE_PAR END_STMT
|
||||
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 assign_expression : variable ASSIGN value
|
||||
|
||||
13 expression : OPEN_PAR expression CLOSE_PAR
|
||||
14 | equal_expression
|
||||
15 | notequal_expression
|
||||
|
||||
16 equal_expression : value EQUAL value
|
||||
|
||||
17 notequal_expression : value NOTEQUAL value
|
||||
|
||||
18 variable : VARIABLE
|
||||
|
||||
19 value : VALUE
|
||||
20 | VARIABLE
|
||||
21 | value PLUS value
|
||||
|
||||
|
||||
state 0
|
||||
$accept : . program $end
|
||||
statement_list : . (3)
|
||||
|
||||
. reduce 3
|
||||
|
||||
program goto 1
|
||||
statement_list goto 2
|
||||
|
||||
|
||||
state 1
|
||||
$accept : program . $end (0)
|
||||
|
||||
$end accept
|
||||
|
||||
|
||||
state 2
|
||||
program : statement_list . (1)
|
||||
statement_list : statement_list . statement
|
||||
|
||||
STOP shift 3
|
||||
IF shift 4
|
||||
PAUSE shift 5
|
||||
PRINT shift 6
|
||||
END_STMT shift 7
|
||||
BEGIN_CS shift 8
|
||||
VARIABLE shift 9
|
||||
. reduce 1
|
||||
|
||||
statement goto 10
|
||||
assign_expression goto 11
|
||||
variable goto 12
|
||||
|
||||
|
||||
state 3
|
||||
statement : STOP . END_STMT
|
||||
|
||||
END_STMT shift 13
|
||||
|
||||
|
||||
state 4
|
||||
statement : IF . OPEN_PAR expression CLOSE_PAR statement
|
||||
statement : IF . OPEN_PAR expression CLOSE_PAR statement ELSE statement
|
||||
|
||||
OPEN_PAR shift 14
|
||||
|
||||
|
||||
state 5
|
||||
statement : PAUSE . END_STMT
|
||||
|
||||
END_STMT shift 15
|
||||
|
||||
|
||||
state 6
|
||||
statement : PRINT . OPEN_PAR value CLOSE_PAR END_STMT
|
||||
|
||||
OPEN_PAR shift 16
|
||||
|
||||
|
||||
state 7
|
||||
statement : END_STMT . (4)
|
||||
|
||||
. reduce 4
|
||||
|
||||
|
||||
state 8
|
||||
statement : BEGIN_CS . statement_list END_CS
|
||||
statement_list : . (3)
|
||||
|
||||
. reduce 3
|
||||
|
||||
statement_list goto 17
|
||||
|
||||
|
||||
state 9
|
||||
variable : VARIABLE . (18)
|
||||
|
||||
. reduce 18
|
||||
|
||||
|
||||
state 10
|
||||
statement_list : statement_list statement . (2)
|
||||
|
||||
. reduce 2
|
||||
|
||||
|
||||
state 11
|
||||
statement : assign_expression . END_STMT
|
||||
|
||||
END_STMT shift 18
|
||||
|
||||
|
||||
state 12
|
||||
assign_expression : variable . ASSIGN value
|
||||
|
||||
ASSIGN shift 19
|
||||
|
||||
|
||||
state 13
|
||||
statement : STOP END_STMT . (5)
|
||||
|
||||
. reduce 5
|
||||
|
||||
|
||||
state 14
|
||||
statement : IF OPEN_PAR . expression CLOSE_PAR statement
|
||||
statement : IF OPEN_PAR . expression CLOSE_PAR statement ELSE statement
|
||||
|
||||
OPEN_PAR shift 20
|
||||
VARIABLE shift 21
|
||||
VALUE shift 22
|
||||
|
||||
expression goto 23
|
||||
equal_expression goto 24
|
||||
notequal_expression goto 25
|
||||
value goto 26
|
||||
|
||||
|
||||
state 15
|
||||
statement : PAUSE END_STMT . (6)
|
||||
|
||||
. reduce 6
|
||||
|
||||
|
||||
state 16
|
||||
statement : PRINT OPEN_PAR . value CLOSE_PAR END_STMT
|
||||
|
||||
VARIABLE shift 21
|
||||
VALUE shift 22
|
||||
|
||||
value goto 27
|
||||
|
||||
|
||||
state 17
|
||||
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 28
|
||||
VARIABLE shift 9
|
||||
|
||||
statement goto 10
|
||||
assign_expression goto 11
|
||||
variable goto 12
|
||||
|
||||
|
||||
state 18
|
||||
statement : assign_expression END_STMT . (8)
|
||||
|
||||
. reduce 8
|
||||
|
||||
|
||||
state 19
|
||||
assign_expression : variable ASSIGN . value
|
||||
|
||||
VARIABLE shift 21
|
||||
VALUE shift 22
|
||||
|
||||
value goto 29
|
||||
|
||||
|
||||
state 20
|
||||
expression : OPEN_PAR . expression CLOSE_PAR
|
||||
|
||||
OPEN_PAR shift 20
|
||||
VARIABLE shift 21
|
||||
VALUE shift 22
|
||||
|
||||
expression goto 30
|
||||
equal_expression goto 24
|
||||
notequal_expression goto 25
|
||||
value goto 26
|
||||
|
||||
|
||||
state 21
|
||||
value : VARIABLE . (20)
|
||||
|
||||
. reduce 20
|
||||
|
||||
|
||||
state 22
|
||||
value : VALUE . (19)
|
||||
|
||||
. reduce 19
|
||||
|
||||
|
||||
state 23
|
||||
statement : IF OPEN_PAR expression . CLOSE_PAR statement
|
||||
statement : IF OPEN_PAR expression . CLOSE_PAR statement ELSE statement
|
||||
|
||||
CLOSE_PAR shift 31
|
||||
|
||||
|
||||
state 24
|
||||
expression : equal_expression . (14)
|
||||
|
||||
. reduce 14
|
||||
|
||||
|
||||
state 25
|
||||
expression : notequal_expression . (15)
|
||||
|
||||
. reduce 15
|
||||
|
||||
|
||||
state 26
|
||||
equal_expression : value . EQUAL value
|
||||
notequal_expression : value . NOTEQUAL value
|
||||
value : value . PLUS value
|
||||
|
||||
EQUAL shift 32
|
||||
NOTEQUAL shift 33
|
||||
PLUS shift 34
|
||||
|
||||
|
||||
state 27
|
||||
statement : PRINT OPEN_PAR value . CLOSE_PAR END_STMT
|
||||
value : value . PLUS value
|
||||
|
||||
PLUS shift 34
|
||||
CLOSE_PAR shift 35
|
||||
|
||||
|
||||
state 28
|
||||
statement : BEGIN_CS statement_list END_CS . (11)
|
||||
|
||||
. reduce 11
|
||||
|
||||
|
||||
state 29
|
||||
assign_expression : variable ASSIGN value . (12)
|
||||
value : value . PLUS value
|
||||
|
||||
PLUS shift 34
|
||||
. reduce 12
|
||||
|
||||
|
||||
state 30
|
||||
expression : OPEN_PAR expression . CLOSE_PAR
|
||||
|
||||
CLOSE_PAR shift 36
|
||||
|
||||
|
||||
state 31
|
||||
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
|
||||
|
||||
statement goto 37
|
||||
assign_expression goto 11
|
||||
variable goto 12
|
||||
|
||||
|
||||
state 32
|
||||
equal_expression : value EQUAL . value
|
||||
|
||||
VARIABLE shift 21
|
||||
VALUE shift 22
|
||||
|
||||
value goto 38
|
||||
|
||||
|
||||
state 33
|
||||
notequal_expression : value NOTEQUAL . value
|
||||
|
||||
VARIABLE shift 21
|
||||
VALUE shift 22
|
||||
|
||||
value goto 39
|
||||
|
||||
|
||||
state 34
|
||||
value : value PLUS . value
|
||||
|
||||
VARIABLE shift 21
|
||||
VALUE shift 22
|
||||
|
||||
value goto 40
|
||||
|
||||
|
||||
state 35
|
||||
statement : PRINT OPEN_PAR value CLOSE_PAR . END_STMT
|
||||
|
||||
END_STMT shift 41
|
||||
|
||||
|
||||
state 36
|
||||
expression : OPEN_PAR expression CLOSE_PAR . (13)
|
||||
|
||||
. reduce 13
|
||||
|
||||
|
||||
37: shift-reduce conflict (shift 42, reduce 9) on ELSE
|
||||
state 37
|
||||
statement : IF OPEN_PAR expression CLOSE_PAR statement . (9)
|
||||
statement : IF OPEN_PAR expression CLOSE_PAR statement . ELSE statement
|
||||
|
||||
ELSE shift 42
|
||||
. reduce 9
|
||||
|
||||
|
||||
state 38
|
||||
equal_expression : value EQUAL value . (16)
|
||||
value : value . PLUS value
|
||||
|
||||
PLUS shift 34
|
||||
. reduce 16
|
||||
|
||||
|
||||
state 39
|
||||
notequal_expression : value NOTEQUAL value . (17)
|
||||
value : value . PLUS value
|
||||
|
||||
PLUS shift 34
|
||||
. reduce 17
|
||||
|
||||
|
||||
40: shift-reduce conflict (shift 34, reduce 21) on PLUS
|
||||
state 40
|
||||
value : value PLUS value . (21)
|
||||
value : value . PLUS value
|
||||
|
||||
PLUS shift 34
|
||||
. reduce 21
|
||||
|
||||
|
||||
state 41
|
||||
statement : PRINT OPEN_PAR value CLOSE_PAR END_STMT . (7)
|
||||
|
||||
. reduce 7
|
||||
|
||||
|
||||
state 42
|
||||
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
|
||||
|
||||
statement goto 43
|
||||
assign_expression goto 11
|
||||
variable goto 12
|
||||
|
||||
|
||||
state 43
|
||||
statement : IF OPEN_PAR expression CLOSE_PAR statement ELSE statement . (10)
|
||||
|
||||
. reduce 10
|
||||
|
||||
|
||||
State 37 contains 1 shift-reduce conflict
|
||||
State 40 contains 1 shift-reduce conflict
|
||||
|
||||
|
||||
18 tokens, 10 nonterminals
|
||||
22 grammar rules, 44 states
|
Loading…
Add table
Reference in a new issue