/******************************************************************
 * File: vs20_parser.cpp
 *
 * This file was automatically generated by CppCC Version 0.0.5
 * DO NOT EDIT MANUALLY
 ******************************************************************/



#include "vs20_parser.hpp"

void vs20::vs20_parser::main ()
     throw (ScanException, ParseException)
{
  while (__la_0_(1000000000)) {
    instruction();
    consumeToken(vs20_token::EOL);
    while ((scanner.la()->id == vs20_token::EOL)) {
      consumeToken(vs20_token::EOL);
    }
    {newInstruction();}

  }
  try {
    if ((scanner.la()->id == vs20_token::VS_2_0) || (scanner.la()->id == vs20_token::DCL_POSITION) || (scanner.la()->id == vs20_token::DCL_BLENDWEIGHT) || (scanner.la()->id == vs20_token::DCL_BLENDINDICES) || (scanner.la()->id == vs20_token::DCL_NORMAL) || (scanner.la()->id == vs20_token::DCL_PSIZE) || (scanner.la()->id == vs20_token::DCL_TEXCOORD) || (scanner.la()->id == vs20_token::DCL_TANGENT) || (scanner.la()->id == vs20_token::DCL_BINORMAL) || (scanner.la()->id == vs20_token::DCL_TESSFACTOR) || (scanner.la()->id == vs20_token::DCL_POSITIONT) || (scanner.la()->id == vs20_token::DCL_COLOR) || (scanner.la()->id == vs20_token::DCL_FOG) || (scanner.la()->id == vs20_token::DCL_DEPTH) || (scanner.la()->id == vs20_token::DCL_SAMPLE) || (scanner.la()->id == vs20_token::DEF) || (scanner.la()->id == vs20_token::DEFB) || (scanner.la()->id == vs20_token::DEFI) || (scanner.la()->id == vs20_token::ABS) || (scanner.la()->id == vs20_token::ADD) || (scanner.la()->id == vs20_token::CALL) || (scanner.la()->id == vs20_token::CRS) || (scanner.la()->id == vs20_token::DP3) || (scanner.la()->id == vs20_token::DP4) || (scanner.la()->id == vs20_token::DST) || (scanner.la()->id == vs20_token::ELSE) || (scanner.la()->id == vs20_token::ENDIF) || (scanner.la()->id == vs20_token::ENDLOOP) || (scanner.la()->id == vs20_token::ENDREP) || (scanner.la()->id == vs20_token::EXP) || (scanner.la()->id == vs20_token::FRC) || (scanner.la()->id == vs20_token::IF) || (scanner.la()->id == vs20_token::LIT) || (scanner.la()->id == vs20_token::LOG) || (scanner.la()->id == vs20_token::LOGP) || (scanner.la()->id == vs20_token::LOOP) || (scanner.la()->id == vs20_token::LRP) || (scanner.la()->id == vs20_token::M3X2) || (scanner.la()->id == vs20_token::M3X3) || (scanner.la()->id == vs20_token::M3X4) || (scanner.la()->id == vs20_token::M4X3) || (scanner.la()->id == vs20_token::M4X4) || (scanner.la()->id == vs20_token::MAD) || (scanner.la()->id == vs20_token::MAX) || (scanner.la()->id == vs20_token::MIN) || (scanner.la()->id == vs20_token::MOV) || (scanner.la()->id == vs20_token::MOVA) || (scanner.la()->id == vs20_token::MUL) || (scanner.la()->id == vs20_token::NOP) || (scanner.la()->id == vs20_token::NRM) || (scanner.la()->id == vs20_token::POW) || (scanner.la()->id == vs20_token::RCP) || (scanner.la()->id == vs20_token::REP) || (scanner.la()->id == vs20_token::RET) || (scanner.la()->id == vs20_token::RSQ) || (scanner.la()->id == vs20_token::SGE) || (scanner.la()->id == vs20_token::SGN) || (scanner.la()->id == vs20_token::SINCOS) || (scanner.la()->id == vs20_token::SLT) || (scanner.la()->id == vs20_token::L)) {
      instruction();
    } else { 
       /* lambda */
    }
  } catch (ScanException&)
 {throw swShader::Error("Syntax error");;

  } catch (ParseException&)
 {throw swShader::Error("Parsing error");;

  } catch (swShader::Error &error)
 {throw error;;

  } catch (...)
 {throw swShader::INTERNAL_ERROR;;

  }
}


