⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rulesbase.cpp.svn-base

📁 一个巴西大学编写的2D仿真组足球机器人程序
💻 SVN-BASE
字号:
/* *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *//*! \file RulesBase.cpp<pre><b>File:</b>          RulesBase.cpp<b>Project:</b>       Robocup Soccer Simulation Team: MecaTeam<b>Authors:</b>       Orivaldo Vieira e Augusto Loureiro<b>Created:</b>       10/09/2006<b>Last Revision:</b> $ID$<b>Contents:</b>      Este arquivo cont�m a implementa��o da classe                RulesBase. A RulesBase � classe que disponibiliza a               a Base de Regras para um sistema baseado em conhecimento.<hr size=2><h2><b>Changes</b></h2><b>Date</b>             <b>Author</b>          <b>Comment</b>19/09/2006       Orivaldo Vieira      Documenta��o</pre>*/#include "RulesBase.h"#include "Lexicon.h"#include "Sintactic.h"const string RulesBase::RulesPath = "src/etc/";/*! Construtor da Base de Fatos, inicializando o indice do vetor de regras para o in�cio. */RulesBase::RulesBase(){   m_vectorIndex = 0;}/*! Este m�todo adiciona uma regra na base de regras. Estas regras s�o    organizadas num vector da biblioteca padr�o de "templates".    \param rule uma regra a ser adicionada na base de fatos. */void RulesBase::addPtrRule( Rule *p_rule ){   m_rulesVector.push_back( p_rule );}/*! Este  m�todo carrega a base de regras com regras extraidas de um  arquivo.    Esta extra��o � realizada com tecnicas de compila��o. Usando um analisador    L�xico  para verificar se todos s�mbolos lindos do arquivo fazem  parte da    gram�tica  que formaliza as regras. Um analisador sint�tico para verificar    se  todas  contru��es  de  regras est�o  gramaticamlmente  corretas. �  na    analise  sint�tica onde as regras s�o constu�das na forma objetos  "Rule"s    e adicionadas na base de regras.    \param fileName nome do arquivo que cont�m as regras. */void RulesBase::loadRulesFile( char *fileName ){      Lexicon lexicon( fileName );      lexicon.analyse();      Sintactic sintactic( lexicon.getPtrTokenList() );      sintactic.analyse( m_rulesVector );}/*! Este m�todo indexa o vetor de regras para a posi��o armazenada na    vari�vel "pos". Caso a posi��o n�o exista, estando fora da faixa    do n�mero de posi��es do vetor ent�o este retorna false.    \param pos posi��o do �ndice do vetor de regras.    \return true se o �ndice foi alterado corretamente false caso o    valor desejado da posi��o n�o exista. */bool RulesBase::setRulePosition (unsigned int pos){   if ( pos > m_rulesVector.size() )      return false;   m_vectorIndex = pos;   return true;}/*! Este m�todo indexa o vetor de regras para a o in�cio e retorna um ponteiro para a primeira regra.    \return um ponteiro para a primeira regra. */Rule* RulesBase::getPtrFirstRule (void){   m_vectorIndex = 0;   return m_rulesVector[0];}/*! Metodo get para obter um pontero para regra indexada no momento. Este m�todo incrementa o indexador em uma posi��o para que na pr�xima chamada a regra obtida seja a seguinte.     \return um ponteiro para um regra da base de regras. */Rule* RulesBase::getPtrNextRule (void){   m_vectorIndex++;   if ( m_vectorIndex > m_rulesVector.size() )      return NULL;   return m_rulesVector[m_vectorIndex -1];}void RulesBase::print(){   cerr << endl << " - - - Rules Base - - - " << endl;   vector<Rule*>::iterator itV = m_rulesVector.begin();   while( itV != m_rulesVector.end() )   {      (*itV)->print();      itV++;   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -