Line 436... |
Line 436... |
}
|
}
|
//----------------------------------------------------------
|
//----------------------------------------------------------
|
void AddFunctionInputList( std::string aVar, std::vector<Instruction> & aInstructions,Theia::Parser::location_type yylloc)
|
void AddFunctionInputList( std::string aVar, std::vector<Instruction> & aInstructions,Theia::Parser::location_type yylloc)
|
{
|
{
|
//Get the value from the variable
|
//Get the value from the variable
|
|
DCOUT << "Calling AddFunctionInputList input arg: " << aVar << " \n";
|
//Copy the value into function parameter register
|
//Copy the value into function parameter register
|
unsigned FunctionParamReg = GetNextFunctionParamRegister();
|
unsigned FunctionParamReg = GetNextFunctionParamRegister();
|
I.Clear();
|
I.Clear();
|
I.SetCode( EOPERATION_ADD );
|
I.SetCode( EOPERATION_ADD );
|
I.mComment = "copy the value into function parameter register";
|
I.mComment = "copy the value into function parameter register";
|
Line 454... |
Line 454... |
{
|
{
|
I.SetSrc1Displace( true );
|
I.SetSrc1Displace( true );
|
aVar.erase(aVar.find("OFFSET"));
|
aVar.erase(aVar.find("OFFSET"));
|
}
|
}
|
I.SetSrc1Address(atoi(aVar.c_str()+1));
|
I.SetSrc1Address(atoi(aVar.c_str()+1));
|
|
I.SetSrc1SwizzleX(SWX_X);
|
|
I.SetSrc1SwizzleY(SWY_Y);
|
|
I.SetSrc1SwizzleZ(SWZ_Z);
|
|
I.SetSrc0Address(0);
|
|
I.SetSrc0SwizzleX(SWX_X);
|
|
I.SetSrc0SwizzleY(SWY_X);
|
|
I.SetSrc0SwizzleZ(SWZ_X);
|
|
aInstructions.push_back( I );
|
|
I.Clear();
|
return;
|
return;
|
}
|
}
|
std::string Reg = GetRegisterFromFunctionParameter( aVar );
|
std::string Reg = GetRegisterFromFunctionParameter( aVar );
|
if (Reg == "NULL")
|
if (Reg == "NULL")
|
{
|
{
|
Line 809... |
Line 818... |
Theia::Scanner &scanner);
|
Theia::Scanner &scanner);
|
|
|
|
|
|
|
/* Line 318 of lalr1.cc */
|
/* Line 318 of lalr1.cc */
|
#line 815 "parser.tab.c"
|
#line 824 "parser.tab.c"
|
|
|
#ifndef YY_
|
#ifndef YY_
|
# if YYENABLE_NLS
|
# if YYENABLE_NLS
|
# if ENABLE_NLS
|
# if ENABLE_NLS
|
# include <libintl.h> /* FIXME: INFRINGES ON USER NAME SPACE */
|
# include <libintl.h> /* FIXME: INFRINGES ON USER NAME SPACE */
|
Line 877... |
Line 886... |
/* Line 380 of lalr1.cc */
|
/* Line 380 of lalr1.cc */
|
#line 28 "parser.y"
|
#line 28 "parser.y"
|
namespace Theia {
|
namespace Theia {
|
|
|
/* Line 380 of lalr1.cc */
|
/* Line 380 of lalr1.cc */
|
#line 883 "parser.tab.c"
|
#line 892 "parser.tab.c"
|
#if YYERROR_VERBOSE
|
#if YYERROR_VERBOSE
|
|
|
/* Return YYSTR after stripping away unnecessary quotes and
|
/* Return YYSTR after stripping away unnecessary quotes and
|
backslashes, so that it's suitable for yyerror. The heuristic is
|
backslashes, so that it's suitable for yyerror. The heuristic is
|
that double-quoting is unnecessary unless the string contains an
|
that double-quoting is unnecessary unless the string contains an
|
Line 1171... |
Line 1180... |
switch (yyn)
|
switch (yyn)
|
{
|
{
|
case 6:
|
case 6:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 842 "parser.y"
|
#line 851 "parser.y"
|
{
|
{
|
mGenerateFixedPointArithmetic = true;
|
mGenerateFixedPointArithmetic = true;
|
}
|
}
|
break;
|
break;
|
|
|
case 7:
|
case 7:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 847 "parser.y"
|
#line 856 "parser.y"
|
{
|
{
|
//Insert a stupid NOP before the exit... is a bug but easier to just patch like this...
|
//Insert a stupid NOP before the exit... is a bug but easier to just patch like this...
|
|
|
I.Clear();
|
I.Clear();
|
I.mComment = "NOP";
|
I.mComment = "NOP";
|
Line 1201... |
Line 1210... |
break;
|
break;
|
|
|
case 8:
|
case 8:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 864 "parser.y"
|
#line 873 "parser.y"
|
{
|
{
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
// This means this that the expression was just a constant.
|
// This means this that the expression was just a constant.
|
// No operations were inserted
|
// No operations were inserted
|
Line 1272... |
Line 1281... |
break;
|
break;
|
|
|
case 9:
|
case 9:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 931 "parser.y"
|
#line 940 "parser.y"
|
{
|
{
|
I.SetCode( EOPERATION_ADD );
|
I.SetCode( EOPERATION_ADD );
|
I.mComment = "Restore previous function frame offset";
|
I.mComment = "Restore previous function frame offset";
|
I.SetWriteChannel(ECHANNEL_X);
|
I.SetWriteChannel(ECHANNEL_X);
|
I.SetDestinationAddress( SPR_CONTROL_REGISTER );
|
I.SetDestinationAddress( SPR_CONTROL_REGISTER );
|
Line 1303... |
Line 1312... |
break;
|
break;
|
|
|
case 10:
|
case 10:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 959 "parser.y"
|
#line 968 "parser.y"
|
{
|
{
|
|
|
I.mSourceLine = GetCurrentLineNumber( yylloc );
|
I.mSourceLine = GetCurrentLineNumber( yylloc );
|
I.SetCode( EOPERATION_ADD );
|
I.SetCode( EOPERATION_ADD );
|
SetDestinationFromRegister( (yysemantic_stack_[(4) - (1)]), I , true);
|
SetDestinationFromRegister( (yysemantic_stack_[(4) - (1)]), I , true);
|
Line 1325... |
Line 1334... |
break;
|
break;
|
|
|
case 11:
|
case 11:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 977 "parser.y"
|
#line 986 "parser.y"
|
{
|
{
|
|
|
I.mSourceLine = GetCurrentLineNumber( yylloc );
|
I.mSourceLine = GetCurrentLineNumber( yylloc );
|
I.SetCode( EOPERATION_ADD );
|
I.SetCode( EOPERATION_ADD );
|
SetDestinationFromRegister( (yysemantic_stack_[(4) - (1)]), I, false );
|
SetDestinationFromRegister( (yysemantic_stack_[(4) - (1)]), I, false );
|
Line 1358... |
Line 1367... |
break;
|
break;
|
|
|
case 12:
|
case 12:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1006 "parser.y"
|
#line 1015 "parser.y"
|
{
|
{
|
|
|
I.mSourceLine = GetCurrentLineNumber( yylloc );
|
I.mSourceLine = GetCurrentLineNumber( yylloc );
|
I.SetCode( EOPERATION_ADD );
|
I.SetCode( EOPERATION_ADD );
|
SetDestinationFromRegister( (yysemantic_stack_[(4) - (1)]), I, false );
|
SetDestinationFromRegister( (yysemantic_stack_[(4) - (1)]), I, false );
|
Line 1387... |
Line 1396... |
break;
|
break;
|
|
|
case 13:
|
case 13:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1031 "parser.y"
|
#line 1040 "parser.y"
|
{
|
{
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
|
// This means this that the expression will read from the T memory
|
|
// variable index
|
|
// For example:
|
|
// vector MyAddress,MyReadValue;
|
|
// MyReadValue = in [ MyAddress ];
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
DCOUT << (yysemantic_stack_[(4) - (3)]) << " YYY \n";
|
|
if ((yysemantic_stack_[(4) - (3)]).find("IN") != std::string::npos )
|
|
{
|
|
|
|
std::string ReadAddress = (yysemantic_stack_[(4) - (3)]);
|
|
|
|
std::string SourceAddrRegister = ReadAddress.substr(ReadAddress.find("INDEX")+5);
|
|
DCOUT << "!!!!!!!!!!!!!!!!! " << ReadAddress << "\n";
|
|
ReadAddress.erase(0,ReadAddress.find("IN")+3);
|
|
DCOUT << "!!!!!!!!!!!!!!!!! " << ReadAddress << "\n";
|
|
|
|
I.SetDestZero( true ); //Use indexing for DST
|
|
I.SetWriteChannel(ECHANNEL_XYZ);
|
|
|
|
|
|
PopulateSourceRegisters( ReadAddress, "R0", I, mInstructions );
|
|
|
|
SetDestinationFromRegister( (yysemantic_stack_[(4) - (1)]), I, false );
|
|
I.mSourceLine = GetCurrentLineNumber(yylloc);
|
|
I.SetCode( EOPERATION_IO );
|
|
I.SetIOOperation( EIO_TMREAD );
|
|
|
|
|
|
mInstructions.push_back( I );
|
|
I.Clear();
|
|
ResetTempRegisterIndex();
|
|
goto LABEL_EXPRESSION_DONE;
|
|
}
|
|
//////////////////////////////////////////////////////////////////////////////
|
// This means this that the expression will write into the output memory
|
// This means this that the expression will write into the output memory
|
// constant index
|
// constant index
|
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
if ((yysemantic_stack_[(4) - (1)]).find("OUT") != std::string::npos && (yysemantic_stack_[(4) - (1)]).find("INDEX") == std::string::npos )
|
if ((yysemantic_stack_[(4) - (1)]).find("OUT") != std::string::npos && (yysemantic_stack_[(4) - (1)]).find("INDEX") == std::string::npos )
|
{
|
{
|
//PopulateInstruction( "R0", "R0 . X X X",$3,I,yylloc);
|
//PopulateInstruction( "R0", "R0 . X X X",$3,I,yylloc);
|
|
|
I.SetCode(EOPERATION_OUT);
|
I.SetCode(EOPERATION_IO);
|
|
I.SetIOOperation( EIO_OMWRITE );
|
|
|
(yysemantic_stack_[(4) - (1)]).erase((yysemantic_stack_[(4) - (1)]).find("OUT"),3);
|
(yysemantic_stack_[(4) - (1)]).erase((yysemantic_stack_[(4) - (1)]).find("OUT"),3);
|
|
|
unsigned int ImmediateValue;
|
unsigned int ImmediateValue;
|
std::stringstream ss;
|
std::stringstream ss;
|
ss << std::hex << (yysemantic_stack_[(4) - (1)]);
|
ss << std::hex << (yysemantic_stack_[(4) - (1)]);
|
Line 1431... |
Line 1479... |
|
|
|
|
I.SetDestZero( true ); //Use indexing for DST
|
I.SetDestZero( true ); //Use indexing for DST
|
I.SetWriteChannel(ECHANNEL_XYZ);
|
I.SetWriteChannel(ECHANNEL_XYZ);
|
|
|
PopulateSourceRegisters( IndexRegister + " OFFSET ", (yysemantic_stack_[(4) - (3)]), I, mInstructions );
|
// PopulateSourceRegisters( IndexRegister + " OFFSET ", $3, I, mInstructions );
|
|
PopulateSourceRegisters( IndexRegister, (yysemantic_stack_[(4) - (3)]), I, mInstructions );
|
|
|
|
|
//I.SetImm( 0 );
|
//I.SetImm( 0 );
|
I.SetCode( EOPERATION_OUT );
|
I.SetCode( EOPERATION_IO );
|
|
I.SetIOOperation( EIO_OMWRITE );
|
|
|
std::string Source0 = (yysemantic_stack_[(4) - (3)]);
|
std::string Source0 = (yysemantic_stack_[(4) - (3)]);
|
DCOUT << "!!!!!!!!!!!!!!!!!Source0 '" << Source0 << "'\n";
|
DCOUT << "!!!!!!!!!!!!!!!!!Source0 '" << Source0 << "'\n";
|
/* if (Source0.find("OFFSET") != std::string::npos)
|
|
{
|
|
Source0.erase(Source0.find("OFFSET"));
|
|
I.SetSrc0Displace(1);
|
|
}
|
|
I.SetSrc1Address(atoi(IndexRegister.c_str()+1));
|
|
I.SetSrc0Address(atoi(Source0.c_str()+1));*/
|
|
|
|
/* if (Destination.find(".") != std::string::npos)
|
|
{
|
|
I.ClearWriteChannel();
|
|
if (Destination.find("x") != std::string::npos)
|
|
I.SetWriteChannel(ECHANNEL_X);
|
|
if (Destination.find("y") != std::string::npos)
|
|
I.SetWriteChannel(ECHANNEL_Y);
|
|
if (Destination.find("z") != std::string::npos)
|
|
I.SetWriteChannel(ECHANNEL_Z);
|
|
|
|
Destination.erase(Destination.find("."));
|
|
|
|
}
|
|
|
|
std::string Source0 = $3;
|
|
if (Source0.find("OFFSET") != std::string::npos)
|
|
{
|
|
Source0.erase(Source0.find("OFFSET"));
|
|
I.SetSrc0Displace(1);
|
|
}
|
|
I.SetSrc1Address(atoi(IndexRegister.c_str()+1));
|
|
I.SetSrc0Address(atoi(Source0.c_str()+1));
|
|
|
|
|
|
// I.SetSrc0Address(mInstructions.back().GetDestinationAddress());
|
|
I.SetDestZero(0);
|
|
I.SetSrc1Displace(1);
|
|
I.SetSrc0Displace(1);
|
|
I.SetDestinationAddress( atoi(Destination.c_str()+1) );*/
|
|
mInstructions.push_back( I );
|
mInstructions.push_back( I );
|
I.Clear();
|
I.Clear();
|
ResetTempRegisterIndex();
|
ResetTempRegisterIndex();
|
goto LABEL_EXPRESSION_DONE;
|
goto LABEL_EXPRESSION_DONE;
|
}
|
}
|
Line 1704... |
Line 1719... |
break;
|
break;
|
|
|
case 14:
|
case 14:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1343 "parser.y"
|
#line 1358 "parser.y"
|
{ /*Middle rule here, get me the loop address*/ ;gWhileLoopAddress = (mInstructions.size());}
|
{ /*Middle rule here, get me the loop address*/ ;gWhileLoopAddress = (mInstructions.size());}
|
break;
|
break;
|
|
|
case 15:
|
case 15:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1344 "parser.y"
|
#line 1359 "parser.y"
|
{
|
{
|
mInstructions[gBranchStack.back()].SetDestinationAddress(mInstructions.size()+1);
|
mInstructions[gBranchStack.back()].SetDestinationAddress(mInstructions.size()+1);
|
gBranchStack.pop_back();
|
gBranchStack.pop_back();
|
//Now I need to put a GOTO so that the while gets evaluated again...
|
//Now I need to put a GOTO so that the while gets evaluated again...
|
//jump out of the if
|
//jump out of the if
|
Line 1732... |
Line 1747... |
break;
|
break;
|
|
|
case 16:
|
case 16:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1363 "parser.y"
|
#line 1390 "parser.y"
|
{
|
{ //Start of middle rule
|
|
|
//jump out of the if
|
//jump out of the if
|
I.Clear();
|
I.Clear();
|
I.SetCode( EOPERATION_ADD );
|
I.SetCode( EOPERATION_ADD );
|
I.SetBranchFlag( true );
|
I.SetBranchFlag( true );
|
Line 1747... |
Line 1762... |
//Take care of the destination addr of the if statement.
|
//Take care of the destination addr of the if statement.
|
mInstructions[gBranchStack.back()].SetDestinationAddress(mInstructions.size());
|
mInstructions[gBranchStack.back()].SetDestinationAddress(mInstructions.size());
|
gBranchStack.pop_back();
|
gBranchStack.pop_back();
|
//push the inconditional jump into the stack
|
//push the inconditional jump into the stack
|
gBranchStack.push_back(mInstructions.size() - 1);
|
gBranchStack.push_back(mInstructions.size() - 1);
|
////std::cout << "else\n";
|
|
|
|
}
|
}
|
break;
|
break;
|
|
|
case 17:
|
case 17:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1381 "parser.y"
|
#line 1408 "parser.y"
|
{
|
{
|
|
|
mInstructions[gBranchStack.back()].SetDestinationAddress(mInstructions.size());
|
mInstructions[gBranchStack.back()].SetDestinationAddress(mInstructions.size());
|
gBranchStack.pop_back();
|
gBranchStack.pop_back();
|
//Now push the JMP
|
|
|
|
////std::cout << "END elseif\n";
|
|
}
|
}
|
break;
|
break;
|
|
|
case 18:
|
case 18:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1392 "parser.y"
|
#line 1426 "parser.y"
|
{
|
{
|
mInstructions[gBranchStack.back()].SetDestinationAddress(mInstructions.size());
|
mInstructions[gBranchStack.back()].SetDestinationAddress(mInstructions.size());
|
//mInstructions[gBranchStack.back()].mSourceLine = GetCurrentLineNumber(yylloc);
|
//mInstructions[gBranchStack.back()].mSourceLine = GetCurrentLineNumber(yylloc);
|
|
|
gBranchStack.pop_back();
|
gBranchStack.pop_back();
|
Line 1783... |
Line 1796... |
break;
|
break;
|
|
|
case 19:
|
case 19:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1402 "parser.y"
|
#line 1446 "parser.y"
|
{
|
{
|
////std::cout << "Function declaration for " << $2 << " at " << mInstructions.size() << "\n" ;
|
DCOUT << "Function declaration for " << (yysemantic_stack_[(5) - (2)]) << " at " << mInstructions.size() << "\n" ;
|
mSymbolMap[ (yysemantic_stack_[(5) - (2)]) ] = mInstructions.size();
|
mSymbolMap[ (yysemantic_stack_[(5) - (2)]) ] = mInstructions.size();
|
}
|
}
|
break;
|
break;
|
|
|
case 20:
|
case 20:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1406 "parser.y"
|
#line 1450 "parser.y"
|
{
|
{
|
//Clear the auto var index now that we leave the function scope
|
//Clear the auto var index now that we leave the function scope
|
ClearAutoVarMap();
|
ClearAutoVarMap();
|
ClearFunctionParameterMap();
|
ClearFunctionParameterMap();
|
|
|
Line 1821... |
Line 1834... |
break;
|
break;
|
|
|
case 21:
|
case 21:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1431 "parser.y"
|
#line 1485 "parser.y"
|
{
|
{
|
gThreadMap[ (yysemantic_stack_[(4) - (2)]) ] = mInstructions.size();
|
gThreadMap[ (yysemantic_stack_[(4) - (2)]) ] = mInstructions.size();
|
gThreadScope = true;
|
gThreadScope = true;
|
}
|
}
|
break;
|
break;
|
|
|
case 22:
|
case 22:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1436 "parser.y"
|
#line 1490 "parser.y"
|
{
|
{
|
////std::cout << "Defining thread" << "\n";
|
////std::cout << "Defining thread" << "\n";
|
gThreadScope = false;
|
gThreadScope = false;
|
ClearAutoVarMap();
|
ClearAutoVarMap();
|
//Since the thread is done, then disable threading
|
//Since the thread is done, then disable threading
|
Line 1853... |
Line 1866... |
break;
|
break;
|
|
|
case 23:
|
case 23:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1454 "parser.y"
|
#line 1516 "parser.y"
|
{
|
{
|
unsigned int ThreadCodeOffset = 0;
|
unsigned int ThreadCodeOffset = 0;
|
////std::cout << "Starting thread" << "\n";
|
////std::cout << "Starting thread" << "\n";
|
if (gThreadMap.find((yysemantic_stack_[(5) - (2)])) == gThreadMap.end())
|
if (gThreadMap.find((yysemantic_stack_[(5) - (2)])) == gThreadMap.end())
|
{
|
{
|
Line 1898... |
Line 1911... |
break;
|
break;
|
|
|
case 24:
|
case 24:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1495 "parser.y"
|
#line 1565 "parser.y"
|
{
|
{
|
////std::cout << "Function call returning to var\n";
|
////std::cout << "Function call returning to var\n";
|
StoreReturnAddress( mInstructions, yylloc );
|
StoreReturnAddress( mInstructions, yylloc );
|
SavePreviousFramePointer( mInstructions );
|
SavePreviousFramePointer( mInstructions );
|
UpdateFramePointer( mInstructions );
|
UpdateFramePointer( mInstructions );
|
Line 1925... |
Line 1938... |
break;
|
break;
|
|
|
case 25:
|
case 25:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1519 "parser.y"
|
#line 1596 "parser.y"
|
{
|
{
|
|
|
//Store the return address
|
//Store the return address
|
StoreReturnAddress( mInstructions, yylloc );
|
StoreReturnAddress( mInstructions, yylloc );
|
|
|
Line 1962... |
Line 1975... |
//Call the function with a JMP
|
//Call the function with a JMP
|
I.SetCode( EOPERATION_ADD );
|
I.SetCode( EOPERATION_ADD );
|
I.mComment = "call the function";
|
I.mComment = "call the function";
|
I.SetBranchFlag( true );
|
I.SetBranchFlag( true );
|
I.SetBranchType( EBRANCH_ALWAYS );
|
I.SetBranchType( EBRANCH_ALWAYS );
|
//Now do the branch
|
|
|
//Now assign the destination of the branch (our function virtual address)
|
if (mSymbolMap.find((yysemantic_stack_[(5) - (1)])) == mSymbolMap.end())
|
if (mSymbolMap.find((yysemantic_stack_[(5) - (1)])) == mSymbolMap.end())
|
{
|
{
|
// ////std::cout << "Error in line : " << $1 <<" undelcared IDENTIFIER\n";
|
//The destination is not yet declared
|
|
//so leave it as a symbol so that it can latter
|
|
//resolved by the linker
|
I.SetDestinationSymbol( "@"+(yysemantic_stack_[(5) - (1)]) );
|
I.SetDestinationSymbol( "@"+(yysemantic_stack_[(5) - (1)]) );
|
// exit(1);
|
|
} else {
|
} else {
|
|
//The destination symbol has already been declared
|
|
//so assign it right away
|
I.SetDestinationAddress( mSymbolMap[ (yysemantic_stack_[(5) - (1)]) ] );
|
I.SetDestinationAddress( mSymbolMap[ (yysemantic_stack_[(5) - (1)]) ] );
|
}
|
}
|
|
|
|
//Push the last instruction in the sequence and clean up
|
mInstructions.push_back( I );
|
mInstructions.push_back( I );
|
I.Clear();
|
I.Clear();
|
|
|
}
|
}
|
break;
|
break;
|
|
|
case 27:
|
case 27:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1578 "parser.y"
|
#line 1659 "parser.y"
|
{
|
{
|
AddFunctionInputList( (yysemantic_stack_[(3) - (1)]), mInstructions,yylloc );
|
AddFunctionInputList( (yysemantic_stack_[(3) - (1)]), mInstructions,yylloc );
|
}
|
}
|
break;
|
break;
|
|
|
case 28:
|
case 28:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1583 "parser.y"
|
#line 1664 "parser.y"
|
{
|
{
|
AddFunctionInputList( (yysemantic_stack_[(1) - (1)]),mInstructions, yylloc );
|
AddFunctionInputList( (yysemantic_stack_[(1) - (1)]),mInstructions, yylloc );
|
}
|
}
|
break;
|
break;
|
|
|
case 30:
|
case 30:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1592 "parser.y"
|
#line 1673 "parser.y"
|
{
|
{
|
AddFunctionParameter( (yysemantic_stack_[(3) - (1)]), yylloc );
|
AddFunctionParameter( (yysemantic_stack_[(3) - (1)]), yylloc );
|
}
|
}
|
break;
|
break;
|
|
|
case 31:
|
case 31:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1597 "parser.y"
|
#line 1678 "parser.y"
|
{
|
{
|
AddFunctionParameter( (yysemantic_stack_[(1) - (1)]), yylloc );
|
AddFunctionParameter( (yysemantic_stack_[(1) - (1)]), yylloc );
|
}
|
}
|
break;
|
break;
|
|
|
case 32:
|
case 32:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1618 "parser.y"
|
#line 1709 "parser.y"
|
{
|
{
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
gExtraDestModifications = 0;
|
gExtraDestModifications = 0;
|
|
|
I.SetCode( EOPERATION_ADD );
|
I.SetCode( EOPERATION_ADD );
|
Line 2043... |
Line 2060... |
break;
|
break;
|
|
|
case 33:
|
case 33:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1639 "parser.y"
|
#line 1730 "parser.y"
|
{
|
{
|
gExtraDestModifications = 0;
|
gExtraDestModifications = 0;
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
I.SetCode( EOPERATION_ADD );
|
I.SetCode( EOPERATION_ADD );
|
I.SetDestinationAddress( TempRegIndex );
|
I.SetDestinationAddress( TempRegIndex );
|
Line 2069... |
Line 2086... |
break;
|
break;
|
|
|
case 34:
|
case 34:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1661 "parser.y"
|
#line 1752 "parser.y"
|
{
|
{
|
gExtraDestModifications = 0;
|
gExtraDestModifications = 0;
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
I.SetDestinationAddress( TempRegIndex );
|
I.SetDestinationAddress( TempRegIndex );
|
I.SetDestZero( true ); //Use indexing for DST
|
I.SetDestZero( true ); //Use indexing for DST
|
Line 2094... |
Line 2111... |
break;
|
break;
|
|
|
case 35:
|
case 35:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1682 "parser.y"
|
#line 1782 "parser.y"
|
{
|
{
|
(yyval) = (yysemantic_stack_[(1) - (1)]);
|
std::string Register;
|
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(4) - (3)]))) != "NULL")
|
|
(yyval) = "IN " + Register;
|
|
else
|
|
(yyval) = "IN " + GetRegisterFromAutoVar( (yysemantic_stack_[(4) - (3)]), yylloc ) + " OFFSET ";
|
}
|
}
|
break;
|
break;
|
|
|
case 36:
|
case 36:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1690 "parser.y"
|
#line 1791 "parser.y"
|
|
{
|
|
(yyval) = (yysemantic_stack_[(1) - (1)]);
|
|
}
|
|
break;
|
|
|
|
case 37:
|
|
|
|
/* Line 678 of lalr1.cc */
|
|
#line 1799 "parser.y"
|
{
|
{
|
gExtraDestModifications = 0;
|
gExtraDestModifications = 0;
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
I.SetDestinationAddress( TempRegIndex );
|
I.SetDestinationAddress( TempRegIndex );
|
I.SetDestZero( true ); //Use indexing for DST
|
I.SetDestZero( true ); //Use indexing for DST
|
Line 2129... |
Line 2159... |
ss << "R" << TempRegIndex << " OFFSET ";
|
ss << "R" << TempRegIndex << " OFFSET ";
|
(yyval) = ss.str();
|
(yyval) = ss.str();
|
}
|
}
|
break;
|
break;
|
|
|
case 37:
|
case 38:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1715 "parser.y"
|
#line 1824 "parser.y"
|
{
|
{
|
gExtraDestModifications = 0;
|
gExtraDestModifications = 0;
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
I.SetDestinationAddress( TempRegIndex );
|
I.SetDestinationAddress( TempRegIndex );
|
I.SetDestZero( true ); //Use indexing for DST
|
I.SetDestZero( true ); //Use indexing for DST
|
Line 2158... |
Line 2188... |
ss << "R" << TempRegIndex << " OFFSET ";
|
ss << "R" << TempRegIndex << " OFFSET ";
|
(yyval) = ss.str();
|
(yyval) = ss.str();
|
}
|
}
|
break;
|
break;
|
|
|
case 38:
|
case 39:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1740 "parser.y"
|
#line 1849 "parser.y"
|
{
|
{
|
gExtraDestModifications = 0;
|
gExtraDestModifications = 0;
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
I.SetDestinationAddress( TempRegIndex );
|
I.SetDestinationAddress( TempRegIndex );
|
I.SetDestZero( true ); //Use indexing for DST
|
I.SetDestZero( true ); //Use indexing for DST
|
Line 2183... |
Line 2213... |
ss << "R" << TempRegIndex << " OFFSET ";
|
ss << "R" << TempRegIndex << " OFFSET ";
|
(yyval) = ss.str();
|
(yyval) = ss.str();
|
}
|
}
|
break;
|
break;
|
|
|
case 39:
|
case 40:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1761 "parser.y"
|
#line 1870 "parser.y"
|
{
|
{
|
(yyval) = (yysemantic_stack_[(1) - (1)]);
|
(yyval) = (yysemantic_stack_[(1) - (1)]);
|
}
|
}
|
break;
|
break;
|
|
|
case 40:
|
case 41:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1769 "parser.y"
|
#line 1878 "parser.y"
|
{
|
{
|
(yyval) = (yysemantic_stack_[(1) - (1)]);
|
(yyval) = (yysemantic_stack_[(1) - (1)]);
|
}
|
}
|
break;
|
break;
|
|
|
case 41:
|
case 42:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1774 "parser.y"
|
#line 1888 "parser.y"
|
{
|
{
|
gExtraDestModifications = 0;
|
gExtraDestModifications = 0;
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
I.SetDestinationAddress( TempRegIndex );
|
I.SetDestinationAddress( TempRegIndex );
|
I.SetDestZero( true ); //Use indexing for DST
|
I.SetDestZero( true ); //Use indexing for DST
|
Line 2224... |
Line 2254... |
ss << "R" << TempRegIndex << " OFFSET ";
|
ss << "R" << TempRegIndex << " OFFSET ";
|
(yyval) = ss.str();
|
(yyval) = ss.str();
|
}
|
}
|
break;
|
break;
|
|
|
case 42:
|
case 43:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1793 "parser.y"
|
#line 1907 "parser.y"
|
{
|
{
|
(yyval) = (yysemantic_stack_[(3) - (2)]);
|
(yyval) = (yysemantic_stack_[(3) - (2)]);
|
}
|
}
|
break;
|
break;
|
|
|
case 43:
|
case 44:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1803 "parser.y"
|
#line 1917 "parser.y"
|
{
|
{
|
|
|
unsigned int ImmediateValue;
|
unsigned int ImmediateValue;
|
std::string StringHex = (yysemantic_stack_[(1) - (1)]);
|
std::string StringHex = (yysemantic_stack_[(1) - (1)]);
|
std::stringstream ss;
|
std::stringstream ss;
|
Line 2267... |
Line 2297... |
break;
|
break;
|
}
|
}
|
}
|
}
|
break;
|
break;
|
|
|
case 44:
|
case 45:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1833 "parser.y"
|
#line 1947 "parser.y"
|
{
|
{
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
unsigned int TempRegIndex = GetFreeTempRegister();
|
unsigned int ImmediateValue;
|
unsigned int ImmediateValue;
|
|
|
{
|
{
|
Line 2336... |
Line 2366... |
ss2 << "R" << TempRegIndex << " OFFSET ";
|
ss2 << "R" << TempRegIndex << " OFFSET ";
|
(yyval) = ss2.str();
|
(yyval) = ss2.str();
|
}
|
}
|
break;
|
break;
|
|
|
case 45:
|
case 46:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1898 "parser.y"
|
#line 2012 "parser.y"
|
{
|
{
|
|
|
|
|
std::string Register;
|
std::string Register;
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(2) - (1)]))) != "NULL")
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(2) - (1)]))) != "NULL")
|
Line 2358... |
Line 2388... |
|
|
}
|
}
|
}
|
}
|
break;
|
break;
|
|
|
case 46:
|
case 47:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1916 "parser.y"
|
#line 2030 "parser.y"
|
{
|
{
|
|
|
std::string X = (yysemantic_stack_[(5) - (3)]),Y = (yysemantic_stack_[(5) - (4)]),Z = (yysemantic_stack_[(5) - (5)]);
|
std::string X = (yysemantic_stack_[(5) - (3)]),Y = (yysemantic_stack_[(5) - (4)]),Z = (yysemantic_stack_[(5) - (5)]);
|
std::string Register;
|
std::string Register;
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(5) - (1)]))) != "NULL")
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(5) - (1)]))) != "NULL")
|
(yyval) = (Register + " . " + " " + X + " " + Y + " " + Z + " OFFSET ");
|
(yyval) = (Register + " . " + " " + X + " " + Y + " " + Z/* + " OFFSET "*/);
|
else
|
else
|
(yyval) = (GetRegisterFromAutoVar( (yysemantic_stack_[(5) - (1)]), yylloc) + " . " + " " + X + " " + Y + " " + Z + " OFFSET ");
|
(yyval) = (GetRegisterFromAutoVar( (yysemantic_stack_[(5) - (1)]), yylloc) + " . " + " " + X + " " + Y + " " + Z + " OFFSET ");
|
}
|
}
|
break;
|
break;
|
|
|
case 47:
|
case 48:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1927 "parser.y"
|
#line 2041 "parser.y"
|
{
|
{
|
|
|
std::string R = (yysemantic_stack_[(1) - (1)]);
|
std::string R = (yysemantic_stack_[(1) - (1)]);
|
R.erase(0,1);
|
R.erase(0,1);
|
(yyval) = "R" + R;
|
(yyval) = "R" + R;
|
|
|
}
|
}
|
break;
|
break;
|
|
|
case 48:
|
case 49:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1936 "parser.y"
|
#line 2050 "parser.y"
|
{
|
{
|
|
|
std::string R = (yysemantic_stack_[(4) - (1)]);
|
std::string R = (yysemantic_stack_[(4) - (1)]);
|
R.erase(0,1);
|
R.erase(0,1);
|
(yyval) = "<<R" + R;
|
(yyval) = "<<R" + R;
|
}
|
}
|
break;
|
break;
|
|
|
case 49:
|
case 50:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1944 "parser.y"
|
#line 2058 "parser.y"
|
{
|
{
|
|
|
std::string R = (yysemantic_stack_[(4) - (1)]);
|
std::string R = (yysemantic_stack_[(4) - (1)]);
|
R.erase(0,1);
|
R.erase(0,1);
|
(yyval) = ">>R" + R;
|
(yyval) = ">>R" + R;
|
}
|
}
|
break;
|
break;
|
|
|
case 50:
|
case 51:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1952 "parser.y"
|
#line 2066 "parser.y"
|
{
|
{
|
std::string R = (yysemantic_stack_[(5) - (1)]);
|
std::string R = (yysemantic_stack_[(5) - (1)]);
|
std::string X = (yysemantic_stack_[(5) - (3)]),Y = (yysemantic_stack_[(5) - (4)]),Z = (yysemantic_stack_[(5) - (5)]);
|
std::string X = (yysemantic_stack_[(5) - (3)]),Y = (yysemantic_stack_[(5) - (4)]),Z = (yysemantic_stack_[(5) - (5)]);
|
R.erase(0,1);
|
R.erase(0,1);
|
(yyval) = "R" + R + " . " + " " + X + " " + Y + " " + Z;
|
(yyval) = "R" + R + " . " + " " + X + " " + Y + " " + Z;
|
|
|
}
|
}
|
break;
|
break;
|
|
|
case 51:
|
case 52:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1965 "parser.y"
|
#line 2079 "parser.y"
|
{
|
{
|
(yyval) = "X";
|
(yyval) = "X";
|
}
|
}
|
break;
|
break;
|
|
|
case 52:
|
case 53:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1970 "parser.y"
|
#line 2084 "parser.y"
|
{
|
{
|
(yyval) = "-X";
|
(yyval) = "-X";
|
}
|
}
|
break;
|
break;
|
|
|
case 53:
|
case 54:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1975 "parser.y"
|
#line 2089 "parser.y"
|
{
|
{
|
(yyval) = "Y";
|
(yyval) = "Y";
|
}
|
}
|
break;
|
break;
|
|
|
case 54:
|
case 55:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1980 "parser.y"
|
#line 2094 "parser.y"
|
{
|
{
|
(yyval) = "-Y";
|
(yyval) = "-Y";
|
}
|
}
|
break;
|
break;
|
|
|
case 55:
|
case 56:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1985 "parser.y"
|
#line 2099 "parser.y"
|
{
|
{
|
(yyval) = "Z";
|
(yyval) = "Z";
|
}
|
}
|
break;
|
break;
|
|
|
case 56:
|
case 57:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1990 "parser.y"
|
#line 2104 "parser.y"
|
{
|
{
|
(yyval) = "-Z";
|
(yyval) = "-Z";
|
}
|
}
|
break;
|
break;
|
|
|
case 57:
|
case 58:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 1998 "parser.y"
|
#line 2112 "parser.y"
|
{
|
{
|
(yyval) = "NULL";
|
(yyval) = "NULL";
|
}
|
}
|
break;
|
break;
|
|
|
case 58:
|
case 59:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2003 "parser.y"
|
#line 2117 "parser.y"
|
{
|
{
|
/*std::string Register;
|
/*std::string Register;
|
if ((Register = GetRegisterFromFunctionParameter($2)) != "NULL")
|
if ((Register = GetRegisterFromFunctionParameter($2)) != "NULL")
|
$$ = Register;
|
$$ = Register;
|
else*/
|
else*/
|
//Indexes into arrays can only be auto variables!
|
//Indexes into arrays can only be auto variables!
|
(yyval) = GetRegisterFromAutoVar( (yysemantic_stack_[(3) - (2)]), yylloc );
|
(yyval) = GetRegisterFromAutoVar( (yysemantic_stack_[(3) - (2)]), yylloc );
|
}
|
}
|
break;
|
break;
|
|
|
case 59:
|
case 60:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2016 "parser.y"
|
#line 2130 "parser.y"
|
{
|
{
|
|
|
(yyval) = "OUT " + (yysemantic_stack_[(4) - (3)]);
|
(yyval) = "OUT " + (yysemantic_stack_[(4) - (3)]);
|
}
|
}
|
break;
|
break;
|
|
|
case 60:
|
case 61:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2022 "parser.y"
|
#line 2136 "parser.y"
|
{
|
{
|
std::string Register;
|
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(4) - (3)]))) == "NULL")
|
|
Register = GetRegisterFromAutoVar( (yysemantic_stack_[(4) - (3)]), yylloc );
|
|
|
|
|
std::string Register;
|
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(4) - (3)]))) != "NULL")
|
(yyval) = "OUT INDEX" + Register;
|
(yyval) = "OUT INDEX" + Register;
|
|
else
|
|
(yyval) = "OUT INDEX" + GetRegisterFromAutoVar( (yysemantic_stack_[(4) - (3)]), yylloc ) + " OFFSET ";
|
|
|
|
|
|
|
}
|
}
|
break;
|
break;
|
|
|
case 61:
|
case 62:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2031 "parser.y"
|
#line 2149 "parser.y"
|
{
|
{
|
|
|
std::string Register;
|
std::string Register;
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(2) - (1)]))) != "NULL")
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(2) - (1)]))) != "NULL")
|
(yyval) = Register + ".xyz";
|
(yyval) = Register + ".xyz";
|
Line 2538... |
Line 2572... |
(yyval) = GetRegisterFromAutoVar( (yysemantic_stack_[(2) - (1)]), yylloc ) + ".xyz" + " OFFSET " + (((yysemantic_stack_[(2) - (2)]) != "NULL")?" INDEX"+(yysemantic_stack_[(2) - (2)]):"");
|
(yyval) = GetRegisterFromAutoVar( (yysemantic_stack_[(2) - (1)]), yylloc ) + ".xyz" + " OFFSET " + (((yysemantic_stack_[(2) - (2)]) != "NULL")?" INDEX"+(yysemantic_stack_[(2) - (2)]):"");
|
|
|
}
|
}
|
break;
|
break;
|
|
|
case 62:
|
case 63:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2042 "parser.y"
|
#line 2160 "parser.y"
|
{
|
{
|
std::string Register;
|
std::string Register;
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(3) - (1)]))) != "NULL")
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(3) - (1)]))) != "NULL")
|
(yyval) = Register + ".x";
|
(yyval) = Register + ".x";
|
else
|
else
|
(yyval) = GetRegisterFromAutoVar( (yysemantic_stack_[(3) - (1)]), yylloc ) + ".x" + " OFFSET ";
|
(yyval) = GetRegisterFromAutoVar( (yysemantic_stack_[(3) - (1)]), yylloc ) + ".x" + " OFFSET ";
|
}
|
}
|
break;
|
break;
|
|
|
case 63:
|
case 64:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2051 "parser.y"
|
#line 2169 "parser.y"
|
{
|
{
|
std::string Register;
|
std::string Register;
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(3) - (1)]))) != "NULL")
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(3) - (1)]))) != "NULL")
|
(yyval) = Register + ".y";
|
(yyval) = Register + ".y";
|
else
|
else
|
(yyval) = GetRegisterFromAutoVar( (yysemantic_stack_[(3) - (1)]), yylloc ) + ".y" + " OFFSET ";
|
(yyval) = GetRegisterFromAutoVar( (yysemantic_stack_[(3) - (1)]), yylloc ) + ".y" + " OFFSET ";
|
}
|
}
|
break;
|
break;
|
|
|
case 64:
|
case 65:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2060 "parser.y"
|
#line 2178 "parser.y"
|
{
|
{
|
std::string Register;
|
std::string Register;
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(3) - (1)]))) != "NULL")
|
if ((Register = GetRegisterFromFunctionParameter((yysemantic_stack_[(3) - (1)]))) != "NULL")
|
(yyval) = Register + ".z";
|
(yyval) = Register + ".z";
|
else
|
else
|
(yyval) = GetRegisterFromAutoVar( (yysemantic_stack_[(3) - (1)]), yylloc ) + ".z" + " OFFSET ";
|
(yyval) = GetRegisterFromAutoVar( (yysemantic_stack_[(3) - (1)]), yylloc ) + ".z" + " OFFSET ";
|
}
|
}
|
break;
|
break;
|
|
|
case 65:
|
case 66:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2069 "parser.y"
|
#line 2187 "parser.y"
|
{
|
{
|
std::string R = (yysemantic_stack_[(1) - (1)]);
|
std::string R = (yysemantic_stack_[(1) - (1)]);
|
R.erase(0,1);
|
R.erase(0,1);
|
(yyval) = "R" + R + ".xyz";
|
(yyval) = "R" + R + ".xyz";
|
}
|
}
|
break;
|
break;
|
|
|
case 66:
|
case 67:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2076 "parser.y"
|
#line 2194 "parser.y"
|
{
|
{
|
std::string R = (yysemantic_stack_[(3) - (1)]);
|
std::string R = (yysemantic_stack_[(3) - (1)]);
|
R.erase(0,1);
|
R.erase(0,1);
|
(yyval) = "R" + R + ".x";
|
(yyval) = "R" + R + ".x";
|
}
|
}
|
break;
|
break;
|
|
|
case 67:
|
case 68:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2083 "parser.y"
|
#line 2201 "parser.y"
|
{
|
{
|
std::string R = (yysemantic_stack_[(3) - (1)]);
|
std::string R = (yysemantic_stack_[(3) - (1)]);
|
R.erase(0,1);
|
R.erase(0,1);
|
(yyval) = "R" + R + ".y";
|
(yyval) = "R" + R + ".y";
|
}
|
}
|
break;
|
break;
|
|
|
case 68:
|
case 69:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2090 "parser.y"
|
#line 2208 "parser.y"
|
{
|
{
|
|
|
std::string R = (yysemantic_stack_[(3) - (1)]);
|
std::string R = (yysemantic_stack_[(3) - (1)]);
|
R.erase(0,1);
|
R.erase(0,1);
|
(yyval) = "R" + R + ".z";
|
(yyval) = "R" + R + ".z";
|
}
|
}
|
break;
|
break;
|
|
|
case 69:
|
case 70:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2098 "parser.y"
|
#line 2216 "parser.y"
|
{
|
{
|
std::string R = (yysemantic_stack_[(5) - (1)]);
|
std::string R = (yysemantic_stack_[(5) - (1)]);
|
R.erase(0,1);
|
R.erase(0,1);
|
(yyval) = "R" + R + ".xy";
|
(yyval) = "R" + R + ".xy";
|
}
|
}
|
break;
|
break;
|
|
|
case 70:
|
case 71:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2105 "parser.y"
|
#line 2223 "parser.y"
|
{
|
{
|
std::string R = (yysemantic_stack_[(5) - (1)]);
|
std::string R = (yysemantic_stack_[(5) - (1)]);
|
R.erase(0,1);
|
R.erase(0,1);
|
(yyval) = "R" + R + ".xz";
|
(yyval) = "R" + R + ".xz";
|
}
|
}
|
break;
|
break;
|
|
|
case 71:
|
case 72:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2112 "parser.y"
|
#line 2230 "parser.y"
|
{
|
{
|
std::string R = (yysemantic_stack_[(5) - (1)]);
|
std::string R = (yysemantic_stack_[(5) - (1)]);
|
R.erase(0,1);
|
R.erase(0,1);
|
(yyval) = "R" + R + ".yz";
|
(yyval) = "R" + R + ".yz";
|
}
|
}
|
break;
|
break;
|
|
|
case 72:
|
case 73:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2123 "parser.y"
|
#line 2241 "parser.y"
|
{
|
{
|
PopulateBoolean(EBRANCH_IF_ZERO, (yysemantic_stack_[(3) - (1)]), (yysemantic_stack_[(3) - (3)]), I, mInstructions, yylloc );
|
PopulateBoolean(EBRANCH_IF_ZERO, (yysemantic_stack_[(3) - (1)]), (yysemantic_stack_[(3) - (3)]), I, mInstructions, yylloc );
|
|
|
}
|
}
|
break;
|
break;
|
|
|
case 73:
|
case 74:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2129 "parser.y"
|
#line 2247 "parser.y"
|
{
|
{
|
PopulateBoolean(EBRANCH_IF_NOT_ZERO, (yysemantic_stack_[(3) - (1)]), (yysemantic_stack_[(3) - (3)]), I, mInstructions, yylloc );
|
PopulateBoolean(EBRANCH_IF_NOT_ZERO, (yysemantic_stack_[(3) - (1)]), (yysemantic_stack_[(3) - (3)]), I, mInstructions, yylloc );
|
|
|
}
|
}
|
break;
|
break;
|
|
|
case 74:
|
case 75:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2135 "parser.y"
|
#line 2253 "parser.y"
|
{
|
{
|
PopulateBoolean(EBRANCH_IF_ZERO_OR_SIGN, (yysemantic_stack_[(3) - (1)]), (yysemantic_stack_[(3) - (3)]), I, mInstructions, yylloc );
|
PopulateBoolean(EBRANCH_IF_ZERO_OR_SIGN, (yysemantic_stack_[(3) - (1)]), (yysemantic_stack_[(3) - (3)]), I, mInstructions, yylloc );
|
|
|
}
|
}
|
break;
|
break;
|
|
|
case 75:
|
case 76:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2142 "parser.y"
|
#line 2260 "parser.y"
|
{
|
{
|
PopulateBoolean(EBRANCH_IF_ZERO_OR_NOT_SIGN, (yysemantic_stack_[(3) - (1)]), (yysemantic_stack_[(3) - (3)]), I, mInstructions, yylloc );
|
PopulateBoolean(EBRANCH_IF_ZERO_OR_NOT_SIGN, (yysemantic_stack_[(3) - (1)]), (yysemantic_stack_[(3) - (3)]), I, mInstructions, yylloc );
|
|
|
}
|
}
|
break;
|
break;
|
|
|
case 76:
|
case 77:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2148 "parser.y"
|
#line 2266 "parser.y"
|
{
|
{
|
PopulateBoolean(EBRANCH_IF_NOT_SIGN, (yysemantic_stack_[(3) - (1)]), (yysemantic_stack_[(3) - (3)]), I, mInstructions, yylloc );
|
PopulateBoolean(EBRANCH_IF_NOT_SIGN, (yysemantic_stack_[(3) - (1)]), (yysemantic_stack_[(3) - (3)]), I, mInstructions, yylloc );
|
|
|
}
|
}
|
break;
|
break;
|
|
|
case 77:
|
case 78:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2154 "parser.y"
|
#line 2272 "parser.y"
|
{
|
{
|
PopulateBoolean(EBRANCH_IF_SIGN, (yysemantic_stack_[(3) - (1)]), (yysemantic_stack_[(3) - (3)]), I, mInstructions, yylloc );
|
PopulateBoolean(EBRANCH_IF_SIGN, (yysemantic_stack_[(3) - (1)]), (yysemantic_stack_[(3) - (3)]), I, mInstructions, yylloc );
|
|
|
}
|
}
|
break;
|
break;
|
|
|
case 78:
|
case 79:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2163 "parser.y"
|
#line 2281 "parser.y"
|
{
|
{
|
// Transform to HEX string
|
// Transform to HEX string
|
unsigned int Val;
|
unsigned int Val;
|
std::string StringDec = (yysemantic_stack_[(1) - (1)]);
|
std::string StringDec = (yysemantic_stack_[(1) - (1)]);
|
std::stringstream ss;
|
std::stringstream ss;
|
Line 2732... |
Line 2766... |
ss2 << std::hex << Val;
|
ss2 << std::hex << Val;
|
(yyval) = ss2.str();
|
(yyval) = ss2.str();
|
}
|
}
|
break;
|
break;
|
|
|
case 79:
|
case 80:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2176 "parser.y"
|
#line 2294 "parser.y"
|
{
|
{
|
std::string StringHex = (yysemantic_stack_[(1) - (1)]);
|
std::string StringHex = (yysemantic_stack_[(1) - (1)]);
|
// Get rid of the 0x
|
// Get rid of the 0x
|
StringHex.erase(StringHex.begin(),StringHex.begin()+2);
|
StringHex.erase(StringHex.begin(),StringHex.begin()+2);
|
std::stringstream ss;
|
std::stringstream ss;
|
Line 2747... |
Line 2781... |
|
|
(yyval) = ss.str();
|
(yyval) = ss.str();
|
}
|
}
|
break;
|
break;
|
|
|
case 80:
|
case 81:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2187 "parser.y"
|
#line 2305 "parser.y"
|
{
|
{
|
// Transform to HEX string
|
// Transform to HEX string
|
std::string StringBin = (yysemantic_stack_[(1) - (1)]);
|
std::string StringBin = (yysemantic_stack_[(1) - (1)]);
|
// Get rid of the 0b
|
// Get rid of the 0b
|
StringBin.erase(StringBin.begin(),StringBin.begin()+2);
|
StringBin.erase(StringBin.begin(),StringBin.begin()+2);
|
Line 2763... |
Line 2797... |
ss2 << std::hex << Bitset.to_ulong();
|
ss2 << std::hex << Bitset.to_ulong();
|
(yyval) = ss2.str();
|
(yyval) = ss2.str();
|
}
|
}
|
break;
|
break;
|
|
|
case 81:
|
case 82:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2201 "parser.y"
|
#line 2319 "parser.y"
|
{
|
{
|
if (gAutoVarMap.find((yysemantic_stack_[(4) - (1)])) != gAutoVarMap.end())
|
if (gAutoVarMap.find((yysemantic_stack_[(4) - (1)])) != gAutoVarMap.end())
|
{
|
{
|
std::ostringstream ret;
|
std::ostringstream ret;
|
ret << "Duplicated symbol '" << (yysemantic_stack_[(4) - (1)]) << "'\n";
|
ret << "Duplicated symbol '" << (yysemantic_stack_[(4) - (1)]) << "'\n";
|
Line 2783... |
Line 2817... |
ss >> Size;
|
ss >> Size;
|
gAutoVarMap[ (yysemantic_stack_[(4) - (1)]) ] = AllocAutoVar(Size);
|
gAutoVarMap[ (yysemantic_stack_[(4) - (1)]) ] = AllocAutoVar(Size);
|
}
|
}
|
break;
|
break;
|
|
|
case 82:
|
case 83:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2217 "parser.y"
|
#line 2335 "parser.y"
|
{
|
{
|
if (gAutoVarMap.find((yysemantic_stack_[(11) - (1)])) != gAutoVarMap.end())
|
if (gAutoVarMap.find((yysemantic_stack_[(11) - (1)])) != gAutoVarMap.end())
|
{
|
{
|
std::ostringstream ret;
|
std::ostringstream ret;
|
ret << "Duplicated symbol " << (yysemantic_stack_[(11) - (1)]) << "'\n";
|
ret << "Duplicated symbol " << (yysemantic_stack_[(11) - (1)]) << "'\n";
|
Line 2851... |
Line 2885... |
I.Clear();
|
I.Clear();
|
}
|
}
|
}
|
}
|
break;
|
break;
|
|
|
case 83:
|
case 84:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2281 "parser.y"
|
#line 2399 "parser.y"
|
{
|
{
|
if (gAutoVarMap.find((yysemantic_stack_[(9) - (1)])) != gAutoVarMap.end())
|
if (gAutoVarMap.find((yysemantic_stack_[(9) - (1)])) != gAutoVarMap.end())
|
{
|
{
|
std::ostringstream ret;
|
std::ostringstream ret;
|
ret << "Duplicated symbol " << (yysemantic_stack_[(9) - (1)]) << "'\n";
|
ret << "Duplicated symbol " << (yysemantic_stack_[(9) - (1)]) << "'\n";
|
Line 2923... |
Line 2957... |
I.Clear();
|
I.Clear();
|
}
|
}
|
}
|
}
|
break;
|
break;
|
|
|
case 84:
|
case 85:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2349 "parser.y"
|
#line 2467 "parser.y"
|
{
|
{
|
|
|
if (gAutoVarMap.find((yysemantic_stack_[(2) - (1)])) != gAutoVarMap.end())
|
if (gAutoVarMap.find((yysemantic_stack_[(2) - (1)])) != gAutoVarMap.end())
|
{
|
{
|
std::ostringstream ret;
|
std::ostringstream ret;
|
Line 2944... |
Line 2978... |
////std::cout << "Array Size is " << Size << " " << $2 << "\n";
|
////std::cout << "Array Size is " << Size << " " << $2 << "\n";
|
gAutoVarMap[ (yysemantic_stack_[(2) - (1)]) ] = AllocAutoVar(Size);
|
gAutoVarMap[ (yysemantic_stack_[(2) - (1)]) ] = AllocAutoVar(Size);
|
}
|
}
|
break;
|
break;
|
|
|
case 85:
|
case 86:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2368 "parser.y"
|
#line 2486 "parser.y"
|
{
|
{
|
(yyval) = "1";
|
(yyval) = "1";
|
}
|
}
|
break;
|
break;
|
|
|
case 86:
|
case 87:
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2373 "parser.y"
|
#line 2491 "parser.y"
|
{
|
{
|
|
|
(yyval) = (yysemantic_stack_[(3) - (2)]);
|
(yyval) = (yysemantic_stack_[(3) - (2)]);
|
}
|
}
|
break;
|
break;
|
|
|
|
|
|
|
/* Line 678 of lalr1.cc */
|
/* Line 678 of lalr1.cc */
|
#line 2972 "parser.tab.c"
|
#line 3006 "parser.tab.c"
|
default:
|
default:
|
break;
|
break;
|
}
|
}
|
YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc);
|
YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc);
|
|
|
Line 3171... |
Line 3205... |
}
|
}
|
|
|
|
|
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
|
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
|
STATE-NUM. */
|
STATE-NUM. */
|
const signed char Parser::yypact_ninf_ = -121;
|
const signed char Parser::yypact_ninf_ = -126;
|
const short int
|
const short int
|
Parser::yypact_[] =
|
Parser::yypact_[] =
|
{
|
{
|
216, -26, 243, -19, -14, 3, 19, -11, 27, -121,
|
258, -21, 92, -15, -6, 24, 13, -9, 5, -126,
|
20, 33, 29, 7, -121, 50, 68, 45, 248, -121,
|
28, 43, 6, 8, -126, 126, -11, 44, 252, -126,
|
-121, -121, -121, 48, -22, 59, 71, 75, 54, 8,
|
-126, -126, -126, 55, -12, 74, 76, 77, 54, 110,
|
-121, -121, -121, 108, -121, 248, 184, 248, 153, 81,
|
-16, -126, -126, -126, 84, -126, 252, 188, 252, 157,
|
-121, 104, 117, 122, 126, 134, -121, -121, 271, 121,
|
68, -126, 85, 88, 98, 99, 138, -126, -126, 275,
|
123, 173, 135, 173, 114, -121, 15, 115, 195, 195,
|
109, 106, 177, 120, 177, 100, -126, 36, 101, 199,
|
-121, 248, 127, 133, 248, -121, 248, 248, 248, 248,
|
199, -126, 252, 113, 114, 118, 298, -126, 298, 298,
|
248, 138, 14, 157, 103, -121, -121, 148, 164, 100,
|
298, 298, 298, 121, 15, 127, 41, -126, -126, 134,
|
-121, -121, -121, 145, -121, 248, 174, 175, 151, 158,
|
128, 50, -126, -126, -126, 135, -126, 252, 160, 166,
|
24, 57, 182, 183, 185, 173, 179, -26, -121, 173,
|
142, 149, 18, 111, 168, 169, 171, 177, 162, -21,
|
205, -121, -121, -121, 195, 195, 16, 211, 212, 8,
|
-126, 177, 213, -126, -126, -126, 199, 199, 52, 196,
|
8, 8, -121, -121, -121, 190, 215, 248, 248, 248,
|
197, 173, -16, -16, -16, -126, -126, -126, 185, 215,
|
248, 248, 248, 224, 214, 220, 221, 217, 248, -121,
|
252, 252, 252, 252, 252, 252, 217, 200, 204, 208,
|
231, -121, 227, -121, -121, 248, -121, -121, -121, -121,
|
214, 252, -126, 229, -126, 221, -126, -126, 252, -126,
|
230, -121, -121, 234, -121, -121, -121, 195, 195, -121,
|
-126, -126, -126, 210, -126, -126, 211, -126, -126, -126,
|
-121, -121, 138, -121, 86, 86, 86, 86, 86, 86,
|
199, 199, -126, -126, -126, -126, 121, -126, 82, 82,
|
216, -121, -121, -121, -121, -121, 238, 239, -121, 241,
|
82, 82, 82, 82, 258, -126, -126, -126, -126, -126,
|
173, 173, -121, -121, -121, 247, 55, 216, 216, 249,
|
242, 251, -126, 254, 177, 177, -126, -126, -126, 255,
|
250, 244, 216, 273, 93, 143, -121, 173, -121, 161,
|
63, 258, 258, 247, 234, 262, 258, 265, 147, 165,
|
-121, -121, -121, 272, -121, 274, 252, 216, -26, 199,
|
-126, 177, -126, 203, -126, -126, -126, 264, -126, 266,
|
-121, -121
|
241, 258, -21, 220, -126, -126
|
};
|
};
|
|
|
/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
|
/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
|
doesn't specify something else to do. Zero means the default is an
|
doesn't specify something else to do. Zero means the default is an
|
error. */
|
error. */
|
const unsigned char
|
const unsigned char
|
Parser::yydefact_[] =
|
Parser::yydefact_[] =
|
{
|
{
|
2, 0, 0, 0, 0, 0, 65, 57, 0, 14,
|
2, 0, 0, 0, 0, 0, 66, 58, 0, 14,
|
0, 0, 0, 0, 4, 0, 85, 0, 0, 78,
|
0, 0, 0, 0, 4, 0, 86, 0, 0, 79,
|
79, 80, 9, 47, 57, 0, 0, 0, 0, 35,
|
80, 81, 9, 48, 58, 0, 0, 0, 0, 0,
|
39, 40, 43, 0, 7, 0, 0, 26, 0, 0,
|
36, 40, 41, 44, 0, 7, 0, 0, 26, 0,
|
61, 0, 0, 0, 0, 0, 1, 3, 0, 0,
|
0, 62, 0, 0, 0, 0, 0, 1, 3, 0,
|
0, 0, 0, 0, 84, 5, 0, 43, 0, 0,
|
0, 0, 0, 0, 0, 85, 5, 0, 44, 0,
|
45, 0, 0, 0, 0, 8, 0, 0, 0, 0,
|
0, 46, 0, 0, 0, 0, 0, 8, 0, 0,
|
0, 29, 0, 0, 66, 67, 68, 0, 0, 28,
|
0, 0, 0, 29, 0, 0, 67, 68, 69, 0,
|
62, 63, 64, 0, 6, 0, 0, 0, 0, 0,
|
0, 28, 63, 64, 65, 0, 6, 0, 0, 0,
|
57, 0, 0, 0, 0, 0, 0, 0, 42, 0,
|
0, 0, 58, 0, 0, 0, 0, 0, 0, 0,
|
0, 51, 53, 55, 0, 0, 0, 0, 0, 32,
|
43, 0, 0, 52, 54, 56, 0, 0, 0, 0,
|
33, 34, 37, 36, 38, 31, 0, 0, 0, 0,
|
0, 0, 32, 33, 34, 38, 37, 39, 31, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 26, 58,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 21, 0, 60, 59, 26, 13, 12, 11, 10,
|
0, 26, 59, 0, 21, 0, 61, 60, 26, 13,
|
0, 86, 81, 0, 52, 54, 56, 0, 0, 41,
|
12, 11, 10, 0, 87, 82, 0, 53, 55, 57,
|
48, 49, 29, 19, 73, 72, 74, 75, 76, 77,
|
0, 0, 42, 49, 50, 35, 29, 19, 74, 73,
|
2, 69, 70, 71, 25, 27, 0, 0, 23, 0,
|
75, 76, 77, 78, 2, 70, 71, 72, 25, 27,
|
0, 0, 50, 46, 30, 0, 0, 2, 2, 0,
|
0, 0, 23, 0, 0, 0, 51, 47, 30, 0,
|
0, 0, 2, 18, 0, 0, 24, 0, 44, 0,
|
0, 2, 2, 0, 0, 0, 2, 18, 0, 0,
|
16, 15, 22, 0, 20, 0, 83, 2, 0, 0,
|
24, 0, 45, 0, 16, 15, 22, 0, 20, 0,
|
82, 17
|
84, 2, 0, 0, 83, 17
|
};
|
};
|
|
|
/* YYPGOTO[NTERM-NUM]. */
|
/* YYPGOTO[NTERM-NUM]. */
|
const short int
|
const short int
|
Parser::yypgoto_[] =
|
Parser::yypgoto_[] =
|
{
|
{
|
-121, -52, -13, -121, -121, -121, -121, -120, 142, 0,
|
-126, -125, -13, -126, -126, -126, -126, -121, 129, 0,
|
47, 171, -121, -55, 283, -121, 213, -17, -94, -121
|
20, 186, -126, -56, 276, -126, 207, -17, -96, -126
|
};
|
};
|
|
|
/* YYDEFGOTO[NTERM-NUM]. */
|
/* YYDEFGOTO[NTERM-NUM]. */
|
const short int
|
const short int
|
Parser::yydefgoto_[] =
|
Parser::yydefgoto_[] =
|
{
|
{
|
-1, 13, 14, 42, 195, 175, 167, 78, 116, 79,
|
-1, 13, 14, 43, 199, 179, 171, 80, 119, 81,
|
29, 30, 31, 104, 60, 15, 73, 32, 17, 54
|
30, 31, 32, 106, 61, 15, 75, 33, 17, 55
|
};
|
};
|
|
|
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
positive, shift that token. If negative, reduce the rule which
|
positive, shift that token. If negative, reduce the rule which
|
number is the opposite. If zero, do what YYDEFACT says. */
|
number is the opposite. If zero, do what YYDEFACT says. */
|
const signed char Parser::yytable_ninf_ = -1;
|
const signed char Parser::yytable_ninf_ = -1;
|
const unsigned char
|
const unsigned char
|
Parser::yytable_[] =
|
Parser::yytable_[] =
|
{
|
{
|
47, 57, 28, 142, 105, 37, 59, 46, 165, 16,
|
48, 58, 29, 145, 107, 70, 71, 38, 47, 53,
|
1, 2, 3, 34, 4, 169, 33, 38, 56, 35,
|
169, 1, 2, 3, 16, 4, 60, 173, 57, 39,
|
39, 5, 117, 118, 119, 120, 121, 122, 89, 68,
|
34, 35, 5, 120, 121, 122, 123, 124, 125, 91,
|
69, 39, 98, 149, 94, 72, 96, 64, 64, 64,
|
40, 54, 72, 40, 138, 96, 74, 98, 66, 180,
|
135, 6, 7, 66, 66, 66, 8, 36, 91, 147,
|
36, 37, 6, 7, 68, 42, 60, 8, 46, 93,
|
148, 9, 59, 10, 11, 43, 70, 12, 1, 2,
|
150, 151, 9, 100, 10, 11, 188, 189, 12, 66,
|
3, 106, 4, 67, 67, 67, 39, 41, 44, 5,
|
40, 193, 108, 44, 69, 68, 1, 2, 3, 152,
|
48, 45, 55, 49, 183, 61, 58, 64, 140, 50,
|
4, 56, 127, 66, 128, 66, 203, 5, 45, 68,
|
64, 65, 143, 66, 136, 72, 66, 62, 52, 6,
|
143, 68, 187, 59, 146, 69, 112, 74, 113, 114,
|
7, 63, 172, 173, 8, 51, 1, 2, 3, 9,
|
62, 131, 63, 64, 176, 177, 65, 6, 7, 69,
|
4, 10, 11, 67, 200, 12, 67, 5, 176, 64,
|
73, 69, 8, 85, 87, 66, 204, 9, 18, 10,
|
53, 109, 191, 110, 111, 66, 83, 154, 155, 156,
|
11, 68, 86, 12, 88, 89, 19, 20, 21, 22,
|
157, 158, 159, 64, 71, 184, 185, 6, 7, 66,
|
158, 159, 160, 161, 162, 163, 23, 24, 25, 26,
|
189, 84, 8, 85, 124, 67, 125, 9, 86, 10,
|
27, 69, 94, 66, 66, 95, 97, 67, 139, 68,
|
11, 128, 87, 12, 92, 199, 1, 2, 3, 67,
|
68, 99, 101, 28, 126, 130, 49, 109, 110, 50,
|
4, 95, 93, 180, 181, 97, 99, 5, 19, 20,
|
1, 2, 3, 111, 4, 51, 118, 184, 185, 69,
|
21, 107, 192, 47, 1, 2, 3, 108, 4, 88,
|
69, 5, 19, 20, 21, 129, 195, 48, 1, 2,
|
193, 47, 47, 115, 123, 5, 47, 6, 7, 126,
|
3, 52, 4, 90, 197, 48, 48, 134, 132, 5,
|
194, 127, 8, 80, 81, 82, 47, 9, 129, 10,
|
48, 6, 7, 135, 196, 136, 8, 82, 83, 84,
|
11, 131, 132, 12, 133, 6, 7, 19, 20, 21,
|
48, 9, 137, 10, 11, 140, 141, 12, 142, 6,
|
8, 134, 1, 2, 3, 9, 4, 10, 11, 137,
|
7, 19, 20, 21, 8, 144, 1, 2, 3, 9,
|
138, 12, 139, 5, 74, 75, 76, 77, 201, 1,
|
4, 10, 11, 153, 154, 12, 155, 5, 76, 77,
|
2, 3, 141, 4, 100, 101, 102, 103, 150, 151,
|
78, 79, 198, 1, 2, 3, 156, 4, 102, 103,
|
5, 152, 153, 6, 7, 144, 145, 146, 8, 112,
|
104, 105, 157, 165, 5, 164, 166, 6, 7, 205,
|
113, 114, 160, 9, 164, 10, 11, 161, 166, 12,
|
167, 168, 8, 147, 148, 149, 170, 9, 172, 10,
|
6, 7, 162, 163, 168, 8, 177, 178, 179, 18,
|
11, 174, 175, 12, 6, 7, 115, 116, 117, 8,
|
9, 188, 10, 11, 18, 182, 12, 19, 20, 21,
|
181, 1, 2, 3, 9, 4, 10, 11, 18, 182,
|
22, 170, 19, 20, 21, 171, 186, 23, 24, 25,
|
12, 183, 5, 186, 190, 191, 19, 20, 21, 192,
|
26, 27, 23, 24, 25, 26, 27, 18, 190, 196,
|
194, 200, 202, 41, 201, 178, 23, 24, 25, 26,
|
40, 187, 197, 198, 174, 19, 20, 21, 130, 0,
|
27, 18, 6, 7, 133, 0, 0, 8, 0, 19,
|
0, 0, 0, 0, 0, 23, 90, 25, 26, 27
|
20, 21, 9, 28, 10, 11, 0, 0, 12, 23,
|
|
92, 25, 26, 27, 18, 0, 0, 0, 0, 0,
|
|
0, 0, 19, 20, 21, 0, 28, 0, 0, 0,
|
|
0, 0, 23, 24, 25, 26, 27
|
};
|
};
|
|
|
/* YYCHECK. */
|
/* YYCHECK. */
|
const short int
|
const short int
|
Parser::yycheck_[] =
|
Parser::yycheck_[] =
|
{
|
{
|
13, 18, 2, 97, 59, 16, 28, 0, 128, 35,
|
13, 18, 2, 99, 60, 21, 22, 16, 0, 20,
|
3, 4, 5, 27, 7, 135, 35, 28, 18, 16,
|
131, 3, 4, 5, 35, 7, 28, 138, 18, 28,
|
42, 14, 8, 9, 10, 11, 12, 13, 45, 21,
|
35, 27, 14, 8, 9, 10, 11, 12, 13, 46,
|
22, 42, 17, 17, 51, 35, 53, 23, 23, 23,
|
42, 42, 48, 42, 16, 52, 36, 54, 23, 164,
|
16, 34, 35, 29, 29, 29, 39, 28, 48, 104,
|
16, 28, 34, 35, 29, 40, 28, 39, 42, 49,
|
105, 44, 28, 46, 47, 35, 48, 50, 3, 4,
|
106, 107, 44, 17, 46, 47, 181, 182, 50, 23,
|
5, 61, 7, 49, 49, 49, 42, 40, 35, 14,
|
42, 186, 62, 35, 49, 29, 3, 4, 5, 17,
|
20, 42, 27, 23, 19, 16, 28, 23, 95, 29,
|
7, 27, 31, 23, 33, 23, 201, 14, 35, 29,
|
23, 27, 99, 29, 27, 85, 29, 16, 20, 34,
|
97, 29, 19, 28, 101, 49, 66, 87, 68, 69,
|
35, 16, 147, 148, 39, 45, 3, 4, 5, 44,
|
16, 41, 16, 16, 150, 151, 42, 34, 35, 49,
|
7, 46, 47, 49, 198, 50, 49, 14, 160, 23,
|
16, 49, 39, 35, 16, 23, 202, 44, 16, 46,
|
42, 64, 19, 66, 67, 29, 35, 117, 118, 119,
|
47, 29, 27, 50, 16, 16, 24, 25, 26, 27,
|
120, 121, 122, 23, 16, 177, 178, 34, 35, 29,
|
120, 121, 122, 123, 124, 125, 34, 35, 36, 37,
|
182, 27, 39, 16, 31, 49, 33, 44, 16, 46,
|
38, 49, 23, 23, 23, 29, 16, 27, 27, 29,
|
47, 41, 16, 50, 23, 197, 3, 4, 5, 49,
|
29, 41, 41, 51, 17, 17, 20, 34, 34, 23,
|
7, 16, 29, 170, 171, 41, 41, 14, 24, 25,
|
3, 4, 5, 35, 7, 29, 35, 174, 175, 49,
|
26, 34, 19, 176, 3, 4, 5, 34, 7, 35,
|
49, 14, 24, 25, 26, 31, 19, 180, 3, 4,
|
187, 184, 185, 35, 17, 14, 189, 34, 35, 31,
|
5, 45, 7, 35, 191, 188, 189, 17, 43, 14,
|
19, 17, 39, 30, 31, 32, 199, 44, 43, 46,
|
193, 34, 35, 17, 19, 43, 39, 30, 31, 32,
|
47, 17, 17, 50, 43, 34, 35, 24, 25, 26,
|
203, 44, 43, 46, 47, 27, 27, 50, 27, 34,
|
39, 43, 3, 4, 5, 44, 7, 46, 47, 27,
|
35, 24, 25, 26, 39, 43, 3, 4, 5, 44,
|
27, 50, 27, 14, 30, 31, 32, 33, 19, 3,
|
7, 46, 47, 17, 17, 50, 43, 14, 30, 31,
|
4, 5, 43, 7, 29, 30, 31, 32, 17, 17,
|
32, 33, 19, 3, 4, 5, 41, 7, 29, 30,
|
14, 41, 17, 34, 35, 30, 31, 32, 39, 68,
|
31, 32, 17, 33, 14, 18, 32, 34, 35, 19,
|
69, 70, 18, 44, 27, 46, 47, 33, 17, 50,
|
32, 27, 39, 30, 31, 32, 17, 44, 27, 46,
|
34, 35, 32, 32, 27, 39, 18, 18, 17, 16,
|
47, 41, 41, 50, 34, 35, 70, 71, 72, 39,
|
44, 17, 46, 47, 16, 18, 50, 24, 25, 26,
|
18, 3, 4, 5, 44, 7, 46, 47, 16, 18,
|
27, 41, 24, 25, 26, 41, 27, 34, 35, 36,
|
50, 17, 14, 18, 27, 41, 24, 25, 26, 17,
|
37, 38, 34, 35, 36, 37, 38, 16, 15, 17,
|
15, 17, 41, 7, 18, 156, 34, 35, 36, 37,
|
7, 41, 18, 41, 152, 24, 25, 26, 85, -1,
|
38, 16, 34, 35, 87, -1, -1, 39, -1, 24,
|
-1, -1, -1, -1, -1, 34, 35, 36, 37, 38
|
25, 26, 44, 51, 46, 47, -1, -1, 50, 34,
|
|
35, 36, 37, 38, 16, -1, -1, -1, -1, -1,
|
|
-1, -1, 24, 25, 26, -1, 51, -1, -1, -1,
|
|
-1, -1, 34, 35, 36, 37, 38
|
};
|
};
|
|
|
/* STOS_[STATE-NUM] -- The (internal number of the) accessing
|
/* STOS_[STATE-NUM] -- The (internal number of the) accessing
|
symbol of state STATE-NUM. */
|
symbol of state STATE-NUM. */
|
const unsigned char
|
const unsigned char
|
Parser::yystos_[] =
|
Parser::yystos_[] =
|
{
|
{
|
0, 3, 4, 5, 7, 14, 34, 35, 39, 44,
|
0, 3, 4, 5, 7, 14, 34, 35, 39, 44,
|
46, 47, 50, 52, 53, 66, 35, 69, 16, 24,
|
46, 47, 50, 53, 54, 67, 35, 70, 16, 24,
|
25, 26, 27, 34, 35, 36, 37, 38, 60, 61,
|
25, 26, 27, 34, 35, 36, 37, 38, 51, 61,
|
62, 63, 68, 35, 27, 16, 28, 16, 28, 42,
|
62, 63, 64, 69, 35, 27, 16, 28, 16, 28,
|
65, 40, 54, 35, 35, 42, 0, 53, 20, 23,
|
42, 66, 40, 55, 35, 35, 42, 0, 54, 20,
|
29, 45, 20, 42, 70, 27, 60, 68, 28, 28,
|
23, 29, 45, 20, 42, 71, 27, 61, 69, 28,
|
65, 16, 16, 16, 23, 27, 29, 49, 21, 22,
|
28, 66, 16, 16, 16, 42, 23, 27, 29, 49,
|
48, 16, 60, 67, 30, 31, 32, 33, 58, 60,
|
21, 22, 48, 16, 61, 68, 30, 31, 32, 33,
|
30, 31, 32, 35, 27, 16, 16, 16, 35, 68,
|
59, 61, 30, 31, 32, 35, 27, 16, 16, 16,
|
35, 60, 23, 29, 68, 16, 68, 41, 17, 41,
|
35, 69, 35, 61, 23, 29, 69, 16, 69, 41,
|
29, 30, 31, 32, 64, 64, 60, 34, 34, 61,
|
17, 41, 29, 30, 31, 32, 65, 65, 61, 34,
|
61, 61, 62, 62, 62, 35, 59, 8, 9, 10,
|
34, 35, 62, 62, 62, 63, 63, 63, 35, 60,
|
11, 12, 13, 17, 31, 33, 31, 17, 41, 43,
|
8, 9, 10, 11, 12, 13, 17, 31, 33, 31,
|
67, 17, 17, 43, 43, 16, 27, 27, 27, 27,
|
17, 41, 43, 68, 17, 17, 43, 43, 16, 27,
|
68, 43, 69, 68, 30, 31, 32, 64, 64, 17,
|
27, 27, 27, 69, 43, 70, 69, 30, 31, 32,
|
17, 17, 41, 17, 60, 60, 60, 60, 60, 60,
|
65, 65, 17, 17, 17, 43, 41, 17, 61, 61,
|
18, 33, 32, 32, 27, 58, 17, 57, 27, 58,
|
61, 61, 61, 61, 18, 33, 32, 32, 27, 59,
|
41, 41, 64, 64, 59, 56, 52, 18, 18, 17,
|
17, 58, 27, 59, 41, 41, 65, 65, 60, 57,
|
68, 68, 18, 19, 52, 52, 27, 41, 17, 52,
|
53, 18, 18, 17, 69, 69, 18, 19, 53, 53,
|
15, 19, 19, 68, 19, 55, 17, 18, 41, 52,
|
27, 41, 17, 53, 15, 19, 19, 69, 19, 56,
|
69, 19
|
17, 18, 41, 53, 70, 19
|
};
|
};
|
|
|
#if YYDEBUG
|
#if YYDEBUG
|
/* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding
|
/* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding
|
to YYLEX-NUM. */
|
to YYLEX-NUM. */
|
Line 3359... |
Line 3399... |
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
|
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
|
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
|
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
|
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
|
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
|
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
|
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
|
295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
|
295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
|
305
|
305, 306
|
};
|
};
|
#endif
|
#endif
|
|
|
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
|
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
|
const unsigned char
|
const unsigned char
|
Parser::yyr1_[] =
|
Parser::yyr1_[] =
|
{
|
{
|
0, 51, 52, 52, 52, 53, 53, 53, 53, 53,
|
0, 52, 53, 53, 53, 54, 54, 54, 54, 54,
|
53, 53, 53, 53, 54, 53, 55, 53, 53, 56,
|
54, 54, 54, 54, 55, 54, 56, 54, 54, 57,
|
53, 57, 53, 53, 53, 53, 58, 58, 58, 59,
|
54, 58, 54, 54, 54, 54, 59, 59, 59, 60,
|
59, 59, 60, 60, 60, 60, 61, 61, 61, 61,
|
60, 60, 61, 61, 61, 61, 61, 62, 62, 62,
|
62, 62, 62, 63, 63, 63, 63, 63, 63, 63,
|
62, 63, 63, 63, 64, 64, 64, 64, 64, 64,
|
63, 64, 64, 64, 64, 64, 64, 65, 65, 66,
|
64, 64, 65, 65, 65, 65, 65, 65, 66, 66,
|
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
|
67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
|
66, 66, 67, 67, 67, 67, 67, 67, 68, 68,
|
67, 67, 67, 68, 68, 68, 68, 68, 68, 69,
|
68, 69, 69, 69, 69, 70, 70
|
69, 69, 70, 70, 70, 70, 71, 71
|
};
|
};
|
|
|
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
|
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
|
const unsigned char
|
const unsigned char
|
Parser::yyr2_[] =
|
Parser::yyr2_[] =
|
{
|
{
|
0, 2, 0, 2, 1, 3, 3, 2, 3, 2,
|
0, 2, 0, 2, 1, 3, 3, 2, 3, 2,
|
4, 4, 4, 4, 0, 8, 0, 12, 7, 0,
|
4, 4, 4, 4, 0, 8, 0, 12, 7, 0,
|
9, 0, 8, 5, 7, 5, 0, 3, 1, 0,
|
9, 0, 8, 5, 7, 5, 0, 3, 1, 0,
|
3, 1, 3, 3, 3, 1, 3, 3, 3, 1,
|
3, 1, 3, 3, 3, 4, 1, 3, 3, 3,
|
1, 4, 3, 1, 7, 2, 5, 1, 4, 4,
|
1, 1, 4, 3, 1, 7, 2, 5, 1, 4,
|
5, 1, 2, 1, 2, 1, 2, 0, 3, 4,
|
4, 5, 1, 2, 1, 2, 1, 2, 0, 3,
|
4, 2, 3, 3, 3, 1, 3, 3, 3, 5,
|
4, 4, 2, 3, 3, 3, 1, 3, 3, 3,
|
5, 5, 3, 3, 3, 3, 3, 3, 1, 1,
|
5, 5, 5, 3, 3, 3, 3, 3, 3, 1,
|
1, 4, 11, 9, 2, 0, 3
|
1, 1, 4, 11, 9, 2, 0, 3
|
};
|
};
|
|
|
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
|
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
|
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
|
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
|
First, the terminals, then, starting at \a yyntokens_, nonterminals. */
|
First, the terminals, then, starting at \a yyntokens_, nonterminals. */
|
Line 3407... |
Line 3447... |
"OPEN_ROUND_BRACE", "CLOSE_ROUND_BRACE", "OPEN_BRACE", "CLOSE_BRACE",
|
"OPEN_ROUND_BRACE", "CLOSE_ROUND_BRACE", "OPEN_BRACE", "CLOSE_BRACE",
|
"ASSIGN", "DIV", "MUL", "ADD", "DECCONST", "HEXCONST", "BINCONST", "EOS",
|
"ASSIGN", "DIV", "MUL", "ADD", "DECCONST", "HEXCONST", "BINCONST", "EOS",
|
"DOT", "MINUS", "TK_X", "TK_Y", "TK_Z", "TK_N", "REG", "IDENTIFIER",
|
"DOT", "MINUS", "TK_X", "TK_Y", "TK_Z", "TK_N", "REG", "IDENTIFIER",
|
"SQRT", "SCALE", "UNSCALE", "USING", "FIXED_POINT", "COMMA",
|
"SQRT", "SCALE", "UNSCALE", "USING", "FIXED_POINT", "COMMA",
|
"OPEN_SQUARE_BRACE", "CLOSE_SQUARE_BRACE", "WHILE", "ADD_EQ", "THREAD",
|
"OPEN_SQUARE_BRACE", "CLOSE_SQUARE_BRACE", "WHILE", "ADD_EQ", "THREAD",
|
"START", "BITWISE_AND", "BITWISE_OR", "OUT", "$accept", "statement_list",
|
"START", "BITWISE_AND", "BITWISE_OR", "OUT", "IN", "$accept",
|
"statement", "$@1", "$@2", "$@3", "$@4", "function_input_list",
|
"statement_list", "statement", "$@1", "$@2", "$@3", "$@4",
|
"function_argument_list", "expression", "term", "factor", "source",
|
"function_input_list", "function_argument_list", "expression", "term",
|
"coordinate", "array_index", "left_hand_side", "boolean_expression",
|
"factor", "source", "coordinate", "array_index", "left_hand_side",
|
"constant", "auto_var_list", "array_size", 0
|
"boolean_expression", "constant", "auto_var_list", "array_size", 0
|
};
|
};
|
#endif
|
#endif
|
|
|
#if YYDEBUG
|
#if YYDEBUG
|
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
const Parser::rhs_number_type
|
const Parser::rhs_number_type
|
Parser::yyrhs_[] =
|
Parser::yyrhs_[] =
|
{
|
{
|
52, 0, -1, -1, 52, 53, -1, 53, -1, 3,
|
53, 0, -1, -1, 53, 54, -1, 54, -1, 3,
|
69, 27, -1, 39, 40, 27, -1, 7, 27, -1,
|
70, 27, -1, 39, 40, 27, -1, 7, 27, -1,
|
4, 60, 27, -1, 4, 27, -1, 66, 45, 68,
|
4, 61, 27, -1, 4, 27, -1, 67, 45, 69,
|
27, -1, 66, 29, 29, 27, -1, 66, 23, 23,
|
27, -1, 67, 29, 29, 27, -1, 67, 23, 23,
|
27, -1, 66, 20, 60, 27, -1, -1, 44, 54,
|
27, -1, 67, 20, 61, 27, -1, -1, 44, 55,
|
16, 67, 17, 18, 52, 19, -1, -1, 14, 16,
|
16, 68, 17, 18, 53, 19, -1, -1, 14, 16,
|
67, 17, 18, 52, 19, 15, 55, 18, 52, 19,
|
68, 17, 18, 53, 19, 15, 56, 18, 53, 19,
|
-1, 14, 16, 67, 17, 18, 52, 19, -1, -1,
|
-1, 14, 16, 68, 17, 18, 53, 19, -1, -1,
|
5, 35, 16, 59, 17, 56, 18, 52, 19, -1,
|
5, 35, 16, 60, 17, 57, 18, 53, 19, -1,
|
-1, 46, 35, 16, 17, 57, 18, 52, 19, -1,
|
-1, 46, 35, 16, 17, 58, 18, 53, 19, -1,
|
47, 35, 16, 17, 27, -1, 66, 20, 35, 16,
|
47, 35, 16, 17, 27, -1, 67, 20, 35, 16,
|
58, 17, 27, -1, 35, 16, 58, 17, 27, -1,
|
59, 17, 27, -1, 35, 16, 59, 17, 27, -1,
|
-1, 60, 41, 58, -1, 60, -1, -1, 35, 41,
|
-1, 61, 41, 59, -1, 61, -1, -1, 35, 41,
|
59, -1, 35, -1, 60, 23, 61, -1, 60, 29,
|
60, -1, 35, -1, 61, 23, 62, -1, 61, 29,
|
61, -1, 60, 49, 61, -1, 61, -1, 61, 22,
|
62, -1, 61, 49, 62, -1, 51, 42, 35, 43,
|
62, -1, 61, 21, 62, -1, 61, 48, 62, -1,
|
-1, 62, -1, 62, 22, 63, -1, 62, 21, 63,
|
62, -1, 63, -1, 36, 16, 60, 17, -1, 16,
|
-1, 62, 48, 63, -1, 63, -1, 64, -1, 36,
|
60, 17, -1, 68, -1, 16, 68, 41, 68, 41,
|
16, 61, 17, -1, 16, 61, 17, -1, 69, -1,
|
68, 17, -1, 35, 65, -1, 35, 28, 64, 64,
|
16, 69, 41, 69, 41, 69, 17, -1, 35, 66,
|
64, -1, 34, -1, 37, 16, 34, 17, -1, 38,
|
-1, 35, 28, 65, 65, 65, -1, 34, -1, 37,
|
16, 34, 17, -1, 34, 28, 64, 64, 64, -1,
|
16, 34, 17, -1, 38, 16, 34, 17, -1, 34,
|
30, -1, 29, 30, -1, 31, -1, 29, 31, -1,
|
28, 65, 65, 65, -1, 30, -1, 29, 30, -1,
|
32, -1, 29, 32, -1, -1, 42, 35, 43, -1,
|
31, -1, 29, 31, -1, 32, -1, 29, 32, -1,
|
50, 42, 68, 43, -1, 50, 42, 35, 43, -1,
|
-1, 42, 35, 43, -1, 50, 42, 69, 43, -1,
|
35, 65, -1, 35, 28, 30, -1, 35, 28, 31,
|
50, 42, 35, 43, -1, 35, 66, -1, 35, 28,
|
-1, 35, 28, 32, -1, 34, -1, 34, 28, 30,
|
30, -1, 35, 28, 31, -1, 35, 28, 32, -1,
|
-1, 34, 28, 31, -1, 34, 28, 32, -1, 34,
|
34, -1, 34, 28, 30, -1, 34, 28, 31, -1,
|
28, 30, 31, 33, -1, 34, 28, 30, 33, 32,
|
34, 28, 32, -1, 34, 28, 30, 31, 33, -1,
|
-1, 34, 28, 33, 31, 32, -1, 60, 9, 60,
|
34, 28, 30, 33, 32, -1, 34, 28, 33, 31,
|
-1, 60, 8, 60, -1, 60, 10, 60, -1, 60,
|
32, -1, 61, 9, 61, -1, 61, 8, 61, -1,
|
11, 60, -1, 60, 12, 60, -1, 60, 13, 60,
|
61, 10, 61, -1, 61, 11, 61, -1, 61, 12,
|
-1, 24, -1, 25, -1, 26, -1, 35, 70, 41,
|
61, -1, 61, 13, 61, -1, 24, -1, 25, -1,
|
69, -1, 35, 20, 16, 68, 41, 68, 41, 68,
|
26, -1, 35, 71, 41, 70, -1, 35, 20, 16,
|
17, 41, 69, -1, 35, 20, 16, 68, 41, 68,
|
69, 41, 69, 41, 69, 17, 41, 70, -1, 35,
|
41, 68, 17, -1, 35, 70, -1, -1, 42, 68,
|
20, 16, 69, 41, 69, 41, 69, 17, -1, 35,
|
43, -1
|
71, -1, -1, 42, 69, 43, -1
|
};
|
};
|
|
|
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
|
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
|
YYRHS. */
|
YYRHS. */
|
const unsigned short int
|
const unsigned short int
|
Parser::yyprhs_[] =
|
Parser::yyprhs_[] =
|
{
|
{
|
0, 0, 3, 4, 7, 9, 13, 17, 20, 24,
|
0, 0, 3, 4, 7, 9, 13, 17, 20, 24,
|
27, 32, 37, 42, 47, 48, 57, 58, 71, 79,
|
27, 32, 37, 42, 47, 48, 57, 58, 71, 79,
|
80, 90, 91, 100, 106, 114, 120, 121, 125, 127,
|
80, 90, 91, 100, 106, 114, 120, 121, 125, 127,
|
128, 132, 134, 138, 142, 146, 148, 152, 156, 160,
|
128, 132, 134, 138, 142, 146, 151, 153, 157, 161,
|
162, 164, 169, 173, 175, 183, 186, 192, 194, 199,
|
165, 167, 169, 174, 178, 180, 188, 191, 197, 199,
|
204, 210, 212, 215, 217, 220, 222, 225, 226, 230,
|
204, 209, 215, 217, 220, 222, 225, 227, 230, 231,
|
235, 240, 243, 247, 251, 255, 257, 261, 265, 269,
|
235, 240, 245, 248, 252, 256, 260, 262, 266, 270,
|
275, 281, 287, 291, 295, 299, 303, 307, 311, 313,
|
274, 280, 286, 292, 296, 300, 304, 308, 312, 316,
|
315, 317, 322, 334, 344, 347, 348
|
318, 320, 322, 327, 339, 349, 352, 353
|
};
|
};
|
|
|
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
|
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
|
const unsigned short int
|
const unsigned short int
|
Parser::yyrline_[] =
|
Parser::yyrline_[] =
|
{
|
{
|
0, 830, 830, 832, 834, 839, 841, 846, 863, 930,
|
0, 839, 839, 841, 843, 848, 850, 855, 872, 939,
|
958, 976, 1005, 1030, 1343, 1343, 1363, 1359, 1391, 1402,
|
967, 985, 1014, 1039, 1358, 1358, 1390, 1386, 1425, 1446,
|
1401, 1431, 1430, 1453, 1494, 1518, 1574, 1577, 1582, 1588,
|
1445, 1485, 1484, 1515, 1564, 1595, 1655, 1658, 1663, 1669,
|
1591, 1596, 1617, 1638, 1660, 1681, 1689, 1714, 1739, 1760,
|
1672, 1677, 1708, 1729, 1751, 1781, 1790, 1798, 1823, 1848,
|
1768, 1773, 1792, 1802, 1832, 1897, 1915, 1926, 1935, 1943,
|
1869, 1877, 1887, 1906, 1916, 1946, 2011, 2029, 2040, 2049,
|
1951, 1964, 1969, 1974, 1979, 1984, 1989, 1998, 2002, 2015,
|
2057, 2065, 2078, 2083, 2088, 2093, 2098, 2103, 2112, 2116,
|
2021, 2030, 2041, 2050, 2059, 2068, 2075, 2082, 2089, 2097,
|
2129, 2135, 2148, 2159, 2168, 2177, 2186, 2193, 2200, 2207,
|
2104, 2111, 2122, 2128, 2134, 2141, 2147, 2153, 2162, 2175,
|
2215, 2222, 2229, 2240, 2246, 2252, 2259, 2265, 2271, 2280,
|
2186, 2200, 2216, 2280, 2348, 2368, 2372
|
2293, 2304, 2318, 2334, 2398, 2466, 2486, 2490
|
};
|
};
|
|
|
// Print the state stack on the debug stream.
|
// Print the state stack on the debug stream.
|
void
|
void
|
Parser::yystack_print_ ()
|
Parser::yystack_print_ ()
|
Line 3556... |
Line 3596... |
2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
|
2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
|
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
|
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
|
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
|
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
|
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
|
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
|
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
|
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
|
45, 46, 47, 48, 49, 50
|
45, 46, 47, 48, 49, 50, 51
|
};
|
};
|
if ((unsigned int) t <= yyuser_token_number_max_)
|
if ((unsigned int) t <= yyuser_token_number_max_)
|
return translate_table[t];
|
return translate_table[t];
|
else
|
else
|
return yyundef_token_;
|
return yyundef_token_;
|
}
|
}
|
|
|
const int Parser::yyeof_ = 0;
|
const int Parser::yyeof_ = 0;
|
const int Parser::yylast_ = 309;
|
const int Parser::yylast_ = 336;
|
const int Parser::yynnts_ = 20;
|
const int Parser::yynnts_ = 20;
|
const int Parser::yyempty_ = -2;
|
const int Parser::yyempty_ = -2;
|
const int Parser::yyfinal_ = 46;
|
const int Parser::yyfinal_ = 47;
|
const int Parser::yyterror_ = 1;
|
const int Parser::yyterror_ = 1;
|
const int Parser::yyerrcode_ = 256;
|
const int Parser::yyerrcode_ = 256;
|
const int Parser::yyntokens_ = 51;
|
const int Parser::yyntokens_ = 52;
|
|
|
const unsigned int Parser::yyuser_token_number_max_ = 305;
|
const unsigned int Parser::yyuser_token_number_max_ = 306;
|
const Parser::token_number_type Parser::yyundef_token_ = 2;
|
const Parser::token_number_type Parser::yyundef_token_ = 2;
|
|
|
|
|
/* Line 1054 of lalr1.cc */
|
/* Line 1054 of lalr1.cc */
|
#line 28 "parser.y"
|
#line 28 "parser.y"
|
} // Theia
|
} // Theia
|
|
|
/* Line 1054 of lalr1.cc */
|
/* Line 1054 of lalr1.cc */
|
#line 3588 "parser.tab.c"
|
#line 3628 "parser.tab.c"
|
|
|
|
|
/* Line 1056 of lalr1.cc */
|
/* Line 1056 of lalr1.cc */
|
#line 2378 "parser.y"
|
#line 2496 "parser.y"
|
|
|
|
|
|
|
|
|
// Error function throws an exception (std::string) with the location and error message
|
// Error function throws an exception (std::string) with the location and error message
|