void vs20::vs20_parser::instruction ()
     throw (ScanException, ParseException)
{
			m = swShader::Instruction::INVALID;
			usage_index = 0;
			x = swShader::Instruction::_NONE;
			d = swShader::voidOperand;
			s0 = swShader::voidOperand;
			s1 = swShader::voidOperand;
			s2 = swShader::voidOperand;
			s3 = swShader::voidOperand;
		;

  try {
    if ((scanner.la()->id == vs20_token::ABS)) {
      absInstruction();
    } else { 
      if ((scanner.la()->id == vs20_token::ADD)) {
        addInstruction();
      } else { 
        if (__la_1_(1000000000)) {
          callInstruction();
        } else { 
          if ((scanner.la()->id == vs20_token::CALL)) {
            callnzInstruction();
          } else { 
            if ((scanner.la()->id == vs20_token::CRS)) {
              crsInstruction();
            } else { 
              if ((scanner.la()->id == vs20_token::DCL_POSITION)) {
                dcl_positionInstruction();
              } else { 
                if ((scanner.la()->id == vs20_token::DCL_BLENDWEIGHT)) {
                  dcl_blendweightInstruction();
                } else { 
                  if ((scanner.la()->id == vs20_token::DCL_BLENDINDICES)) {
                    dcl_blendindicesInstruction();
                  } else { 
                    if ((scanner.la()->id == vs20_token::DCL_NORMAL)) {
                      dcl_normalInstruction();
                    } else { 
                      if ((scanner.la()->id == vs20_token::DCL_PSIZE)) {
                        dcl_psizeInstruction();
                      } else { 
                        if ((scanner.la()->id == vs20_token::DCL_TEXCOORD)) {
                          dcl_texcoordInstruction();
                        } else { 
                          if ((scanner.la()->id == vs20_token::DCL_TANGENT)) {
                            dcl_tangentInstruction();
                          } else { 
                            if ((scanner.la()->id == vs20_token::DCL_BINORMAL)) {
                              dcl_binormalInstruction();
                            } else { 
                              if ((scanner.la()->id == vs20_token::DCL_TESSFACTOR)) {
                                dcl_tessfactorInstruction();
                              } else { 
                                if ((scanner.la()->id == vs20_token::DCL_POSITIONT)) {
                                  dcl_positiontInstruction();
                                } else { 
                                  if ((scanner.la()->id == vs20_token::DCL_COLOR)) {
                                    dcl_colorInstruction();
                                  } else { 
                                    if ((scanner.la()->id == vs20_token::DCL_FOG)) {
                                      dcl_fogInstruction();
                                    } else { 
                                      if ((scanner.la()->id == vs20_token::DCL_DEPTH)) {
                                        dcl_depthInstruction();
                                      } else { 
                                        if ((scanner.la()->id == vs20_token::DCL_SAMPLE)) {
                                          dcl_sampleInstruction();
                                        } else { 
                                          if ((scanner.la()->id == vs20_token::DEF)) {
                                            defInstruction();
                                          } else { 
                                            if ((scanner.la()->id == vs20_token::DEFB)) {
                                              defbInstruction();
                                            } else { 
                                              if ((scanner.la()->id == vs20_token::DEFI)) {
                                                defiInstruction();
                                              } else { 
                                                if ((scanner.la()->id == vs20_token::DP3)) {
                                                  dp3Instruction();
                                                } else { 
                                                  if ((scanner.la()->id == vs20_token::DP4)) {
                                                    dp4Instruction();
                                                  } else { 
                                                    if ((scanner.la()->id == vs20_token::DST)) {
                                                      dstInstruction();
                                                    } else { 
                                                      if ((scanner.la()->id == vs20_token::ELSE)) {
                                                        elseInstruction();
                                                      } else { 
                                                        if ((scanner.la()->id == vs20_token::ENDIF)) {
                                                          endifInstruction();
                                                        } else { 
                                                          if ((scanner.la()->id == vs20_token::ENDLOOP)) {
                                                            endloopInstruction();
                                                          } else { 
                                                            if ((scanner.la()->id == vs20_token::ENDREP)) {
                                                              endrepInstruction();
                                                            } else { 
                                                              if (__la_2_(1000000000)) {
                                                                expInstruction();
                                                              } else { 
                                                                if ((scanner.la()->id == vs20_token::EXP)) {
                                                                  exppInstruction();
                                                                } else { 
                                                                  if ((scanner.la()->id == vs20_token::FRC)) {
                                                                    frcInstruction();
                                                                  } else { 
                                                                    if ((scanner.la()->id == vs20_token::IF)) {
                                                                      ifInstruction();
                                                                    } else { 
                                                                      if ((scanner.la()->id == vs20_token::L)) {
                                                                        labelInstruction();
                                                                      } else { 
                                                                        if ((scanner.la()->id == vs20_token::LIT)) {
                                                                          litInstruction();
                                                                        } else { 
                                                                          if ((scanner.la()->id == vs20_token::LOG)) {
                                                                            logInstruction();
                                                                          } else { 
                                                                            if ((scanner.la()->id == vs20_token::LOGP)) {
                                                                              logpInstruction();
                                                                            } else { 
                                                                              if ((scanner.la()->id == vs20_token::LOOP)) {
                                                                                loopInstruction();
                                                                              } else { 
                                                                                if ((scanner.la()->id == vs20_token::LRP)) {
                                                                                  lrpInstruction();
                                                                                } else { 
                                                                                  if ((scanner.la()->id == vs20_token::M3X2)) {
                                                                                    m3x2Instruction();
                                                                                  } else { 
                                                                                    if ((scanner.la()->id == vs20_token::M3X3)) {
                                                                                      m3x3Instruction();
                                                                                    } else { 
                                                                                      if ((scanner.la()->id == vs20_token::M3X4)) {
                                                                                        m3x4Instruction();
                                                                                      } else { 
                                                                                        if ((scanner.la()->id == vs20_token::M4X3)) {
                                                                                          m4x3Instruction();
                                                                                        } else { 
                                                                                          if ((scanner.la()->id == vs20_token::M4X4)) {
                                                                                            m4x4Instruction();
                                                                                          } else { 
                                                                                            if ((scanner.la()->id == vs20_token::MAD)) {
                                                                                              madInstruction();
                                                                                            } else { 
                                                                                              if ((scanner.la()->id == vs20_token::MAX)) {
                                                                                                maxInstruction();
                                                                                              } else { 
                                                                                                if ((scanner.la()->id == vs20_token::MIN)) {
                                                                                                  minInstruction();
                                                                                                } else { 
                                                                                                  if ((scanner.la()->id == vs20_token::MOV)) {
                                                                                                    movInstruction();
                                                                                                  } else { 
                                                                                                    if ((scanner.la()->id == vs20_token::MOVA)) {
                                                                                                      movaInstruction();
                                                                                                    } else { 
                                                                                                      if ((scanner.la()->id == vs20_token::MUL)) {
                                                                                                        mulInstruction();
                                                                                                      } else { 
                                                                                                        if ((scanner.la()->id == vs20_token::NOP)) {
                                                                                                          nopInstruction();
                                                                                                        } else { 
                                                                                                          if ((scanner.la()->id == vs20_token::NRM)) {
                                                                                                            nrmInstruction();
                                                                                                          } else { 
                                                                                                            if ((scanner.la()->id == vs20_token::POW)) {
                                                                                                              powInstruction();
                                                                                                            } else { 
                                                                                                              if ((scanner.la()->id == vs20_token::RCP)) {
                                                                                                                rcpInstruction();
                                                                                                              } else { 
                                                                                                                if ((scanner.la()->id == vs20_token::REP)) {
                                                                                                                  repInstruction();
                                                                                                                } else { 
                                                                                                                  if ((scanner.la()->id == vs20_token::RET)) {
                                                                                                                    retInstruction();
                                                                                                                  } else { 
                                                                                                                    if ((scanner.la()->id == vs20_token::RSQ)) {
                                                                                                                      rsqInstruction();
                                                                                                                    } else { 
                                                                                                                      if ((scanner.la()->id == vs20_token::SGE)) {
                                                                                                                        sgeInstruction();
                                                                                                                      } else { 
                                                                                                                        if ((scanner.la()->id == vs20_token::SGN)) {
                                                                                                                          sgnInstruction();
                                                                                                                        } else { 
                                                                                                                          if ((scanner.la()->id == vs20_token::SINCOS)) {
                                                                                                                            sincosInstruction();
                                                                                                                          } else { 
                                                                                                                            if ((scanner.la()->id == vs20_token::SLT)) {
                                                                                                                              sltInstruction();
                                                                                                                            } else { 
                                                                                                                              vsInstruction();
                                                                                                                            }
                                                                                                                          }
                                                                                                                        }
                                                                                                                      }
                                                                                                                    }
                                                                                                                  }
                                                                                                                }
                                                                                                              }
                                                                                                            }
                                                                                                          }
                                                                                                        }
                                                                                                      }
                                                                                                    }
                                                                                                  }
                                                                                                }
                                                                                              }
                                                                                            }
                                                                                          }
                                                                                        }
                                                                                      }
                                                                                    }
                                                                                  }
                                                                                }
                                                                              }
                                                                            }
                                                                          }
                                                                        }
                                                                      }
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  } catch (ParseException&)
 {throw swShader::Error("Expected an instruction");;

  }
  {
			setMnemonic(m);
			setUsageIndex(usage_index);
			setModifier(x);
			setDestination(d);
			setSource0(s0);
			setSource1(s1);
			setSource2(s2);
			setSource3(s3);
		}

}


void vs20::vs20_parser::vsInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::VS_2_0);
  {m = swShader::Instruction::VS_2_0;}

}


void vs20::vs20_parser::dcl_positionInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_POSITION);
  {m = swShader::Instruction::DCL_POSITION; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::dcl_blendweightInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_BLENDWEIGHT);
  {m = swShader::Instruction::DCL_BLENDWEIGHT; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::dcl_blendindicesInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_BLENDINDICES);
  {m = swShader::Instruction::DCL_BLENDINDICES; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::dcl_normalInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_NORMAL);
  {m = swShader::Instruction::DCL_NORMAL; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::dcl_psizeInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_PSIZE);
  {m = swShader::Instruction::DCL_PSIZE; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::dcl_texcoordInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_TEXCOORD);
  {m = swShader::Instruction::DCL_TEXCOORD; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::dcl_tangentInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_TANGENT);
  {m = swShader::Instruction::DCL_TANGENT; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::dcl_binormalInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_BINORMAL);
  {m = swShader::Instruction::DCL_BINORMAL; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::dcl_tessfactorInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_TESSFACTOR);
  {m = swShader::Instruction::DCL_TESSFACTOR; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::dcl_positiontInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_POSITIONT);
  {m = swShader::Instruction::DCL_POSITIONT; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::dcl_colorInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_COLOR);
  {m = swShader::Instruction::DCL_COLOR; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::dcl_fogInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_FOG);
  {m = swShader::Instruction::DCL_FOG; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::dcl_depthInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_DEPTH);
  {m = swShader::Instruction::DCL_DEPTH; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::dcl_sampleInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DCL_SAMPLE);
  {m = swShader::Instruction::DCL_SAMPLE; usage_index = token->integer;}

  dest();
}


void vs20::vs20_parser::defInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DEF);
  {m = swShader::Instruction::DEF;}

  cn();
  consumeToken(vs20_token::COMMA);
  fValue1();
  consumeToken(vs20_token::COMMA);
  fValue2();
  consumeToken(vs20_token::COMMA);
  fValue3();
  consumeToken(vs20_token::COMMA);
  fValue4();
}


void vs20::vs20_parser::defbInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DEFB);
  {m = swShader::Instruction::DEFB;}

  bn();
  consumeToken(vs20_token::COMMA);
  booleanValue();
}


void vs20::vs20_parser::defiInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DEFI);
  {m = swShader::Instruction::DEFI;}

  in();
  consumeToken(vs20_token::COMMA);
  integerValue1();
  consumeToken(vs20_token::COMMA);
  integerValue2();
  consumeToken(vs20_token::COMMA);
  integerValue3();
  consumeToken(vs20_token::COMMA);
  integerValue4();
}


void vs20::vs20_parser::absInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::ABS);
  {m = swShader::Instruction::ABS;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src();
}


void vs20::vs20_parser::addInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::ADD);
  {m = swShader::Instruction::ADD;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::crsInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::CRS);
  {m = swShader::Instruction::CRS;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::dp3Instruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DP3);
  {m = swShader::Instruction::DP3;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::dp4Instruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DP4);
  {m = swShader::Instruction::DP4;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::dstInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::DST);
  {m = swShader::Instruction::DST;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::expInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::EXP);
  {m = swShader::Instruction::EXP;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src();
}


void vs20::vs20_parser::exppInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::EXP);
  {m = swShader::Instruction::EXP;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src();
}


void vs20::vs20_parser::frcInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::FRC);
  {m = swShader::Instruction::FRC;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src();
}


void vs20::vs20_parser::litInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::LIT);
  {m = swShader::Instruction::LIT;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src();
}


void vs20::vs20_parser::logInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::LOG);
  {m = swShader::Instruction::LOG;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src();
}


void vs20::vs20_parser::logpInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::LOGP);
  {m = swShader::Instruction::LOGP;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src();
}


void vs20::vs20_parser::lrpInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::LRP);
  {m = swShader::Instruction::LRP;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
  consumeToken(vs20_token::COMMA);
  src2();
}


void vs20::vs20_parser::m3x2Instruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::M3X2);
  {m = swShader::Instruction::M3X2;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::m3x3Instruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::M3X3);
  {m = swShader::Instruction::M3X3;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::m3x4Instruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::M3X4);
  {m = swShader::Instruction::M3X4;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::m4x3Instruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::M4X3);
  {m = swShader::Instruction::M4X3;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::m4x4Instruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::M4X4);
  {m = swShader::Instruction::M4X4;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::madInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::MAD);
  {m = swShader::Instruction::MAD;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
  consumeToken(vs20_token::COMMA);
  src2();
}


void vs20::vs20_parser::maxInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::MAX);
  {m = swShader::Instruction::MAX;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::minInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::MIN);
  {m = swShader::Instruction::MIN;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::movInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::MOV);
  {m = swShader::Instruction::MOV;}

  instructionModifier();
  if ((scanner.la()->id == vs20_token::R)) {
    dst();
  } else { 
    outputRegister();
  }
  consumeToken(vs20_token::COMMA);
  src();
}


void vs20::vs20_parser::movaInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::MOVA);
  {m = swShader::Instruction::MOVA;}

  instructionModifier();
  a0();
  consumeToken(vs20_token::COMMA);
  src();
}


void vs20::vs20_parser::mulInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::MUL);
  {m = swShader::Instruction::MUL;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::nopInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::NOP);
  {m = swShader::Instruction::NOP;}

}


void vs20::vs20_parser::nrmInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::NRM);
  {m = swShader::Instruction::NRM;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src();
}


void vs20::vs20_parser::powInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::POW);
  {m = swShader::Instruction::POW;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::rcpInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::RCP);
  {m = swShader::Instruction::RCP;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src();
}


void vs20::vs20_parser::rsqInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::RSQ);
  {m = swShader::Instruction::RSQ;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src();
}


void vs20::vs20_parser::sgeInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::SGE);
  {m = swShader::Instruction::SGE;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::sgnInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::SGN);
  {m = swShader::Instruction::SGN;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
  consumeToken(vs20_token::COMMA);
  src2();
}


void vs20::vs20_parser::sincosInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::SINCOS);
  {m = swShader::Instruction::SINCOS;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
  consumeToken(vs20_token::COMMA);
  src2();
}


void vs20::vs20_parser::sltInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::SLT);
  {m = swShader::Instruction::SLT;}

  instructionModifier();
  dst();
  consumeToken(vs20_token::COMMA);
  src0();
  consumeToken(vs20_token::COMMA);
  src1();
}


void vs20::vs20_parser::callInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::CALL);
  {m = swShader::Instruction::CALL;}

  consumeToken(vs20_token::INTEGER);
  {
			d.index = atoi(token->image().c_str());
			if(d.index < 0 || d.index >= 16) throw swShader::Error("Label index (%d) out of range", d.index);
		}

}


void vs20::vs20_parser::callnzInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::CALL);
  {m = swShader::Instruction::CALL;}

  consumeToken(vs20_token::INTEGER);
  {
			d.index = atoi(token->image().c_str());
			if(d.index < 0 || d.index >= 16) throw swShader::Error("Label index (%d) out of range", d.index);
		}

  consumeToken(vs20_token::COMMA);
  constantBooleanRegister();
  {s0 = t;}

}


void vs20::vs20_parser::elseInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::ELSE);
  {m = swShader::Instruction::ELSE;}

}


void vs20::vs20_parser::endifInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::ENDIF);
  {m = swShader::Instruction::ENDIF;}

}


void vs20::vs20_parser::endloopInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::ENDLOOP);
  {m = swShader::Instruction::ENDLOOP;}

}


void vs20::vs20_parser::endrepInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::ENDREP);
  {m = swShader::Instruction::ENDREP;}

}


void vs20::vs20_parser::ifInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::IF);
  {m = swShader::Instruction::IF;}

  constantBooleanRegister();
  {d = t; s0 = t;}

}


void vs20::vs20_parser::labelInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::L);
  {
			m = swShader::Instruction::LABEL;
			d.index = token->integer;
			s0.index = token->integer;
		}

}


void vs20::vs20_parser::loopInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::LOOP);
  {m = swShader::Instruction::LOOP;}

  aL();
  consumeToken(vs20_token::COMMA);
  constantIntegerRegister();
  {s0 = t;}

}


void vs20::vs20_parser::repInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::REP);
  {m = swShader::Instruction::REP;}

  constantIntegerRegister();
  {d = t; s0 = t;}

}


void vs20::vs20_parser::retInstruction ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::RET);
  {m = swShader::Instruction::RET;}

}


void vs20::vs20_parser::instructionModifier ()
     throw (ScanException, ParseException)
{
			x = swShader::Instruction::_NONE;
		;

  if ((scanner.la()->id == vs20_token::_SAT)) {
    consumeToken(vs20_token::_SAT);
    {x = swShader::Instruction::_SAT;}

  } else { 
     /* lambda */
  }
}


void vs20::vs20_parser::dst ()
     throw (ScanException, ParseException)
{
  try {
    temporaryRegister();
    writeMask();
  } catch (ParseException&)
 {throw swShader::Error("Expected a temporary register r#");;

  }
  {d = t;}

}


void vs20::vs20_parser::dest ()
     throw (ScanException, ParseException)
{
  try {
    vertexRegister();
  } catch (ParseException&)
 {throw swShader::Error("Expected a register v#");;

  }
  {d = t;}

}


void vs20::vs20_parser::a0 ()
     throw (ScanException, ParseException)
{
  try {
    a0Register();
  } catch (ParseException&)
 {throw swShader::Error("Expected a0");;

  }
  {d = t;}

}


void vs20::vs20_parser::aL ()
     throw (ScanException, ParseException)
{
  try {
    aLRegister();
  } catch (ParseException&)
 {throw swShader::Error("Expected aL");;

  }
  {d = t;}

}


void vs20::vs20_parser::cn ()
     throw (ScanException, ParseException)
{
  try {
    constantFloatRegister();
  } catch (ParseException&)
 {throw swShader::Error("Expected a constant float register c#");;

  }
  {d = t;}

}


void vs20::vs20_parser::bn ()
     throw (ScanException, ParseException)
{
  try {
    constantBooleanRegister();
  } catch (ParseException&)
 {throw swShader::Error("Expected a boolean register c#");;

  }
  {d = t;}

}


void vs20::vs20_parser::in ()
     throw (ScanException, ParseException)
{
  try {
    constantIntegerRegister();
  } catch (ParseException&)
 {throw swShader::Error("Expected a boolean register c#");;

  }
  {d = t;}

}


void vs20::vs20_parser::fValue1 ()
     throw (ScanException, ParseException)
{
  try {
    if ((scanner.la()->id == vs20_token::REAL)) {
      consumeToken(vs20_token::REAL);
    } else { 
      consumeToken(vs20_token::INTEGER);
    }
  } catch (ParseException&)
 {throw swShader::Error("Expected a floating-point literal");;

  }
  {s0.value = (float)strtod(token->image().c_str(), 0);}

}


void vs20::vs20_parser::fValue2 ()
     throw (ScanException, ParseException)
{
  try {
    if ((scanner.la()->id == vs20_token::REAL)) {
      consumeToken(vs20_token::REAL);
    } else { 
      consumeToken(vs20_token::INTEGER);
    }
  } catch (ParseException&)
 {throw swShader::Error("Expected a floating-point literal");;

  }
  {s1.value = (float)strtod(token->image().c_str(), 0);}

}


void vs20::vs20_parser::fValue3 ()
     throw (ScanException, ParseException)
{
  try {
    if ((scanner.la()->id == vs20_token::REAL)) {
      consumeToken(vs20_token::REAL);
    } else { 
      consumeToken(vs20_token::INTEGER);
    }
  } catch (ParseException&)
 {throw swShader::Error("Expected a floating-point literal");;

  }
  {s2.value = (float)strtod(token->image().c_str(), 0);}

}


void vs20::vs20_parser::fValue4 ()
     throw (ScanException, ParseException)
{
  try {
    if ((scanner.la()->id == vs20_token::REAL)) {
      consumeToken(vs20_token::REAL);
    } else { 
      consumeToken(vs20_token::INTEGER);
    }
  } catch (ParseException&)
 {throw swShader::Error("Expected a floating-point literal");;

  }
  {s3.value = (float)strtod(token->image().c_str(), 0);}

}


void vs20::vs20_parser::integerValue1 ()
     throw (ScanException, ParseException)
{
  try {
    consumeToken(vs20_token::INTEGER);
  } catch (ParseException&)
 {throw swShader::Error("Expected an integer literal");;

  }
  {s0.integer = atoi(token->image().c_str());}

}


void vs20::vs20_parser::integerValue2 ()
     throw (ScanException, ParseException)
{
  try {
    consumeToken(vs20_token::INTEGER);
  } catch (ParseException&)
 {throw swShader::Error("Expected an integer literal");;

  }
  {s1.integer = atoi(token->image().c_str());}

}


void vs20::vs20_parser::integerValue3 ()
     throw (ScanException, ParseException)
{
  try {
    consumeToken(vs20_token::INTEGER);
  } catch (ParseException&)
 {throw swShader::Error("Expected an integer literal");;

  }
  {s2.integer = atoi(token->image().c_str());}

}


void vs20::vs20_parser::integerValue4 ()
     throw (ScanException, ParseException)
{
  try {
    consumeToken(vs20_token::INTEGER);
  } catch (ParseException&)
 {throw swShader::Error("Expected an integer literal");;

  }
  {s3.integer = atoi(token->image().c_str());}

}


void vs20::vs20_parser::booleanValue ()
     throw (ScanException, ParseException)
{
  try {
    if ((scanner.la()->id == vs20_token::TRUE)) {
      consumeToken(vs20_token::TRUE);
    } else { 
      consumeToken(vs20_token::FALSE);
    }
  } catch (ParseException&)
 {throw swShader::Error("Expected a boolean");;

  }
  {s3.boolean = token->integer != 0;}

}


void vs20::vs20_parser::src ()
     throw (ScanException, ParseException)
{
  sourceModifier();
  inputRegister();
  sourceSwizzle();
  {s0 = t;}

}


void vs20::vs20_parser::src0 ()
     throw (ScanException, ParseException)
{
  sourceModifier();
  inputRegister();
  sourceSwizzle();
  {s0 = t;}

}


void vs20::vs20_parser::src1 ()
     throw (ScanException, ParseException)
{
  sourceModifier();
  inputRegister();
  sourceSwizzle();
  {s1 = t;}

}


void vs20::vs20_parser::src2 ()
     throw (ScanException, ParseException)
{
  sourceModifier();
  inputRegister();
  sourceSwizzle();
  {s2 = t;}

}


void vs20::vs20_parser::outputRegister ()
     throw (ScanException, ParseException)
{
  if ((scanner.la()->id == vs20_token::O_D)) {
    diffuseSpecularRegister();
  } else { 
    if ((scanner.la()->id == vs20_token::O_FOG)) {
      fogRegister();
    } else { 
      if ((scanner.la()->id == vs20_token::O_POS)) {
        positionRegister();
      } else { 
        if ((scanner.la()->id == vs20_token::O_PTS)) {
          pointSizeRegister();
        } else { 
          textureCoordinateRegister();
        }
      }
    }
  }
  {d = t;}

}


void vs20::vs20_parser::inputRegister ()
     throw (ScanException, ParseException)
{
  if ((scanner.la()->id == vs20_token::V)) {
    vertexRegister();
  } else { 
    if ((scanner.la()->id == vs20_token::R)) {
      temporaryRegister();
    } else { 
      constantFloatRegister();
    }
  }
}


void vs20::vs20_parser::sourceModifier ()
     throw (ScanException, ParseException)
{t.mod = swShader::Operand::SourceModifier::NONE;;

  if ((scanner.la()->id == vs20_token::MINUS)) {
    consumeToken(vs20_token::MINUS);
    {t.mod = swShader::Operand::SourceModifier::NEGATE;}

  } else { 
     /* lambda */
  }
}


void vs20::vs20_parser::writeMask ()
     throw (ScanException, ParseException)
{
			// Mask all components
			t.sel.x = swShader::Operand::X;
			t.sel.y = swShader::Operand::Y;
			t.sel.z = swShader::Operand::Z;
			t.sel.w = swShader::Operand::W;
		;

  if ((scanner.la()->id == vs20_token::DOT)) {
    consumeToken(vs20_token::DOT);
    {
				// Mask all components
				t.sel.x = swShader::Operand::M;
				t.sel.y = swShader::Operand::M;
				t.sel.z = swShader::Operand::M;
				t.sel.w = swShader::Operand::M;
			}

    if ((scanner.la()->id == vs20_token::X)) {
      consumeToken(vs20_token::X);
      {t.sel.x = swShader::Operand::X;}

      if ((scanner.la()->id == vs20_token::Y)) {
        consumeToken(vs20_token::Y);
        {t.sel.y = swShader::Operand::Y;}

      } else { 
         /* lambda */
      }
      if ((scanner.la()->id == vs20_token::Z)) {
        consumeToken(vs20_token::Z);
        {t.sel.z = swShader::Operand::Z;}

      } else { 
         /* lambda */
      }
      if ((scanner.la()->id == vs20_token::W)) {
        consumeToken(vs20_token::W);
        {t.sel.w = swShader::Operand::W;}

      } else { 
         /* lambda */
      }
    } else { 
      if ((scanner.la()->id == vs20_token::Y)) {
        consumeToken(vs20_token::Y);
        {t.sel.y = swShader::Operand::Y;}

        if ((scanner.la()->id == vs20_token::Z)) {
          consumeToken(vs20_token::Z);
          {t.sel.z = swShader::Operand::Z;}

        } else { 
           /* lambda */
        }
        if ((scanner.la()->id == vs20_token::W)) {
          consumeToken(vs20_token::W);
          {t.sel.w = swShader::Operand::W;}

        } else { 
           /* lambda */
        }
      } else { 
        if ((scanner.la()->id == vs20_token::Z)) {
          consumeToken(vs20_token::Z);
          {t.sel.z = swShader::Operand::Z;}

          if ((scanner.la()->id == vs20_token::W)) {
            consumeToken(vs20_token::W);
            {t.sel.w = swShader::Operand::W;}

          } else { 
             /* lambda */
          }
        } else { 
          consumeToken(vs20_token::W);
          {t.sel.w = swShader::Operand::W;}

        }
      }
    }
  } else { 
     /* lambda */
  }
}


void vs20::vs20_parser::sourceSwizzle ()
     throw (ScanException, ParseException)
{
			t.sel.x = swShader::Operand::Component::X;
			t.sel.y = swShader::Operand::Component::Y;
			t.sel.z = swShader::Operand::Component::Z;
			t.sel.w = swShader::Operand::Component::W;
		;

  if ((scanner.la()->id == vs20_token::DOT)) {
    consumeToken(vs20_token::DOT);
    if ((scanner.la()->id == vs20_token::X)) {
      consumeToken(vs20_token::X);
      {t.sel.x = swShader::Operand::X; t.sel.y = swShader::Operand::X; t.sel.z = swShader::Operand::X; t.sel.w = swShader::Operand::X;}

    } else { 
      if ((scanner.la()->id == vs20_token::Y)) {
        consumeToken(vs20_token::Y);
        {t.sel.x = swShader::Operand::Y; t.sel.y = swShader::Operand::Y; t.sel.z = swShader::Operand::Y; t.sel.w = swShader::Operand::Y;}

      } else { 
        if ((scanner.la()->id == vs20_token::Z)) {
          consumeToken(vs20_token::Z);
          {t.sel.x = swShader::Operand::Z; t.sel.y = swShader::Operand::Z; t.sel.z = swShader::Operand::Z; t.sel.w = swShader::Operand::Z;}

        } else { 
          consumeToken(vs20_token::W);
          {t.sel.x = swShader::Operand::W; t.sel.y = swShader::Operand::W; t.sel.z = swShader::Operand::W; t.sel.w = swShader::Operand::W;}

        }
      }
    }
    if (__la_3_(1000000000)) {
      if ((scanner.la()->id == vs20_token::X)) {
        consumeToken(vs20_token::X);
        {t.sel.y = swShader::Operand::X; t.sel.z = swShader::Operand::X; t.sel.w = swShader::Operand::X;}

      } else { 
        if ((scanner.la()->id == vs20_token::Y)) {
          consumeToken(vs20_token::Y);
          {t.sel.y = swShader::Operand::Y; t.sel.z = swShader::Operand::Y; t.sel.w = swShader::Operand::Y;}

        } else { 
          if ((scanner.la()->id == vs20_token::Z)) {
            consumeToken(vs20_token::Z);
            {t.sel.y = swShader::Operand::Z; t.sel.z = swShader::Operand::Z; t.sel.w = swShader::Operand::Z;}

          } else { 
            consumeToken(vs20_token::W);
            {t.sel.y = swShader::Operand::W; t.sel.z = swShader::Operand::W; t.sel.w = swShader::Operand::W;}

          }
        }
      }
    } else { 
       /* lambda */
    }
    if (__la_4_(1000000000)) {
      if ((scanner.la()->id == vs20_token::X)) {
        consumeToken(vs20_token::X);
        {t.sel.z = swShader::Operand::X; t.sel.w = swShader::Operand::X;}

      } else { 
        if ((scanner.la()->id == vs20_token::Y)) {
          consumeToken(vs20_token::Y);
          {t.sel.z = swShader::Operand::Y; t.sel.w = swShader::Operand::Y;}

        } else { 
          if ((scanner.la()->id == vs20_token::Z)) {
            consumeToken(vs20_token::Z);
            {t.sel.z = swShader::Operand::Z; t.sel.w = swShader::Operand::Z;}

          } else { 
            consumeToken(vs20_token::W);
            {t.sel.z = swShader::Operand::W; t.sel.w = swShader::Operand::W;}

          }
        }
      }
    } else { 
       /* lambda */
    }
    if ((scanner.la()->id == vs20_token::X) || (scanner.la()->id == vs20_token::Y) || (scanner.la()->id == vs20_token::Z) || (scanner.la()->id == vs20_token::W)) {
      if ((scanner.la()->id == vs20_token::X)) {
        consumeToken(vs20_token::X);
        {t.sel.w = swShader::Operand::X;}

      } else { 
        if ((scanner.la()->id == vs20_token::Y)) {
          consumeToken(vs20_token::Y);
          {t.sel.w = swShader::Operand::Y;}

        } else { 
          if ((scanner.la()->id == vs20_token::Z)) {
            consumeToken(vs20_token::Z);
            {t.sel.w = swShader::Operand::Z;}

          } else { 
            consumeToken(vs20_token::W);
            {t.sel.w = swShader::Operand::W;}

          }
        }
      }
    } else { 
       /* lambda */
    }
  } else { 
     /* lambda */
  }
}


void vs20::vs20_parser::vertexRegister ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::V);
  {t.type = swShader::Operand::INPUT_REGISTER; t.index = token->integer;}

}


void vs20::vs20_parser::temporaryRegister ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::R);
  {t.type = swShader::Operand::TEMPORARY_REGISTER; t.index = token->integer;}

}


void vs20::vs20_parser::constantFloatRegister ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::C);
  {t.type = swShader::Operand::CONSTANT_FLOAT_REGISTER; t.index = token->integer;}

}


void vs20::vs20_parser::constantIntegerRegister ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::I);
  {t.type = swShader::Operand::CONSTANT_INTEGER_REGISTER; t.index = token->integer;}

}


void vs20::vs20_parser::constantBooleanRegister ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::B);
  {t.type = swShader::Operand::CONSTANT_BOOLEAN_REGISTER; t.index = token->integer;}

}


