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
Tuesday, January 23, 2007
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
#include
#include
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
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()
}
#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()
}
#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:
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:
- http://softeng.polito.it/01CBI/Slides/Lezioni/stl-tutorial.pdf
- The Standard Template Library Tutorial
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++
Subscribe to:
Posts (Atom)