OpenCores
URL https://opencores.org/ocsvn/theia_gpu/theia_gpu/trunk

Subversion Repositories theia_gpu

[/] [theia_gpu/] [branches/] [beta_2.0/] [compiler/] [src/] [vp_compiler/] [parser.tab.c] - Diff between revs 216 and 230

Show entire file | Details | Blame | View Log

Rev 216 Rev 230
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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.