📄 rulesbase.cpp.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 + -