void vs20::vs20_parser::a0Register ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::A0);
  {t.type = swShader::Operand::ADDRESS_REGISTER; t.index = 0;}

}


void vs20::vs20_parser::aLRegister ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::AL);
  {t.type = swShader::Operand::LOOP_COUNTER_REGISTER; t.index = 0;}

}


void vs20::vs20_parser::diffuseSpecularRegister ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::O_D);
  {t.type = swShader::Operand::DIFFUSE_SPECULAR_REGISTER; t.index = token->integer;}

}


void vs20::vs20_parser::fogRegister ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::O_FOG);
  {t.type = swShader::Operand::FOG_REGISTER; t.index = 0;}

}


void vs20::vs20_parser::positionRegister ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::O_POS);
  {t.type = swShader::Operand::POSITION_REGISTER; t.index = 0;}

}


void vs20::vs20_parser::pointSizeRegister ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::O_PTS);
  {t.type = swShader::Operand::POINT_SIZE_REGISTER; t.index = 0;}

}


void vs20::vs20_parser::textureCoordinateRegister ()
     throw (ScanException, ParseException)
{
  consumeToken(vs20_token::O_T);
  {t.type = swShader::Operand::TEXTURE_COORDINATE_REGISTER; t.index = token->integer;}

}


bool vs20::vs20_parser::__la_main_ () throw (ScanException)
{
  while (__la_0_(1000000000)) {
    if (!__la_instruction_()) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
    if (!laConsumeToken(vs20_token::EOL)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
    while ((scanner.la()->id == vs20_token::EOL)) {
      if (!laConsumeToken(vs20_token::EOL)) goto __lookahead_fail_;
      if (_la == 0) goto __lookahead_succeed_;
    }
  }
  if ((scanner.la()->id == vs20_token::VS_2_0) || (scanner.la()->id == vs20_token::DCL_POSITION) || (scanner.la()->id == vs20_token::DCL_BLENDWEIGHT) || (scanner.la()->id == vs20_token::DCL_BLENDINDICES) || (scanner.la()->id == vs20_token::DCL_NORMAL) || (scanner.la()->id == vs20_token::DCL_PSIZE) || (scanner.la()->id == vs20_token::DCL_TEXCOORD) || (scanner.la()->id == vs20_token::DCL_TANGENT) || (scanner.la()->id == vs20_token::DCL_BINORMAL) || (scanner.la()->id == vs20_token::DCL_TESSFACTOR) || (scanner.la()->id == vs20_token::DCL_POSITIONT) || (scanner.la()->id == vs20_token::DCL_COLOR) || (scanner.la()->id == vs20_token::DCL_FOG) || (scanner.la()->id == vs20_token::DCL_DEPTH) || (scanner.la()->id == vs20_token::DCL_SAMPLE) || (scanner.la()->id == vs20_token::DEF) || (scanner.la()->id == vs20_token::DEFB) || (scanner.la()->id == vs20_token::DEFI) || (scanner.la()->id == vs20_token::ABS) || (scanner.la()->id == vs20_token::ADD) || (scanner.la()->id == vs20_token::CALL) || (scanner.la()->id == vs20_token::CRS) || (scanner.la()->id == vs20_token::DP3) || (scanner.la()->id == vs20_token::DP4) || (scanner.la()->id == vs20_token::DST) || (scanner.la()->id == vs20_token::ELSE) || (scanner.la()->id == vs20_token::ENDIF) || (scanner.la()->id == vs20_token::ENDLOOP) || (scanner.la()->id == vs20_token::ENDREP) || (scanner.la()->id == vs20_token::EXP) || (scanner.la()->id == vs20_token::FRC) || (scanner.la()->id == vs20_token::IF) || (scanner.la()->id == vs20_token::LIT) || (scanner.la()->id == vs20_token::LOG) || (scanner.la()->id == vs20_token::LOGP) || (scanner.la()->id == vs20_token::LOOP) || (scanner.la()->id == vs20_token::LRP) || (scanner.la()->id == vs20_token::M3X2) || (scanner.la()->id == vs20_token::M3X3) || (scanner.la()->id == vs20_token::M3X4) || (scanner.la()->id == vs20_token::M4X3) || (scanner.la()->id == vs20_token::M4X4) || (scanner.la()->id == vs20_token::MAD) || (scanner.la()->id == vs20_token::MAX) || (scanner.la()->id == vs20_token::MIN) || (scanner.la()->id == vs20_token::MOV) || (scanner.la()->id == vs20_token::MOVA) || (scanner.la()->id == vs20_token::MUL) || (scanner.la()->id == vs20_token::NOP) || (scanner.la()->id == vs20_token::NRM) || (scanner.la()->id == vs20_token::POW) || (scanner.la()->id == vs20_token::RCP) || (scanner.la()->id == vs20_token::REP) || (scanner.la()->id == vs20_token::RET) || (scanner.la()->id == vs20_token::RSQ) || (scanner.la()->id == vs20_token::SGE) || (scanner.la()->id == vs20_token::SGN) || (scanner.la()->id == vs20_token::SINCOS) || (scanner.la()->id == vs20_token::SLT) || (scanner.la()->id == vs20_token::L)) {
    if (!__la_instruction_()) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
     /* lambda */
  }
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_0_ (int depth) throw (ScanException)
{
  int _laSave = _la;
  _la = depth;
  scanner.setMarker();
  
  if (!__la_instruction_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::EOL)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  while ((scanner.la()->id == vs20_token::EOL)) {
    if (!laConsumeToken(vs20_token::EOL)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  }
  goto __lookahead_succeed_;
  
__lookahead_fail_:
  _la = _laSave;
  scanner.rewindToMarker();
  return false;

__lookahead_succeed_:
  _la = _laSave;
  scanner.rewindToMarker();
  return true;
}


bool vs20::vs20_parser::__la_instruction_ () throw (ScanException)
{
  if ((scanner.la()->id == vs20_token::ABS)) {
    if (!__la_absInstruction_()) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
    if ((scanner.la()->id == vs20_token::ADD)) {
      if (!__la_addInstruction_()) goto __lookahead_fail_;
      if (_la == 0) goto __lookahead_succeed_;
    } else { 
      if (__la_1_(1000000000)) {
        if (!__la_callInstruction_()) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
      } else { 
        if ((scanner.la()->id == vs20_token::CALL)) {
          if (!__la_callnzInstruction_()) goto __lookahead_fail_;
          if (_la == 0) goto __lookahead_succeed_;
        } else { 
          if ((scanner.la()->id == vs20_token::CRS)) {
            if (!__la_crsInstruction_()) goto __lookahead_fail_;
            if (_la == 0) goto __lookahead_succeed_;
          } else { 
            if ((scanner.la()->id == vs20_token::DCL_POSITION)) {
              if (!__la_dcl_positionInstruction_()) goto __lookahead_fail_;
              if (_la == 0) goto __lookahead_succeed_;
            } else { 
              if ((scanner.la()->id == vs20_token::DCL_BLENDWEIGHT)) {
                if (!__la_dcl_blendweightInstruction_()) goto __lookahead_fail_;
                if (_la == 0) goto __lookahead_succeed_;
              } else { 
                if ((scanner.la()->id == vs20_token::DCL_BLENDINDICES)) {
                  if (!__la_dcl_blendindicesInstruction_()) goto __lookahead_fail_;
                  if (_la == 0) goto __lookahead_succeed_;
                } else { 
                  if ((scanner.la()->id == vs20_token::DCL_NORMAL)) {
                    if (!__la_dcl_normalInstruction_()) goto __lookahead_fail_;
                    if (_la == 0) goto __lookahead_succeed_;
                  } else { 
                    if ((scanner.la()->id == vs20_token::DCL_PSIZE)) {
                      if (!__la_dcl_psizeInstruction_()) goto __lookahead_fail_;
                      if (_la == 0) goto __lookahead_succeed_;
                    } else { 
                      if ((scanner.la()->id == vs20_token::DCL_TEXCOORD)) {
                        if (!__la_dcl_texcoordInstruction_()) goto __lookahead_fail_;
                        if (_la == 0) goto __lookahead_succeed_;
                      } else { 
                        if ((scanner.la()->id == vs20_token::DCL_TANGENT)) {
                          if (!__la_dcl_tangentInstruction_()) goto __lookahead_fail_;
                          if (_la == 0) goto __lookahead_succeed_;
                        } else { 
                          if ((scanner.la()->id == vs20_token::DCL_BINORMAL)) {
                            if (!__la_dcl_binormalInstruction_()) goto __lookahead_fail_;
                            if (_la == 0) goto __lookahead_succeed_;
                          } else { 
                            if ((scanner.la()->id == vs20_token::DCL_TESSFACTOR)) {
                              if (!__la_dcl_tessfactorInstruction_()) goto __lookahead_fail_;
                              if (_la == 0) goto __lookahead_succeed_;
                            } else { 
                              if ((scanner.la()->id == vs20_token::DCL_POSITIONT)) {
                                if (!__la_dcl_positiontInstruction_()) goto __lookahead_fail_;
                                if (_la == 0) goto __lookahead_succeed_;
                              } else { 
                                if ((scanner.la()->id == vs20_token::DCL_COLOR)) {
                                  if (!__la_dcl_colorInstruction_()) goto __lookahead_fail_;
                                  if (_la == 0) goto __lookahead_succeed_;
                                } else { 
                                  if ((scanner.la()->id == vs20_token::DCL_FOG)) {
                                    if (!__la_dcl_fogInstruction_()) goto __lookahead_fail_;
                                    if (_la == 0) goto __lookahead_succeed_;
                                  } else { 
                                    if ((scanner.la()->id == vs20_token::DCL_DEPTH)) {
                                      if (!__la_dcl_depthInstruction_()) goto __lookahead_fail_;
                                      if (_la == 0) goto __lookahead_succeed_;
                                    } else { 
                                      if ((scanner.la()->id == vs20_token::DCL_SAMPLE)) {
                                        if (!__la_dcl_sampleInstruction_()) goto __lookahead_fail_;
                                        if (_la == 0) goto __lookahead_succeed_;
                                      } else { 
                                        if ((scanner.la()->id == vs20_token::DEF)) {
                                          if (!__la_defInstruction_()) goto __lookahead_fail_;
                                          if (_la == 0) goto __lookahead_succeed_;
                                        } else { 
                                          if ((scanner.la()->id == vs20_token::DEFB)) {
                                            if (!__la_defbInstruction_()) goto __lookahead_fail_;
                                            if (_la == 0) goto __lookahead_succeed_;
                                          } else { 
                                            if ((scanner.la()->id == vs20_token::DEFI)) {
                                              if (!__la_defiInstruction_()) goto __lookahead_fail_;
                                              if (_la == 0) goto __lookahead_succeed_;
                                            } else { 
                                              if ((scanner.la()->id == vs20_token::DP3)) {
                                                if (!__la_dp3Instruction_()) goto __lookahead_fail_;
                                                if (_la == 0) goto __lookahead_succeed_;
                                              } else { 
                                                if ((scanner.la()->id == vs20_token::DP4)) {
                                                  if (!__la_dp4Instruction_()) goto __lookahead_fail_;
                                                  if (_la == 0) goto __lookahead_succeed_;
                                                } else { 
                                                  if ((scanner.la()->id == vs20_token::DST)) {
                                                    if (!__la_dstInstruction_()) goto __lookahead_fail_;
                                                    if (_la == 0) goto __lookahead_succeed_;
                                                  } else { 
                                                    if ((scanner.la()->id == vs20_token::ELSE)) {
                                                      if (!__la_elseInstruction_()) goto __lookahead_fail_;
                                                      if (_la == 0) goto __lookahead_succeed_;
                                                    } else { 
                                                      if ((scanner.la()->id == vs20_token::ENDIF)) {
                                                        if (!__la_endifInstruction_()) goto __lookahead_fail_;
                                                        if (_la == 0) goto __lookahead_succeed_;
                                                      } else { 
                                                        if ((scanner.la()->id == vs20_token::ENDLOOP)) {
                                                          if (!__la_endloopInstruction_()) goto __lookahead_fail_;
                                                          if (_la == 0) goto __lookahead_succeed_;
                                                        } else { 
                                                          if ((scanner.la()->id == vs20_token::ENDREP)) {
                                                            if (!__la_endrepInstruction_()) goto __lookahead_fail_;
                                                            if (_la == 0) goto __lookahead_succeed_;
                                                          } else { 
                                                            if (__la_2_(1000000000)) {
                                                              if (!__la_expInstruction_()) goto __lookahead_fail_;
                                                              if (_la == 0) goto __lookahead_succeed_;
                                                            } else { 
                                                              if ((scanner.la()->id == vs20_token::EXP)) {
                                                                if (!__la_exppInstruction_()) goto __lookahead_fail_;
                                                                if (_la == 0) goto __lookahead_succeed_;
                                                              } else { 
                                                                if ((scanner.la()->id == vs20_token::FRC)) {
                                                                  if (!__la_frcInstruction_()) goto __lookahead_fail_;
                                                                  if (_la == 0) goto __lookahead_succeed_;
                                                                } else { 
                                                                  if ((scanner.la()->id == vs20_token::IF)) {
                                                                    if (!__la_ifInstruction_()) goto __lookahead_fail_;
                                                                    if (_la == 0) goto __lookahead_succeed_;
                                                                  } else { 
                                                                    if ((scanner.la()->id == vs20_token::L)) {
                                                                      if (!__la_labelInstruction_()) goto __lookahead_fail_;
                                                                      if (_la == 0) goto __lookahead_succeed_;
                                                                    } else { 
                                                                      if ((scanner.la()->id == vs20_token::LIT)) {
                                                                        if (!__la_litInstruction_()) goto __lookahead_fail_;
                                                                        if (_la == 0) goto __lookahead_succeed_;
                                                                      } else { 
                                                                        if ((scanner.la()->id == vs20_token::LOG)) {
                                                                          if (!__la_logInstruction_()) goto __lookahead_fail_;
                                                                          if (_la == 0) goto __lookahead_succeed_;
                                                                        } else { 
                                                                          if ((scanner.la()->id == vs20_token::LOGP)) {
                                                                            if (!__la_logpInstruction_()) goto __lookahead_fail_;
                                                                            if (_la == 0) goto __lookahead_succeed_;
                                                                          } else { 
                                                                            if ((scanner.la()->id == vs20_token::LOOP)) {
                                                                              if (!__la_loopInstruction_()) goto __lookahead_fail_;
                                                                              if (_la == 0) goto __lookahead_succeed_;
                                                                            } else { 
                                                                              if ((scanner.la()->id == vs20_token::LRP)) {
                                                                                if (!__la_lrpInstruction_()) goto __lookahead_fail_;
                                                                                if (_la == 0) goto __lookahead_succeed_;
                                                                              } else { 
                                                                                if ((scanner.la()->id == vs20_token::M3X2)) {
                                                                                  if (!__la_m3x2Instruction_()) goto __lookahead_fail_;
                                                                                  if (_la == 0) goto __lookahead_succeed_;
                                                                                } else { 
                                                                                  if ((scanner.la()->id == vs20_token::M3X3)) {
                                                                                    if (!__la_m3x3Instruction_()) goto __lookahead_fail_;
                                                                                    if (_la == 0) goto __lookahead_succeed_;
                                                                                  } else { 
                                                                                    if ((scanner.la()->id == vs20_token::M3X4)) {
                                                                                      if (!__la_m3x4Instruction_()) goto __lookahead_fail_;
                                                                                      if (_la == 0) goto __lookahead_succeed_;
                                                                                    } else { 
                                                                                      if ((scanner.la()->id == vs20_token::M4X3)) {
                                                                                        if (!__la_m4x3Instruction_()) goto __lookahead_fail_;
                                                                                        if (_la == 0) goto __lookahead_succeed_;
                                                                                      } else { 
                                                                                        if ((scanner.la()->id == vs20_token::M4X4)) {
                                                                                          if (!__la_m4x4Instruction_()) goto __lookahead_fail_;
                                                                                          if (_la == 0) goto __lookahead_succeed_;
                                                                                        } else { 
                                                                                          if ((scanner.la()->id == vs20_token::MAD)) {
                                                                                            if (!__la_madInstruction_()) goto __lookahead_fail_;
                                                                                            if (_la == 0) goto __lookahead_succeed_;
                                                                                          } else { 
                                                                                            if ((scanner.la()->id == vs20_token::MAX)) {
                                                                                              if (!__la_maxInstruction_()) goto __lookahead_fail_;
                                                                                              if (_la == 0) goto __lookahead_succeed_;
                                                                                            } else { 
                                                                                              if ((scanner.la()->id == vs20_token::MIN)) {
                                                                                                if (!__la_minInstruction_()) goto __lookahead_fail_;
                                                                                                if (_la == 0) goto __lookahead_succeed_;
                                                                                              } else { 
                                                                                                if ((scanner.la()->id == vs20_token::MOV)) {
                                                                                                  if (!__la_movInstruction_()) goto __lookahead_fail_;
                                                                                                  if (_la == 0) goto __lookahead_succeed_;
                                                                                                } else { 
                                                                                                  if ((scanner.la()->id == vs20_token::MOVA)) {
                                                                                                    if (!__la_movaInstruction_()) goto __lookahead_fail_;
                                                                                                    if (_la == 0) goto __lookahead_succeed_;
                                                                                                  } else { 
                                                                                                    if ((scanner.la()->id == vs20_token::MUL)) {
                                                                                                      if (!__la_mulInstruction_()) goto __lookahead_fail_;
                                                                                                      if (_la == 0) goto __lookahead_succeed_;
                                                                                                    } else { 
                                                                                                      if ((scanner.la()->id == vs20_token::NOP)) {
                                                                                                        if (!__la_nopInstruction_()) goto __lookahead_fail_;
                                                                                                        if (_la == 0) goto __lookahead_succeed_;
                                                                                                      } else { 
                                                                                                        if ((scanner.la()->id == vs20_token::NRM)) {
                                                                                                          if (!__la_nrmInstruction_()) goto __lookahead_fail_;
                                                                                                          if (_la == 0) goto __lookahead_succeed_;
                                                                                                        } else { 
                                                                                                          if ((scanner.la()->id == vs20_token::POW)) {
                                                                                                            if (!__la_powInstruction_()) goto __lookahead_fail_;
                                                                                                            if (_la == 0) goto __lookahead_succeed_;
                                                                                                          } else { 
                                                                                                            if ((scanner.la()->id == vs20_token::RCP)) {
                                                                                                              if (!__la_rcpInstruction_()) goto __lookahead_fail_;
                                                                                                              if (_la == 0) goto __lookahead_succeed_;
                                                                                                            } else { 
                                                                                                              if ((scanner.la()->id == vs20_token::REP)) {
                                                                                                                if (!__la_repInstruction_()) goto __lookahead_fail_;
                                                                                                                if (_la == 0) goto __lookahead_succeed_;
                                                                                                              } else { 
                                                                                                                if ((scanner.la()->id == vs20_token::RET)) {
                                                                                                                  if (!__la_retInstruction_()) goto __lookahead_fail_;
                                                                                                                  if (_la == 0) goto __lookahead_succeed_;
                                                                                                                } else { 
                                                                                                                  if ((scanner.la()->id == vs20_token::RSQ)) {
                                                                                                                    if (!__la_rsqInstruction_()) goto __lookahead_fail_;
                                                                                                                    if (_la == 0) goto __lookahead_succeed_;
                                                                                                                  } else { 
                                                                                                                    if ((scanner.la()->id == vs20_token::SGE)) {
                                                                                                                      if (!__la_sgeInstruction_()) goto __lookahead_fail_;
                                                                                                                      if (_la == 0) goto __lookahead_succeed_;
                                                                                                                    } else { 
                                                                                                                      if ((scanner.la()->id == vs20_token::SGN)) {
                                                                                                                        if (!__la_sgnInstruction_()) goto __lookahead_fail_;
                                                                                                                        if (_la == 0) goto __lookahead_succeed_;
                                                                                                                      } else { 
                                                                                                                        if ((scanner.la()->id == vs20_token::SINCOS)) {
                                                                                                                          if (!__la_sincosInstruction_()) goto __lookahead_fail_;
                                                                                                                          if (_la == 0) goto __lookahead_succeed_;
                                                                                                                        } else { 
                                                                                                                          if ((scanner.la()->id == vs20_token::SLT)) {
                                                                                                                            if (!__la_sltInstruction_()) goto __lookahead_fail_;
                                                                                                                            if (_la == 0) goto __lookahead_succeed_;
                                                                                                                          } else { 
                                                                                                                            if (!__la_vsInstruction_()) goto __lookahead_fail_;
                                                                                                                            if (_la == 0) goto __lookahead_succeed_;
                                                                                                                          }
                                                                                                                        }
                                                                                                                      }
                                                                                                                    }
                                                                                                                  }
                                                                                                                }
                                                                                                              }
                                                                                                            }
                                                                                                          }
                                                                                                        }
                                                                                                      }
                                                                                                    }
                                                                                                  }
                                                                                                }
                                                                                              }
                                                                                            }
                                                                                          }
                                                                                        }
                                                                                      }
                                                                                    }
                                                                                  }
                                                                                }
                                                                              }
                                                                            }
                                                                          }
                                                                        }
                                                                      }
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_1_ (int depth) throw (ScanException)
{
  int _laSave = _la;
  _la = depth;
  scanner.setMarker();
  
  if (!__la_callInstruction_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  goto __lookahead_succeed_;
  
__lookahead_fail_:
  _la = _laSave;
  scanner.rewindToMarker();
  return false;

__lookahead_succeed_:
  _la = _laSave;
  scanner.rewindToMarker();
  return true;
}


bool vs20::vs20_parser::__la_2_ (int depth) throw (ScanException)
{
  int _laSave = _la;
  _la = depth;
  scanner.setMarker();
  
  if (!__la_expInstruction_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  goto __lookahead_succeed_;
  
__lookahead_fail_:
  _la = _laSave;
  scanner.rewindToMarker();
  return false;

__lookahead_succeed_:
  _la = _laSave;
  scanner.rewindToMarker();
  return true;
}


bool vs20::vs20_parser::__la_vsInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::VS_2_0)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_positionInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_POSITION)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_blendweightInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_BLENDWEIGHT)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_blendindicesInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_BLENDINDICES)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_normalInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_NORMAL)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_psizeInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_PSIZE)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_texcoordInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_TEXCOORD)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_tangentInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_TANGENT)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_binormalInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_BINORMAL)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_tessfactorInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_TESSFACTOR)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_positiontInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_POSITIONT)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_colorInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_COLOR)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_fogInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_FOG)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_depthInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_DEPTH)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dcl_sampleInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DCL_SAMPLE)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dest_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_defInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DEF)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_cn_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_fValue1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_fValue2_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_fValue3_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_fValue4_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_defbInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DEFB)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_bn_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_booleanValue_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_defiInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DEFI)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_in_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_integerValue1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_integerValue2_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_integerValue3_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_integerValue4_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_absInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::ABS)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_addInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::ADD)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_crsInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::CRS)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dp3Instruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DP3)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dp4Instruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DP4)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dstInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::DST)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_expInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::EXP)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_exppInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::EXP)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_frcInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::FRC)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_litInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::LIT)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_logInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::LOG)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_logpInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::LOGP)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_lrpInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::LRP)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src2_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_m3x2Instruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::M3X2)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_m3x3Instruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::M3X3)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_m3x4Instruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::M3X4)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_m4x3Instruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::M4X3)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_m4x4Instruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::M4X4)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_madInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::MAD)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src2_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_maxInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::MAX)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_minInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::MIN)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_movInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::MOV)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if ((scanner.la()->id == vs20_token::R)) {
    if (!__la_dst_()) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
    if (!__la_outputRegister_()) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  }
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_movaInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::MOVA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_a0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_mulInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::MUL)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_nopInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::NOP)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_nrmInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::NRM)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_powInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::POW)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_rcpInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::RCP)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_rsqInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::RSQ)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_sgeInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::SGE)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_sgnInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::SGN)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src2_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_sincosInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::SINCOS)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src2_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_sltInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::SLT)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_instructionModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_dst_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src0_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_src1_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_callInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::CALL)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::INTEGER)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_callnzInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::CALL)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::INTEGER)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_constantBooleanRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_elseInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::ELSE)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_endifInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::ENDIF)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_endloopInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::ENDLOOP)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_endrepInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::ENDREP)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_ifInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::IF)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_constantBooleanRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_labelInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::L)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_loopInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::LOOP)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_aL_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!laConsumeToken(vs20_token::COMMA)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_constantIntegerRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_repInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::REP)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_constantIntegerRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_retInstruction_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::RET)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_instructionModifier_ () throw (ScanException)
{
  if ((scanner.la()->id == vs20_token::_SAT)) {
    if (!laConsumeToken(vs20_token::_SAT)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
     /* lambda */
  }
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dst_ () throw (ScanException)
{
  if (!__la_temporaryRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_writeMask_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_dest_ () throw (ScanException)
{
  if (!__la_vertexRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_a0_ () throw (ScanException)
{
  if (!__la_a0Register_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_aL_ () throw (ScanException)
{
  if (!__la_aLRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_cn_ () throw (ScanException)
{
  if (!__la_constantFloatRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_bn_ () throw (ScanException)
{
  if (!__la_constantBooleanRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_in_ () throw (ScanException)
{
  if (!__la_constantIntegerRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_fValue1_ () throw (ScanException)
{
  if ((scanner.la()->id == vs20_token::REAL)) {
    if (!laConsumeToken(vs20_token::REAL)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
    if (!laConsumeToken(vs20_token::INTEGER)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  }
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_fValue2_ () throw (ScanException)
{
  if ((scanner.la()->id == vs20_token::REAL)) {
    if (!laConsumeToken(vs20_token::REAL)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
    if (!laConsumeToken(vs20_token::INTEGER)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  }
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_fValue3_ () throw (ScanException)
{
  if ((scanner.la()->id == vs20_token::REAL)) {
    if (!laConsumeToken(vs20_token::REAL)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
    if (!laConsumeToken(vs20_token::INTEGER)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  }
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_fValue4_ () throw (ScanException)
{
  if ((scanner.la()->id == vs20_token::REAL)) {
    if (!laConsumeToken(vs20_token::REAL)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
    if (!laConsumeToken(vs20_token::INTEGER)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  }
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_integerValue1_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::INTEGER)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_integerValue2_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::INTEGER)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_integerValue3_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::INTEGER)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_integerValue4_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::INTEGER)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_booleanValue_ () throw (ScanException)
{
  if ((scanner.la()->id == vs20_token::TRUE)) {
    if (!laConsumeToken(vs20_token::TRUE)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
    if (!laConsumeToken(vs20_token::FALSE)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  }
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_src_ () throw (ScanException)
{
  if (!__la_sourceModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_inputRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_sourceSwizzle_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_src0_ () throw (ScanException)
{
  if (!__la_sourceModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_inputRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_sourceSwizzle_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_src1_ () throw (ScanException)
{
  if (!__la_sourceModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_inputRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_sourceSwizzle_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_src2_ () throw (ScanException)
{
  if (!__la_sourceModifier_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_inputRegister_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  if (!__la_sourceSwizzle_()) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_outputRegister_ () throw (ScanException)
{
  if ((scanner.la()->id == vs20_token::O_D)) {
    if (!__la_diffuseSpecularRegister_()) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
    if ((scanner.la()->id == vs20_token::O_FOG)) {
      if (!__la_fogRegister_()) goto __lookahead_fail_;
      if (_la == 0) goto __lookahead_succeed_;
    } else { 
      if ((scanner.la()->id == vs20_token::O_POS)) {
        if (!__la_positionRegister_()) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
      } else { 
        if ((scanner.la()->id == vs20_token::O_PTS)) {
          if (!__la_pointSizeRegister_()) goto __lookahead_fail_;
          if (_la == 0) goto __lookahead_succeed_;
        } else { 
          if (!__la_textureCoordinateRegister_()) goto __lookahead_fail_;
          if (_la == 0) goto __lookahead_succeed_;
        }
      }
    }
  }
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_inputRegister_ () throw (ScanException)
{
  if ((scanner.la()->id == vs20_token::V)) {
    if (!__la_vertexRegister_()) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
    if ((scanner.la()->id == vs20_token::R)) {
      if (!__la_temporaryRegister_()) goto __lookahead_fail_;
      if (_la == 0) goto __lookahead_succeed_;
    } else { 
      if (!__la_constantFloatRegister_()) goto __lookahead_fail_;
      if (_la == 0) goto __lookahead_succeed_;
    }
  }
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_sourceModifier_ () throw (ScanException)
{
  if ((scanner.la()->id == vs20_token::MINUS)) {
    if (!laConsumeToken(vs20_token::MINUS)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
     /* lambda */
  }
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_writeMask_ () throw (ScanException)
{
  if ((scanner.la()->id == vs20_token::DOT)) {
    if (!laConsumeToken(vs20_token::DOT)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
    if ((scanner.la()->id == vs20_token::X)) {
      if (!laConsumeToken(vs20_token::X)) goto __lookahead_fail_;
      if (_la == 0) goto __lookahead_succeed_;
      if ((scanner.la()->id == vs20_token::Y)) {
        if (!laConsumeToken(vs20_token::Y)) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
      } else { 
         /* lambda */
      }
      if ((scanner.la()->id == vs20_token::Z)) {
        if (!laConsumeToken(vs20_token::Z)) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
      } else { 
         /* lambda */
      }
      if ((scanner.la()->id == vs20_token::W)) {
        if (!laConsumeToken(vs20_token::W)) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
      } else { 
         /* lambda */
      }
    } else { 
      if ((scanner.la()->id == vs20_token::Y)) {
        if (!laConsumeToken(vs20_token::Y)) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
        if ((scanner.la()->id == vs20_token::Z)) {
          if (!laConsumeToken(vs20_token::Z)) goto __lookahead_fail_;
          if (_la == 0) goto __lookahead_succeed_;
        } else { 
           /* lambda */
        }
        if ((scanner.la()->id == vs20_token::W)) {
          if (!laConsumeToken(vs20_token::W)) goto __lookahead_fail_;
          if (_la == 0) goto __lookahead_succeed_;
        } else { 
           /* lambda */
        }
      } else { 
        if ((scanner.la()->id == vs20_token::Z)) {
          if (!laConsumeToken(vs20_token::Z)) goto __lookahead_fail_;
          if (_la == 0) goto __lookahead_succeed_;
          if ((scanner.la()->id == vs20_token::W)) {
            if (!laConsumeToken(vs20_token::W)) goto __lookahead_fail_;
            if (_la == 0) goto __lookahead_succeed_;
          } else { 
             /* lambda */
          }
        } else { 
          if (!laConsumeToken(vs20_token::W)) goto __lookahead_fail_;
          if (_la == 0) goto __lookahead_succeed_;
        }
      }
    }
  } else { 
     /* lambda */
  }
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_sourceSwizzle_ () throw (ScanException)
{
  if ((scanner.la()->id == vs20_token::DOT)) {
    if (!laConsumeToken(vs20_token::DOT)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
    if ((scanner.la()->id == vs20_token::X)) {
      if (!laConsumeToken(vs20_token::X)) goto __lookahead_fail_;
      if (_la == 0) goto __lookahead_succeed_;
    } else { 
      if ((scanner.la()->id == vs20_token::Y)) {
        if (!laConsumeToken(vs20_token::Y)) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
      } else { 
        if ((scanner.la()->id == vs20_token::Z)) {
          if (!laConsumeToken(vs20_token::Z)) goto __lookahead_fail_;
          if (_la == 0) goto __lookahead_succeed_;
        } else { 
          if (!laConsumeToken(vs20_token::W)) goto __lookahead_fail_;
          if (_la == 0) goto __lookahead_succeed_;
        }
      }
    }
    if (__la_3_(1000000000)) {
      if ((scanner.la()->id == vs20_token::X)) {
        if (!laConsumeToken(vs20_token::X)) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
      } else { 
        if ((scanner.la()->id == vs20_token::Y)) {
          if (!laConsumeToken(vs20_token::Y)) goto __lookahead_fail_;
          if (_la == 0) goto __lookahead_succeed_;
        } else { 
          if ((scanner.la()->id == vs20_token::Z)) {
            if (!laConsumeToken(vs20_token::Z)) goto __lookahead_fail_;
            if (_la == 0) goto __lookahead_succeed_;
          } else { 
            if (!laConsumeToken(vs20_token::W)) goto __lookahead_fail_;
            if (_la == 0) goto __lookahead_succeed_;
          }
        }
      }
    } else { 
       /* lambda */
    }
    if (__la_4_(1000000000)) {
      if ((scanner.la()->id == vs20_token::X)) {
        if (!laConsumeToken(vs20_token::X)) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
      } else { 
        if ((scanner.la()->id == vs20_token::Y)) {
          if (!laConsumeToken(vs20_token::Y)) goto __lookahead_fail_;
          if (_la == 0) goto __lookahead_succeed_;
        } else { 
          if ((scanner.la()->id == vs20_token::Z)) {
            if (!laConsumeToken(vs20_token::Z)) goto __lookahead_fail_;
            if (_la == 0) goto __lookahead_succeed_;
          } else { 
            if (!laConsumeToken(vs20_token::W)) goto __lookahead_fail_;
            if (_la == 0) goto __lookahead_succeed_;
          }
        }
      }
    } else { 
       /* lambda */
    }
    if ((scanner.la()->id == vs20_token::X) || (scanner.la()->id == vs20_token::Y) || (scanner.la()->id == vs20_token::Z) || (scanner.la()->id == vs20_token::W)) {
      if ((scanner.la()->id == vs20_token::X)) {
        if (!laConsumeToken(vs20_token::X)) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
      } else { 
        if ((scanner.la()->id == vs20_token::Y)) {
          if (!laConsumeToken(vs20_token::Y)) goto __lookahead_fail_;
          if (_la == 0) goto __lookahead_succeed_;
        } else { 
          if ((scanner.la()->id == vs20_token::Z)) {
            if (!laConsumeToken(vs20_token::Z)) goto __lookahead_fail_;
            if (_la == 0) goto __lookahead_succeed_;
          } else { 
            if (!laConsumeToken(vs20_token::W)) goto __lookahead_fail_;
            if (_la == 0) goto __lookahead_succeed_;
          }
        }
      }
    } else { 
       /* lambda */
    }
  } else { 
     /* lambda */
  }
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_3_ (int depth) throw (ScanException)
{
  int _laSave = _la;
  _la = depth;
  scanner.setMarker();
  
  if ((scanner.la()->id == vs20_token::X)) {
    if (!laConsumeToken(vs20_token::X)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
    if ((scanner.la()->id == vs20_token::Y)) {
      if (!laConsumeToken(vs20_token::Y)) goto __lookahead_fail_;
      if (_la == 0) goto __lookahead_succeed_;
    } else { 
      if ((scanner.la()->id == vs20_token::Z)) {
        if (!laConsumeToken(vs20_token::Z)) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
      } else { 
        if (!laConsumeToken(vs20_token::W)) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
      }
    }
  }
  goto __lookahead_succeed_;
  
__lookahead_fail_:
  _la = _laSave;
  scanner.rewindToMarker();
  return false;

__lookahead_succeed_:
  _la = _laSave;
  scanner.rewindToMarker();
  return true;
}


bool vs20::vs20_parser::__la_4_ (int depth) throw (ScanException)
{
  int _laSave = _la;
  _la = depth;
  scanner.setMarker();
  
  if ((scanner.la()->id == vs20_token::X)) {
    if (!laConsumeToken(vs20_token::X)) goto __lookahead_fail_;
    if (_la == 0) goto __lookahead_succeed_;
  } else { 
    if ((scanner.la()->id == vs20_token::Y)) {
      if (!laConsumeToken(vs20_token::Y)) goto __lookahead_fail_;
      if (_la == 0) goto __lookahead_succeed_;
    } else { 
      if ((scanner.la()->id == vs20_token::Z)) {
        if (!laConsumeToken(vs20_token::Z)) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
      } else { 
        if (!laConsumeToken(vs20_token::W)) goto __lookahead_fail_;
        if (_la == 0) goto __lookahead_succeed_;
      }
    }
  }
  goto __lookahead_succeed_;
  
__lookahead_fail_:
  _la = _laSave;
  scanner.rewindToMarker();
  return false;

__lookahead_succeed_:
  _la = _laSave;
  scanner.rewindToMarker();
  return true;
}


bool vs20::vs20_parser::__la_vertexRegister_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::V)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_temporaryRegister_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::R)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_constantFloatRegister_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::C)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_constantIntegerRegister_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::I)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_constantBooleanRegister_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::B)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_a0Register_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::A0)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_aLRegister_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::AL)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_diffuseSpecularRegister_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::O_D)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_fogRegister_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::O_FOG)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_positionRegister_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::O_POS)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_pointSizeRegister_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::O_PTS)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}


bool vs20::vs20_parser::__la_textureCoordinateRegister_ () throw (ScanException)
{
  if (!laConsumeToken(vs20_token::O_T)) goto __lookahead_fail_;
  if (_la == 0) goto __lookahead_succeed_;
  
  __lookahead_succeed_:
    return true;
    
  __lookahead_fail_:
    return false;
}





/* End of file. */
