Tuesday, January 23, 2007

T04-LEXER-ER-JAVA

Al fin salió en Java :)

la liga para bajar el archivo java del lexer de LOGO es:

http://mipagina.chi.itesm.mx/.a00746263/Traductores/RegExpLogo.java

Saturday, January 20, 2007

T04-LEXER-ER

#include
#include
#include // Boost.Regex lib

using namespace std;

int main( ) {

std::string s;

while(true)
{

cout << "Expression to be evaluated";
cin >> s;

try
{
boost::regex re("(((F|B)\\s\\d{1,4})|(L|R)\\s((00\\d)|((0-2)\\d{1,2})|3((0-5)\\d|60))\\.)+");
if (boost::regex_match(s, re))
{
cout << s << "is not valid"<< endl;
}
}
catch (boost::regex_error& e)
{
cout << " error in REGEX" << endl;
continue;
}

}
}


Tenemos problemas al momento de compilar, pero hemos investigado y se trata de la versión de la librería, entonces pues no supimos donde bajar otra o como se utiliza la que tenemos.

Diana Fernández
Daniel Varela

Thursday, January 18, 2007

T03-LEXER-STL

La liga para bajar los archivos .cpp y .h del programa es:
http://mipagina.chi.itesm.mx/.a00738538/traductores/Lexer.zip

Utilizamos un código que hace un SplitString parecido al StringTokenizer de java, encontrado en la siguiente liga:
http://www.codeproject.com/string/stringsplit.asp

Tuvimos problemas con el split para los espacios, así que utilizamos guines bajos(_) en lugar de espacios.

Equipo:
Diana Fernández
Daniel Varela

Monday, January 15, 2007

T02-STL: Usando la librería STL de C++:

#include <iostream>
#include <list>
#include <deque>

using std::cout;
using std::cin;
using std::endl;
using std::deque;
using std::sort;

struct Deque : deque<double> {
Deque(double *i, int s) : deque<double>() {
for(int j = 0; j < s; j++)
this->push_back(*i++);
}
void print() { // Imprime lista
for(deque<double>::iterator it=this->begin(); it!=this->end(); it++)
cout << *it << " ";
cout << endl;
}

void sort(){
std::sort(this->begin(),this->end());
}

void unique(){
deque<double>::iterator s;
for(;s < this->end();){
s = std::unique(this->begin(),this->end());
this->erase(s);
}

std::unique(this->begin(),this->end());
}

void reverse(){
std::reverse(this->begin(),this->end());
}

};

int main()
{
const int si = 5;
double a[si];
a[0] = 3.1;
a[1] = 1.3;
a[2] = 2.0;
a[3] = 2.0;
a[4] = 1.3;
Deque list1 = Deque(a, si);
list1.print();
list1.sort();
list1.print();
list1.unique();
list1.print();
list1.reverse();
list1.print();
cin.ignore(); // Pausa = cin.get()
}

T02-STL: Usando la librería STL de C++:

#include <iostream>
#include <list>
#include <vector>

using std::cout;
using std::cin;
using std::endl;
using std::vector;
using std::sort;

struct Vector : vector<int> {
Vector(int *i, int s) : vector<int>() {
for(int j = 0; j < s; j++)
this->push_back(*i++);
}
void print() { // Imprime lista
for(vector<int>::iterator it=this->begin(); it!=this->end(); it++)
cout << *it;
cout << endl;
}

void sort(){
std::sort(this->begin(),this->end());
}

void unique(){
vector<int>::iterator s;
for(;s < this->end();){
s = std::unique(this->begin(),this->end());
this->erase(s);
}
}

void reverse(){
std::reverse(this->begin(),this->end());
}

};

int main()
{
const int si = 5;
int a[si];
a[0] = 3;
a[1] = 1;
a[2] = 2;
a[3] = 2;
a[4] = 4;
Vector list1 = Vector(a, si);
list1.print();
list1.sort();
list1.print();
list1.unique();
list1.print();
list1.reverse();
list1.print();
cin.ignore(); // Pausa = cin.get()
}

Friday, January 12, 2007

T01-TOOLS: C++, STL y Boost

C++:
Conocido lenguaje de alto nivel que incluye características de los de bajo nivel. Se conoce que es un lenguaje multi paradigma ya que soporta:

  • programación procedimental
  • abstracción de datos
  • orientación a objetos
  • programación genérica

Para acceder a un tuutorial de progración en C++, desde lo más básico a lo más complejo, entra en: http://www.cplusplus.com/doc/tutorial/

A continuación se muestran ligas a páginas de tutoriales que permiten entender mejor las librerias y como pueden ser utilizadas:

Boost:

STL:

La siguiente liga tiene tutoriales para C++ y para STL:C Programing

Referencias:
Deitel (2004). C++ How to Program. Prentice Hall. Fourth Edition.
http://en.wikipedia.org/wiki/C++